DML (데이터 조작 언어) 명령어+ 추가로 알아두면 좋은 select 절

2025. 5. 8. 21:03·DB

 

sql 기본+DDL+DML.txt
0.02MB

SQL 기초 - 데이터 조작 언어(DML) 사용법 📊

데이터 조작 언어(DML)는 SQL에서 테이블 내 데이터를 삽입, 수정, 삭제 및 조회하는 데 사용.

 

1. 테이블에 데이터 삽입 💾

1.1. 모든 컬럼에 모든 데이터 삽입

데이터를 삽입할 때 입력하는 컬럼의 수와 테이블의 컬럼 수가 동일하고, 데이터 순서가 테이블의 컬럼 순서와 일치하는 경우 모든 데이터를 삽입할 수 있음.

  • 테이블 구조 확인:(먼저)
    테이블 구조를 파악하려면 desc 테이블명;을 입력함. (테이블 구조를 파악하여 컬럼의 수와 컬럼의 순서를 미리 파악해놓아야 에러가 없음)
  • 삽입:
  • insert into kh_mem values (0, 'insert', 'qwer1234', '테스터', 25, now());
insert into 테이블명 values (입력데이터,입력데이터,입력데이터);
insert into kh_mem values (0, 'insert', 'qwer1234', '테스터', 25, now());

1.2. 특정 컬럼에 데이터 삽입- 지정한 컬럼의 수와 순서에 맞춰 데이터를 입력

특정 컬럼만 선택해서 데이터를 삽입하려면, 원하는 컬럼명과 데이터를 지정하여 삽입할 수 있음. 이 경우, 컬럼 순서와 관계없이 데이터를 입력할 수 있음.

  • 삽입 예시:
  • insert into kh_mem (id, pass, name, reg_date) values ('test2', 'qwer1234', '테스터2', now());
insert into 테이블명 (컬럼명,컬럼명,컬럼명) values (입력데이터,입력데이터,입력데이터);
insert into kh_mem (reg_date,name,id,pass) values (now(),'테스터2','test2','1234qwer');

1.3. SET 구문을 사용한 삽입

SET 구문을 사용하면 데이터 입력 시 컬럼명과 값을 =로 연결하여 삽입할 수 있음.
insert into values와 set의 차이점은 위에는 한번에 컬럼명 다 쓰고 입력데이터를 다 쓰는 방식이라면 set은 하나씩 1:1로 지정이 가능하다는 것. 

insert into 테이블명 set 컬럼명=입력데이터, 컬럼명=입력데이터, 컬럼명=입력데이터, 컬럼명=입력데이터;
  • 삽입 예시:
insert into kh_mem set id='test3', pass='P@ssw0rd', name='테스터3', age=30, reg_date=now();

2. 데이터 조회 🔍

데이터를 조회할 때는 SELECT 문을 사용함. 기본적인 조회부터 조건을 사용한 조회까지 다양한 방식이 가능함.

2.1. 모든 컬럼 조회

테이블의 모든 컬럼을 조회하려면 *를 사용함.

  • 모든 컬럼 조회 예시:
  • select * from 테이블명;

2.2. 특정 컬럼 조회

특정 컬럼만 조회하고 싶을 때는 컬럼명을 지정함.

  • 특정 컬럼 조회 예시:
  • select no, pass from kh_mem;

2.3. 조건을 지정하여 데이터 조회

WHERE 절을 사용하여 조건을 지정할 수 있음. 조건에 맞는 데이터만 조회됨.
select 컬럼명 from 테이블명 where 조건;

  • 조건 예시:
select * from kh_mem where no > 1;
select * from kh_mem where id='test3';

 

조건을 입력하는 방법(조건의 기본 구조) 컬럼명 연산자 인자값(조건값)
= 같다
> 왼쪽 값(컬럼명(해당 컬럼 안에 저장된 데이터))이 오른쪽 값(인자값)보다 큰 경우
< 왼쪽 값보다 오른쪽 값이 큰 경우
>= 왼쪽 값이 오른쪽 값보다 크거나 같은 경우
<= 왼쪽 값보다 오른쪽 값이 크거나 같은 경우

2.4. 여러 조건을 사용할 때

여러 조건을 결합할 때는 AND와 OR을 사용함.

  • AND: 여러 조건을 모두 만족해야 출력됨.
  • select * from kh_mem where no = 1 and age = 25;
  • OR: 하나의 조건만 만족해도 출력됨.
  • select * from kh_mem where no = 1 or no = 2;
  • 우선순위: AND가 OR보다 우선 적용되므로, OR을 먼저 적용하고 싶다면 괄호로 묶어줘야 함.
  • 1. and만 여러개
    no=1 and no=2 and no=3
    순서대로 조건 만족 여부를 판단 
    2. or 만 여러개
    no=1 or no=2 or no=3
    순서대로 조건 만족 여부를 판단
    3. and,or가 섞여있는 경우
    no=1 and no=2 or no=3
    no=1 or no=2 and no=3
    and가 우선(순서와 상관없이)

    or 연산을 먼저 우선하고 싶은 경우 (괄호 입력)
    no=1 and (no=2 or no=3)
  • select * from kh_mem where no = 1 and (no = 2 or no = 3);

 
0, 1로 구성된 데이터를 연산하기 위한 연산자 -> bit 연산자
0 = 거짓, 1 = 참
and 연산
0 and 0 = 0 -> 거짓 and 거짓 = 거짓
1 and 0 = 0 -> 참 and 거짓 = 거짓
0 and 1 = 0 -> 거짓 and 참 = 거짓
1 and 1 = 1 -> 참 and 참 = 참
and 묶인 두개의 조건이 전부 참인 경우에만 조회가 가능

or 연산
0 or 0 = 0 -> 거짓 or 거짓 = 거짓
0 or 1 = 1 -> 거짓 or 참 = 참
1 or 0 = 1 -> 참 or 거짓 = 참
1 or 1 = 1 -> 참 or 참 = 참
or 묶인 두개의 조건 중 하나라도 참이면 조회가 가능
 
 

2.5 검색을 위한 like 연산자


= 같은 경우는 컬럼의 데이터와 인자값이 완전히 동일해야만 조건을 만족
일정 부분만 같거나 비슷한 경우에도 조건을 만족시키고 싶은 경우 사용하는 연산자가 like 연산자
like 연산자 사용시 사용하는 기호 2개
1. _ -> 한자리의 모든 문자
2. % -> 여러자리(없는 것도 포함)의 모든 문자
id like 'test_'
id like 'test%'


3. 데이터 수정 ✏️

기존 데이터를 수정할 때는 UPDATE 구문을 사용함.

3.1. 전체 데이터 수정

특정 테이블의 모든 데이터를 수정할 때는 조건 없이 UPDATE 구문을 사용함.
update 테이블명 set 컬럼명=수정데이터;

  • 전체 데이터 수정 예시:
  •  
update kh_mem set age=40;
update kh_mem set pass='hello', age=40;

3.2. 조건을 지정하여 데이터 수정

조건을 지정하여 특정 데이터만 수정할 수 있음.
update 테이블명 set 컬럼명=수정데이터 where 조건;

  • 조건 예시:
  • update kh_mem set pass = 'hello', age = 40 where no = 1;
update kh_mem set pass = 'hello', age = 40 where no = 1;

4. 데이터 삭제 🗑️

DELETE 구문을 사용하여 테이블에서 데이터를 삭제할 수 있음.

4.1. 전체 데이터 삭제

조건 없이 데이터를 모두 삭제할 수 있음.
delete from 테이블명;

  • 전체 데이터 삭제 예시:
delete from kh_mem;

4.2. 조건을 지정하여 데이터 삭제

특정 조건에 맞는 데이터만 삭제할 수 있음.
delete from 테이블명 where 조건;

  • 조건 예시:
delete from kh_mem where no = 1;

5. 데이터 조회 및 조건 추가 🔎

5.1. 특정 범위의 데이터 조회

BETWEEN을 사용하면 특정 범위에 해당하는 데이터를 조회할 수 있음.

  • BETWEEN 예시:
  • select name, address, age from member where age between 20 and 29;

5.2. IN 연산자

IN 연산자를 사용하면 여러 조건을 하나로 묶을 수 있음.

  • IN 예시:
  • select * from member where no in (1, 2);

6. 데이터 자르기 (LIMIT) ✂️

특정 범위의 데이터를 출력할 때는 LIMIT을 사용할 수 있음.

6.1. 첫 번째 위치부터 자르기

  • 예시:
  • select * from member limit 3;
  • -- 첫 3개 출력

6.2. 특정 위치부터 자르기

OFFSET을 사용하면 특정 위치부터 데이터를 출력할 수 있음.

  • 예시:
  • select * from member limit 3 offset 2;
  • -- 3번째 줄부터 3개 출력

 
10번째 위치부터 3개의 데이터를 출력
select * from member limit 3 offset 9;
select * from member limit 9,3;

select * from member limit 9,3;

 


7. 데이터 정렬 🔢

데이터를 정렬하려면 ORDER BY 절을 사용함.

7.1. 오름차순 및 내림차순 정렬

  • 오름차순 정렬 예시:
  • select * from member order by age asc;
  • 내림차순 정렬 예시:
  • select * from member order by age desc;

7.2. 중복 제거

DISTINCT를 사용하면 중복 데이터를 제거할 수 있음.
중복이 많거나 특정 데이터만 저장하는 컬럼에서 중복을 제거하고 출력하고 싶은 경우 사용
+출력할 컬럼의 제약조건에 unique가 있는 경우에는 의미가 없다.

  • 중복 제거 예시:
  • select distinct sex from member;

8. 그룹화 및 집계 함수 📊

데이터를 그룹화하여 집계 함수로 분석할 수 있음.
특정 컬럼 안에 데이터를 기준으로 종류를 나눠서 따로 조건을 부여하고 싶은 경우
그룹핑 + 집계함수

8.1. 그룹화

GROUP BY 절을 사용하면 데이터를 특정 기준으로 그룹화할 수 있음.

  • 그룹화 예시:
  • 집계 -> 평균, 개수, 최대 값, 최소 값, 합계 등등
select count(*) from member group by sex;
  • 성별을 기준으로 그룹을 나눠 각 그룹당 카운트를 출력하겠다.
select * from member group by sex;
  • 성별을 기준으로 그룹을 나눠 출력하겠다.

8.2. 집계 함수

  • count(): 개수 -> count(*)
  • avg(): 평균
  • sum(): 합계
  • max(): 최대값
  • min(): 최소값

 

  • 집계 함수 예시:
select count(*), avg(age), sum(age), max(age), min(age) from member;
select count(*), avg(age), sum(age), max(age), min(age) from member;

8.3. 그룹화 후 조건 적용

HAVING을 사용하면 그룹화 후 조건을 추가할 수 있음.

  • HAVING 예시:
select sex, count(*), avg(age), sum(age), max(age), min(age) from member group by sex having count(*) > 9;
  • 개수가 9 초과 인 데이터만 출력
select sex, count(*), avg(age), sum(age), max(age), min(age) from member group by sex having sex='M';(o)
  • 테이블 안에 데이터를 성별로 그룹화 한 후 성별이 남성인 데이터만 출력
저작자표시 비영리 변경금지 (새창열림)

'DB' 카테고리의 다른 글

database engine / 데이터베이스 엔진  (0) 2025.05.11
연습문제 풀이 SQL (DDL,DML,DCL,Join,Union,서브쿼리)  (0) 2025.05.10
DCL 데이터 제어어 Data Control Language (계정정보, 계정생성, 비밀번호 변경, status, 다른 db정보 검색)  (0) 2025.05.08
Maria SQL - DDL 명령어 / 데이터베이스 목록 조회, 전체 목록 확인/ 테이블 생성, 추가,수정,삭제, 초기화  (0) 2025.05.03
DBMS, 데이터 베이스 이해, SQL 정의, 구조 -maria db설치 후 초기 설정(한글)  (0) 2025.05.02
'DB' 카테고리의 다른 글
  • database engine / 데이터베이스 엔진
  • 연습문제 풀이 SQL (DDL,DML,DCL,Join,Union,서브쿼리)
  • DCL 데이터 제어어 Data Control Language (계정정보, 계정생성, 비밀번호 변경, status, 다른 db정보 검색)
  • Maria SQL - DDL 명령어 / 데이터베이스 목록 조회, 전체 목록 확인/ 테이블 생성, 추가,수정,삭제, 초기화
햅삐root
햅삐root
happyroot 님의 블로그 입니다. IT 보안 정리💛
  • 햅삐root
    햅삐한 root
    햅삐root
  • 전체
    오늘
    어제
    • 전체보기 IT (123)
      • Linux (21)
      • Network (23)
      • packet tracer& GNS3 (10)
      • Cryptology (7)
      • WEB (16)
      • DB (16)
      • Hacking (28)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    sqlinjection
    injectionvector
    Hack
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
햅삐root
DML (데이터 조작 언어) 명령어+ 추가로 알아두면 좋은 select 절
상단으로

티스토리툴바