Posts DML(Data Manipulation Language)
Post
Cancel

DML(Data Manipulation Language)

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가 삭제된다.


참고자료 :

cloud.google.com/mysql

boostcourse.org/web326

tcpschool.com/mysql

This post is licensed under CC BY 4.0 by the author.