본문 바로가기

데이터베이스/DB

[DB] SQL이란? + DDL, DML, DCL, TCL 이란?

SQL(Structured Query Language) : 관계형 데이터베이스에 대하여 데이터의 구조를 정의, 데이터 조작, 제어 등을 할 수 있게 해주는 절차형 언어 (Schema, Domain, Table, View, Index에 적용)

*SQL은 ANSI/ISO 표준을 따르기 때문에 데이터베이스 관리 시스템이 변경되어도 그대로 사용 가능하다.

 

SQL은 크게 DDL, DML, DCL, TCL 4가지 종류로 나눌 수 있다.

 

1. DDL(Data Definition Language) : 데이터 구조를 정의하는 언어

- 데이터의 구조에 대한 생성, 삭제, 변경, 이름 변경

- Create, Drop, Truncate(모든 행 삭제), Alter, Rename, Comment

- Oracle 10g 이전 버전과 MySQL은 DDL에 대한 트랜잭션을 지원하지 않는다.(Rollback 과 Commit 불가)

 

Ex. ALTER

1) ALTER TABLE ACCOUNT ADD(CUS_NM VARCHAR(20) NULL);

 

2) ALTER TABLE ACCOUNT MODIFY(CUS_NM VARCHAR(10) DEFAULT 'LEE' NOT NULL);

// NULL값이 없는 경우에만 NOT NULL옵션 가능.

// Default 값 처리는 변경 작업 이후 발생하는 행 삽입시부터 영향을 미치게 됨.

 

3) ALTER TABLE DROP COLUMN CUS_NM;

 

4) ALTER TABLE ACCOUNT RENAME COLUMN CUS_NM TO CUSNM;

 

5) ALTER TABLE ACCOUNT ADD CONSTRAINT ACC_PK FOREIGN KEY(CUS_NM) REFERENCES CUST(CUS_NM);

//외래키 제약 조건 추가

//ACCOUNT 테이블의 CUS_NM 칼럼이 CUST 테이블의 CUS_NM을 참조하는 조건

* FOREIGN KEY 제약조건을 위와 같이 추가하면 ACCOUNT 테이블의 CUS_NM 컬럼이 CUST 테이블의 CUS_NM 컬럼을 참조하게 된다.

참조 무결성 옵션에 따라서 만약 CUST 테이블이나 CUST 테이블의 데이터를 삭제하려 할 때, 외부(ACCOUNT 테이블)에서 참조되고 있기 때문에 삭제가 불가능하게 제약하게 된다.

즉, 외부키(FK)를 설정함으로써 실수에 의한 테이블 삭제나 필요한 데이터의 의도치 않은 삭제와 같은 불상사를 방지하는 효과를 볼 수 있다.

 

6) ALTER TABLE ACCOUNT DROP CONSTRAINT ACC_PK;

 

2. DML(Data Manipulation Language) : 데이터 조작을 위한 언어

- 데이터를 조회, 입력, 수정, 삭제한다.

- Select, Insert, Update, Delete, Merge

 

3. DCL(Data Control Language) : 데이터 제어를 위한 언어

- 데이터 베이스 접근 권한을 주거나 회수하는 명령어

- Grant, Revoke

 

4. TCL(Transaction Control Language) : 트랜잭션 제어를 위한 언어

- Commit, Rollback, Savepoint

 

* 트랜잭션(Transaction) : 데이터베이스 작업의 단위(일괄 Rollback과 Commit이 가능한 작업 단위)

* 트랜잭션의 특징(ACID)

1) 원자성(Atomicity) : 트랜잭션이 데이터베이스에 전부 반영되던가 아니면 전혀 반영되지 않는다.(ALL OR NOTHING)

2) 일관성(Consistency) : 트랜잭션 실행 후에도 작업 처리 결과가 항상 일관성을 유지해야 한다.

3) 고립성(Isolation) : 어떤 트랜잭션도 다른 트랜잭션의 연산에 끼어들 수 없다.

4) 연속성(Durability) : 트랜잭션 실행이 성공적으로 완료되면 그 결과는 영구적으로 반영되어야 한다.

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

[DB] 데이터베이스(Database)의 종류  (0) 2019.05.24