DML이란?
데이터베이스에서 데이터를 조작하기 위해 사용하는 명령어이며 종류는 아래와 같다.
- SELECT(검색)
- INSERT(추가)
- UPDATE(수정)
- DELETE(삭제)
SELECT
기본 형태
아래의 명령어를 통해 원하는 column에 속하는 데이터를 검색 후 출력
1
select (distinct) [column이름] (as [별칭]) from [테이블이름];
column 이름에는 쉼표(,)를 통해 여러 개를 입력할 수 있으며 *
를 입력하면 테이블의 모든 column을 출력할 수 있다.
distinct
키워드를 입력하면 중복되는 값을 한 번만 출력하며, as
키워드를 통해 column에 별칭을 지정할 수 있다.
데이터 정렬
아래와 같이 order by
구문을 이용하여 데이터를 정렬하여 출력할 수 있다.
1
select (distinct) [column이름] (as [별칭]) from [테이블이름] order by [column이름 또는 별칭] [정렬기준];
정렬기준에는 asc
(오름차순)와 desc
(내림차순)이 입력될 수 있으며 아무것도 입력하지 않으면 기본값으로 오름차순 정렬이 적용된다.
조건식을 통한 검색
아래와 같이 where
예약어와 조건식을 통해 특정 조건을 만족하는 데이터를 출력할 수 있다.
1
select (distinct) [column이름] (as [별칭]) from [테이블이름] where [조건식] order by [column이름 또는 별칭] [정렬기준];
기본적으로 조건식은 age <20
과 같이 column이름과 특정 값을 비교연산자를 통해 비교하는 형식이다.
[column이름] in(값1, 값2)
을 조건식의 자리에 넣으면 값1과 값2에 해당하는 값을 둘 다 출력한다.
[column이름] like _A%
와 같이 와일드카드와 특정문자가 결합된 형태를 like
예약어를 이용하여 조건식에 추가하면 특정 문자를 포함하는 데이터를 출력할 수 있다. 이 때 _
는 한 문자에 대한 와일드카드이며, %
는 여러 문자에 대한 와일드카드이다.
함수의 사용
문자열 합성(concat)
1 2 3 4 5 6
select concat(column1, 결합시 넣을 구분자, column2) from [테이블이름]; +-----------------+ | column1-column2 | +-----------------+ | data1-data2 | +-----------------+
문자열 대문자 변환(upper, ucase)
1 2 3 4 5 6
select upper('SEoul'), ucase('seOUL'); +-----------------+-----------------+ | UPPER('SEoul') | UCASE('seOUL') | +-----------------+-----------------+ | SEOUL | SEOUL | +-----------------+-----------------+
문자열 소문자 변환(lower, lcase)
1 2 3 4 5 6
select lower('SEoul'), lcase('seOUL'); +-----------------+-----------------+ | LOWER('SEoul') | LCASE('seOUL') | +-----------------+-----------------+ | seoul | seoul | +-----------------+-----------------+
문자열 추출(subString)
1 2 3 4 5 6
select substring('Happy Day',3,2); +-----------------+-----------------+ | SUBSTRING('Happy Day',3,2) | +-----------------+-----------------+ | pp | +-----------------+-----------------+
문자열 공백 채우기(lpad, rpad)
1 2 3 4 5 6
select lpad('hi',5,'?'),rpad('joe',7,'*'); +------------------+-------------------+ | LPAD('hi',5,'?') | RPAD('joe',7,'*') | +------------------+-------------------+ | ???hi | joe**** | +------------------+-------------------+
이외에도 출력값을 조작하기 위한 다양한 함수들이 존재한다.
데이터 형변환
아래와 같이
cast
예약어를 통해 해당 column에 있는 데이터의 자료형을 변환하여 출력할 수 있다.1
select cast([column이름] as [type]) from [테이블이름];
아래와 같이 문자열 결합함수인 concat
을 사용하여 두 개의 column을 합성하여 출력할 수 있다.
INSERT
기본 형태
아래의 명령어로 테이블에 저장할 값을 추가할 수 있으며 각 column별로 저장될 데이터를 각각 입력하여 저장한다.
1
2
3
4
5
6
insert into 테이블이름(column1, column2) values (value1, 'value2');
+------------+------------+
| column1 | column2 |
+------------+------------+
| value1 | value2 |
+------------+------------+
UPDATE
기본 형태
아래의 명령어를 통해 현재 저장된 값을 변경할 수 있다.
1
2
update [테이블이름] set [column이름] = [value], ... where [조건식]
ex) update ROLE set description = 'CTO' where role_id = 200;
이 때 where
를 통해 조건을 입력해주지 않으면 입력된 column에 해당하는 값들이 모두 변경된다.
DELETE
기본 형태
아래의 명령어를 통해 현재 저장된 값을 삭제할 수 있다.
1
2
delete from [테이블이름] where [조건식]
ex) delete from ROLE where role_id = 200;
이 때 명령을 실행한 결과로 조건식에 해당하는 데이터의 row를 통째로 삭제하며 조건식이 없을 경우 테이블의 모든 row가 삭제된다.