[SQL] DDL, DCL 코드 단순정리

김예신·2022년 10월 14일
0

시나공 정보처리기사 시험자료를 바탕으로 작성하였습니다.

데이터 정의어(DDL; Data Definition Language)

CREATE TABLE

  • 테이블을 생성할 때 정의하는 구문이다.
CREATE TABLE 테이블명(
속성명 데이터타입 [NOT NULL]
PRIMARY KEY(기본키로 설정할 속성명)
UNIQUE(대체키 속성명)
FOREIGN KEY(외래키; 다른테이블과 연결할 속성명)
REFERENCES 참조테이블(기본키_속성명)
ON DELETE 옵션
ON UPDATE 옵션
CONSTRAINT 제약조건명 CHECK(조건식);

예시) student 테이블을 만들 것이라면 이렇게 만들 수 있다.

CREATE TABLE STUDENT(
ID int NOT NULL,
NAME varchar(20)
AGE int(3)
PRIMARY KEY(ID)
);

다른 테이블을 이용해서 테이블을 정의할 수도 있다.

CREATE TABLE N새 테이블명 AS 
SELECT 속성명
FROM 기존테이블명;

CREATE VIEW

  • View는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상테이블이다.
  • 저장장치 내에 물리적으로 존재하지 않지만, 사용자에게는 있는 것처럼 간주된다.
  • CREATE문으로 정의하고 DROP으로 제거한다.
  • 데이터의 논리적 독립성을 제공한다.
CREATE VIEW 뷰이름 AS
SELECT;

ALTER TABLE

  • 테이블에 대한 정의를 변경하는 명령문이다.
# ADD: 새로운 속성(열)을 추가할 때 사용
ALTER TABLE <테이블명>
ADD <속성명> <테이터타입>;

# ALTER(my-sql) | MODIFY(oracle): 특정 속성의 정의를 변경할 때 사용
ALTER TABLE <테이블명>
ALTER | MODIFY <속성명> [SET DEFAULT '기본값'];

# DROP COLUMN: 특정 속성을 삭제할 때 사용
ALTER TABLE <테이블명>
DROP COLUMN <속성명> [CASCADE];

CASCADE 옵션을 붙이면 제거할 요소를 참조하는 다른 모든 개체를 함께 제거하게 된다.

DROP TABLE

  • 기본 테이블을 제거하는 명령문이다.
DROP TABLE <테이블명>
[CASCADE | RESTRICT];

RESTRICT 옵션은 다른 개체가 제거할 요소를 참조중일 때 제거를 취소한다.

데이터 정의어(DCL; Data Control Language)

  • 데이터 베이스 관리자가 데이터베이스 사용자에게 권한을 부여하거나 취소하기 위한 명령어이다.
  • GRANT: 권한을 부여하기 위한 명령어
  • REVOKE: 권한을 해제하기 위한 명령어

사용자 등급 지정 및 해제

GRANT <사용자등급> 
TO <사용자 ID 리스트> [IDENTIFIED BY 암호];

REVOKE <사용자등급> 
FROM <사용자 ID 리스트>;

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

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: 다른 사용자에게 권한을 부여할 수 있는 권한을 취소
  • CASCADE: 권한 취소 시 권한을 부여받았던 사용자가 다른 사용자에게 부여한 권한도 연쇄적으로 취소함

헐 임시저장한 포스트가 날아갔따...
DML까지 적어놨는데...

SELECT문의 관계 연산자는 시그마 (σ\sigma)
PROJECT -> 주어진 릴레이션에서 속성을 추출해 새로운 릴레이션을 만듦 연산자는 (π\pi)
JOIN의 연산 기호는 ▷◁
(이거 마지막으로 적어 놓고 갔는데 시험에 나왔다!)

profile
life is dancing

0개의 댓글