본문 바로가기
데이터베이스

[Database] DML(Data Manipulation Language)

by 나는 유찌 2020. 2. 22.

 

 

1. DML (Data Manipulation Language)

만들어진 테이블에 관리하기를 원하는 자료들을 입력, 수정, 삭제, 조회.

 

 

 

2. INSERT

1) 구문

INSERT INTO [테이블명]

VALUES [전체 COLUMN에 넣을 VALUE];

 

-> 모든 칼럼에 데이터를 입력하는 경우. 칼럼의 순서대로 빠짐없이 데이터가 입력되어야 한다.

 

 

INSERT INTO [테이블명] [COLUMN]

VALUES [COLUMN에 넣을 VALUE];

 

-> 테이블의 칼럼을 정의할 수 있다. 칼럼의 순서와 매치할 필요는 없으며, 정의하지 않은 칼럼은 Default로 NULL 값이 입력된다. 당연히 PK나 NOT NULL로 설정했으면 입력이 안된다.

 

 

2) 예시

INSERT INTO PLAYER

VALUES ('2002007', '박지성', 'k07', 'MF', 178, 73, 7);

 

INSERT INTO PLAYER (ID, NAME, TEAM_ID, POSITION, HEIGHT, WEIGHT, NO)

VALUES ('2002007', '박지성', 'k07', 'MF', 178, 73, 7);

 

 

2. UPDATE 

입력한 정보 중에 잘못 입력되거나 변경이 발생하여 정보를 수정해야 하는 경우에 사용한다.

 

1) 구문

UPDATE [테이블명]

SET [수정되어야 할 칼럼명] = [수정되기를 원하는 새로운 값];

 

 

2) 예시

UPDATE PLAYER

SET NO = 99;

-> PLAYER 테이블의 NO를 전부 99로 수정. 원하는 특정 값만 변경하고자 할 때는 WHERE 절을 추가하면 된다.

 

 

 

3. DELETE 

테이블의 정보가 필요 없게 되었을 경우 데이터 삭제를 수행한다. FROM은 생략 가능하다.

 

1) 구문

DELETE [FROM] [삭제를 원하는 테이블명];

 

2) 예시

DELETE FROM PLAYER;

-> PLAYER 테이블의 데이터 전부 삭제.

 

 

 

* DDL 명령어와 DML 명령어 처리 방식의 차이점

1) DDL(CREATE, ALTER, RENAME, DROP) 경우, 직접 데이터 베이스의 테이블에 영향을 미치기 때문에 DDL 명령어를 입력하는 순간 명령어에 해당하는 작업이 즉시 (AUTO COMMIT) 완료된다.

 

2) DML(INSERT, UPDATE, DELETE, SELECT) 경우, 조작하려는 테이블을 메모리 버퍼에 올려놓고 작업을 하기 때문에 명령어가 실제 테이블에 반영되기 위해서는 COMMIT 명령어를 입력하고 트랜잭션을 종료해야 한다. 

(SQL Server의 경우 DML도 AUTO COMMIT으로 처리된다.)

 

3) 테이블의 전체 데이터를 삭제하는 경우, 시스템 활용 측면에서 삭제된 데이터를 로그로 저장하는 'DELETE TABLE' 보다는 TRUNCATE TABLE을 권고한다. 단! TRUNCATE TABLE의 경우 삭제된 데이터의 로그가 없으므로 ROLLBACK이 불가능하다는 점을 알아둬야 한다.

 

 

 

4. SELECT

사용자가 입력한 데이터 조회

 

1) 구문

SELECT [ALL/DISTINCT] [칼럼명],[칼럼명]...

FROM [테이블명]

 

2) 예시

SELECT ID, NAME, TEAM_ID, POSITION

FROM PLAYER;

 

3) DISTINCT

중복결과를 없앤다.

 

4) ALIAS

일종의 별명.

 

EX)

SELECT NAME AS 선수명, POSITION AS 위치, WEIGHT AS 몸무게, HEIGHT AS 키

FROM PLAYER;

'데이터베이스' 카테고리의 다른 글

1. 데이터베이스의 개념  (0) 2020.05.31
트랜잭션(Transaction)  (0) 2020.03.28
[Database] RDBMS, NoSQL, In-memory Database  (0) 2020.03.10
[MySQL] time zone 변경  (0) 2020.02.23
[Database] DDL(Data Definition Language)  (0) 2020.02.22