<Database> SQL의 DDL, DML, DCL 정리
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 취소