DCL(Data Control Language)
- 데이터베이스 사용자에게 권한을 부여, 회수하는 언어
권한의 종류 : SELET, INSERT, UPDATE, DELETE, REFERENCES, ALTER, INDEX, ALL
GRANT : 권한 부여, REVOKE : 권한 회수
| 권한 부여 | GRANT 권한 ON 테이블 TO 유저; |
| GRANT 권한 ON 테이블 TO 유저 WITH GRANT OPTION; >> 부여받은 권한을 다른 유저에게 부여할 수 있게 됨 >> 부모의 권한이 회수될 때 자식의 권한도 회수 |
|
| GRANT 권한 ON 테이블 TO 유저 WITH ADMIN OPTION; >> 부여받은 권한을 다른 유저에게 부여할 수 있게 됨 >> 부모의 권한이 회수되어도 자식의 권한은 유지 |
|
| 권한 회수 | REVOKE 권한 ON 테이블 FROM 유저; |
DDL(Data Definition Language)
- 데이터를 보관하고 관리하기 위한 객체의 구조를 정의하기 위한 언어
CREATE : 구조 생성
| 구조 생성 | CREATE TABLE 테이블명 ( 컬럼명1 varchar2(10) primary key, 컬럼명2 number(5) default 10000, 컬럼명3 date not null ); |
* 테이블명과 컬럼명 주의사항
- 반드시 문자로 시작
- A-Z, a-z, 0-9, #, $, _ 만 사용 가능
- 다른 테이블명과 중복 불가능
- 칼럼 뒤 데이터유형 반드시 지정
* 데이터 타입
| number | 숫자형 |
| date | 날짜형 |
| varchar2 | 가변 길이 문자열 |
| char | 고정 길이 문자열 >> 할당된 길이보다 길 경우 자름 |
* 제약조건(CONSTRAINT)
| default | 기본값 지정 |
| not null | null 입력 불가 |
| primary key | 기본키 지정 >> PK는 not null이고, 테이블 내 중복 없는 unique한 값 |
| foreign key | 외래키 지정 >> 한 테이블 내 여러개 지정 가능 |
ALTER : 구조 변경, RENAME : 이름 변경
| 테이블명 변경 | ALTER TABLE 현재_테이블명 RENAME TO 새_테이블명; |
| 컬럼명 변경 | ALTER TABLE 테이블명 RENAME COLUMN 현재_컬럼명 TO 새_컬럼명; |
| 컬럼 속성 변경 | ALTER TABLE 테이블명 MODIFY ( 변경할_컬럼명 varchar(10) NOT NULL ); |
| 컬럼 추가 | ALTER TABLE 테이블명 ADD ( 추가할_컬럼명 varchar(15) ); |
| 컬럼 삭제 | ALTER TABLE 테이블명 DROP COLUMN 삭제할_컬럼명; |
| 제약 조건 추가/삭제 | ALTER TABLE 테이블명 ADD/DROP CONSTRAINT; |
DROP : 구조 삭제, TRUNCATE : 테이블 초기화
| 컬럼 삭제 | ALTER TABLE 테이블명 DROP COLUMN 삭제할_컬럼명; |
| 테이블 삭제 | DROP TABLE 삭제할_테이블명; >> 테이블의 데이터와 구조까지 모두 삭제 |
| DROP TABLE 삭제할_테이블명 CASCADE CONSTRAINT; >> 해당 테이블의 데이터를 외래키(FK)로 참조한 제약사항도 모두 삭제 >> Oracle에만 있는 옵션. SQL Server에는 존재하지 않음 >> FK 제약조건과 참조테이블 먼저 삭제하고, 해당 테이블을삭제한다. |
|
| 테이블 초기화 | TRUNCATE TABLE 테이블명 >> 테이블의 데이터만 삭제, 구조는 남음 |
TCL(Transaction Control Language)
- 트랜잭션(데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위)을 제어하기 위한 언어
COMMIT : 반영, ROLLBACK : 취소, SAVEPOINT : 위치 지정
| 위치 지정 | SAVEPOINT 세이브포인트명; |
| 취소 | ROLLBACK TO SAVEPOINT 세이브포인트명; >> SAVEPOINT가 없을 경우 가장 최신의 COMMIT 상태로 복원 |
| 반영 | COMMIT; >> DML은 자동 commit 되지 않음 >> SQL Server 기준 DDL은 자동 commit 됨 |