작성일자 : 2023-07-01
수정일자 : 2023-07-08
Ver : 0.1.2
수정일자 : 2023-07-08
Ver : 0.1.2
DML(Data Manipulation Language)
: 데이터베이스의 내부 데이터를 관리하기 위한 언어이다. 데이터를 조회, 추가, 변경, 삭제 등의 작업을 수행하기 위해 사용된다.
특징
- DDL과 달리 DML은 적는 즉시 반영(Auto Commit)이 되지 않는다. 다시 말해, DML에 의한 데이터 변동은 영구적인 변경이 아니기 때문에 ROLLBACK 으로 다시 되돌릴 수 있다.
- 또한, DML은 Target 테이블을 메모리 버퍼 위에 올려두고 변경을 수행하기 때문에, 실시간으로 테이블에 반영되지 않는다. Commit 명령어를 통해 Transaction을 종료해야 해당 변경 사항이 테이블에 반영된다.
쿼리 수행 순서
FROM ➡️ WHERE ➡️ GROUP BY ➡️ HAVING ➡️ SELECT ➡️ ORDER BY
1) FROM
FROM절에 명시된 테이블이 실제로 존재하는 테이블인지 확인한다. 그리고 SELECT 권한이 있는지도 체크한다. 만약 권한이 없는데 명령을 요청한 경우 semantic error가 발생한다.
2) WHERE
조건에 해당하는 ROW를 검색한다.
3) GROUP BY
가져온 Row들을 어떤 방식으로 GROUB BY(압축)할 것인지 체크한다.
💡SELECT절보다 먼저 실행되기 때문에 SELECT절에서 지정한 Alias를 사용할 수 없다.
4) HAVING
GROUP BY 한 Row 중에 버려야할 데이터들이 있는지 체크한다.
5) SELECT
가져온 Row들 중에 어떤 컬럼들을 출력해야 할지를 체크한다.
💡 일단 Row를 가져오고 난 다음에 SELECT절을 체크하기 때문에 SELECT * FROM 한 것과 컬럼 1개만 SELECT 하는 것과 I/O 비용은 사실상 같다.
6) ORDER BY
SELECT절보다 나중에 실행되기 때문에 SELECT 절에서 지정한 Alias를 사용할 수 있다.