728x90
SQL의 DDL, DML, DCL, TCL
서론
- SQL(Structured Query Language)란 구조적 질의 언어라는 의미로 질의 언어를 통해 데이터베이스를 제어, 관리 할 수 있다.
- SQL은 DDL, DML, DCL로 나눌 수 있습니다.
- 각 언어의 특징을 살펴보도록 하겠습니다.
- 해당 모든 테스트는 MySQL 8.0.17 환경에서 진행합니다.
DDL(Data Definition Language) - 데이터 정의 언어
- 데이터베이스를 정의하는 언어로 데이터베이스를 생성, 수정, 삭제 등의 역할을 하는 언어
CREATE
데이터베이스, 테이블을 만드는 역할
데이터베이스 생성
CREATE database test
테이블 생성
CREATE table user ( user_id int not null, name char(16) not null, email char(16) not null, primary key(user_id) );
ALTER
테이블을 수정하는 역할
테이블의 컬럼을 추가하는 SQL
ALTER TABLE user ADD age int;
DROP
데이터베이스, 테이블을 삭제하는 역할
테이블 삭제하는 SQL
DROP TABLE user;
TRUNCATE
- 테이블을 초기화하는 역할
DML(Data Manipulation Language) - 데이터 조작 언어
- 정의된 데이터베이스에 입력된 레코드를 삽입,조회,수정,삭제를 하는 언어
SELECT
레코드를 조회하는 역할
레코드 전체 조회 SQL
SELECT * FROM user
INSERT
레코드를 삽입하는 역할
한개의 레코드를 삽입하는 SQL
INSERT INTO user(user_id, name, email) VALUES (1, 'rutgo', 'ksy90101@gmail.com');
UPDATE
레코드를 수정하는 역할
email을 변경하는 SQL
UPDATE user SET email='ksy90101@naver.com' WHERE user_id = 1;
DELETE
레코드를 삭제하는 역할
DELETE FROM user WHERE user_id = 1;
DCL(Data Control Language) - 데이터 제어 언어
- 데이터베이스에 접근하거나 객체에 권한을 주는 역할을 하는 언어
GRANT
- 데이터베이스 사용자에게 권한을 주는 역할
REVOKE
- 데이터베이스 사용자에게 권한을 박탈하는 역할
COMMIT
- 트랜잭션의 작업이 정상적이라면 반영하는 역할
ROLLBACK
- 트랜잭션 작업이 비정상적이라면 다시 되돌리는 역할
SET TRANSACTION
- 트랜잭션 모드 설정하는 역할
- 예를들면 트랜잭션 격리 수준등을 설정한다
BEGIN
- 트랜잭션 시삭
SAVEPOINT
- 저장 지점을 설정하는 것으로 임시 저장이라고 생각하면 좋을거 같습니다.
LOCK
- 데이터베이스의 리소스 접근 제한을 하기 위한 명령어
TCL(Transaction Control Language)
- DCL에서 COMMIT과 ROLLBACK, SAVEPONT을 지칭한다.
- 즉, 트랜잭션을 제어하는 언어이다.
결론
- DDL을 통해 데이터베이스, 테이블을 생성,변경,제거를 하고
- DML을 통해 레코드를 생성,변경,조회,제거를 하고
- DCL을 통해 데이터베이스의 접근 권한이나 작업 결과를 반영, 리셋을 진행한다.
728x90
728x90
'Backend > DataBase' 카테고리의 다른 글
[PostgreSQL] 데이터베이스의 모든 FK를 확인하는 방법 (0) | 2024.04.07 |
---|---|
Docker를 이용해 MySQL 연결해보기. (0) | 2023.04.30 |
🤔 CASE WHEN ~ THEN ~ ELSE END (0) | 2021.01.11 |
ORACLE, MYSQL 날짜에서 각 값들을 추출하기 🧐 (0) | 2021.01.07 |
Transaction의 성질 - ACID (0) | 2020.12.19 |