Database

<Database> SQL의 DDL, DML, DCL 정리

춘햄 2021. 4. 5. 21:18

1. DDL(Data Definition Language): 데이터 정의를 위한 질의어

 

 1) CREATE: SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의함

 

   - CREATE SCHEMA: 스키마는 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것으로, 데이터 객체, 속성, 관계 및 데이터 조작 시 데이터들이 갖는 제약 조건 등을 정의한다.

 

 ▷ CREATE SCHEMA 대학교 AUTHORIZATION choonham;

 ▶ 사용자 ID가 choonham인 스키마 '대학교' 정의

 

   - CREATE DOMAIN: 도메인은 하나의 속성이 취할 수 있는 동일한 자료형의 원자 값들의 집합이다.

 

 ▷ CREATE DOMAIN GENDER CHAR(1) [DEFAULT '남'] [CONSTRAINT VALID-GENDER CHECK(VALUE IN '남', '여')];

 ▶ GENDER 도메인 정의, 기본 값은 '남' 이며 값에는 '남' 과 '여' 만 들어갈 수 있다. ( [ ] = 생략 가능 )

 

   - CREATE TABLE:

 

 ▷ CREATE TABLE 학생 (

NAME VARCHAR2(10) NOT NULL,  ▶이름은 NULL값을 가질 수 없다.

NUM CHAR(8),

MAJOR NUMBER(5),

PRIMARY KEY(NUM),   ▶기본키는 학번

FOREIGN KEY(MAJOR) REFERENCES 학과(NUM)  ▶외래키는 학과 테이블의 num을 참조

ON DELETE SET NULL  ▶학과 테이블의 튜플이 삭제되면 관련된 모든 튜플의 학번의 값을 NULL로, 

ON UPDATE CASCADE,  ▶학과 테이블의 튜블이 변경되면 관련 튜플의 값도 동일한 값으로 변경

CONSTRAINT 학과제약 CHECK(NUM > 2)  ▶NUM > 2의 조건을 거는 "학과제약" 제약조건 

);

  - CREATE VIEW: 가상의 테이블 VIEW 생성

 

 ▷ CREATE VIEW 안산 고객(name, phone) AS SELECT name, phone FROM 고객 WHERE address = '안산시';

 

  - CREATE INDEX: 정렬, 검색을 위한 인덱스 정의

 

▷ CREATE [UNIQUE] INDEX 고객번호_idx ON 고객(NUM DESC);

▶ UNIQUE: 생략 -> 중복 값 허용, 사용 -> 중복 값 x

▶ 정렬 여부: ASC -> 오름차순, DESC -> 내림차순, 생략 -> 오름차순

 

 2) DROP: CREATE할 수 있는 모든  항목들을 삭제 가능한 명령문

 

▷ DROP SCHEMA 스키마명 [CASCADE | RESTRICT]

▷ DROP DOMAIN 도메인명 [CASCADE | RESTRICT]

▷ DROP TABLE 테이블명 [CASCADE | RESTRICT]

▷ DROP VIEW 뷰명 [CASCADE | RESTRICT]

▷ DROP INDEX  인덱스명 [CASCADE | RESTRICT]

▷ DROP CONSTRAINT 제약조건명

 

▶ CASCADE: 제거할 요소를 참조하는 다른 모든 개체를 함께 제거

▶ RESTRICT: 다른 개체가 제거할 요소를 참조 중일 때는 제거를 취소

 

 3) ALTER: 테이블에 대한 정의를 변경하는 명령문

 

▷ ALTER TABLE 테이블명 ADD 속성명 자료형;

▷ ALTER TABLE 테이블명 ALTER 속성명;

▷ ALTER TABLE 테이블명 DROP COLUMN [CASCADE];

 

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

 

 1) SELECT: 데이터 조회

 SELECT 문은 실무에서 가장 많이 사용되며, 그만큼 여러 방향으로 응용될 수 있는 가장 중요한 질의어 중 하나이다. SELECT는 다음 포스팅에서 따로 다루도록 하겠다.

 

 2) INSERT: 데이터 입력

 

 -> INSERT INTO 테이블명 VALUES (데이터, ...);

 

 3) UPDATE: 데이터 수정

 

 -> UPDATE 테이블명 SET 속성명 = 변경 데이터 [WHEHE 조건];

 

 4) DELETE: 데이터 삭제

 

 -> DELETE FROM 테이블명 [WHERE 조건]

 

3. DCL(Data Control Language): 데이터의 보안, 무결성, 회복, 병행 제어 등을 정의하는 질의어

 

 1) GRANT / REVOKE: 권한 부여 및 취소

 

▷ 사용자 등급 지정 및 해제:

 

 -> GRANT(REVOKE) RESOURCE TO(FROM) CHOONHAM;

▶ 사용자 등급: DBA = 관리자, RESOURCE = DB & TABLE 생성 가능, CONNECT = 단순 사용자

 

▷테이블 및 속성에 대한 권한 부여 및 취소:

 

 -> GRANT 권한_리스트 ON 개체 TO 사용자 [WITH GRANT OPTION];

 -> REVOKE [GRANT OPTION FOR] 권한_리스트 ON 개체 FROM [CASCADE];

 

▶ 권한 종류: ALL, SELECT, INSERT, DELETE, UPDATE, ALTER 등

▶  WITH GRANT OPTION: 부여받은 권한을 다른 사용자에게 부여할 수 있는 권한 부여

▶ GRANT OPTION FOR: WITH GRANT OPTION 취소

▶ CASCADE: 권한 취소 시 권한을 부여받은 사용자가 다른 사람에게 부여한 권한도 연쇄적으로 취소함

 

 2) COMMIT: 트랜잭션을 수행한 내용을 반영

 

 3) ROLLBACK:  변경되었으나 아직 COMMIT 되지 않은 모든 내용을 취소

 

 4) SAVEPOINT: 트랜잭션 내에 ROLLBACK 할 위치인 저장점을 지정하는 명령어이다.

      -> SAVEPOINT s1;