포스트

SQLD: DDL, TCL

DDL

DDL은 Data Definition Language의 약자이다. 즉, 데이터 정의를 하는 언어라는 말이며, 테이블이나 이런 객체를 생성, 처리하는 언어이다.

테이블과 같은 객체르 생성/수정/삭제를 할 수 있다.

  • CREATE
  • ALTER
  • DROP
  • RENAME
  • TRUNCATE

CREATE

새로운 객체를 생성할 때 사용하는 명령어이다. 여기서 객체라 함은 테이블, 사용자 계정, 시퀀스, 뷰 등을 의미한다.

테이블 생성 전에 필요한 자료형:

  • VARCHAR2(n)
  • NUMBER(n, m)
  • DATE

이외에도 다양한 자료형이 있지만, 이 세 개로 오라클 데이터베이스를 사용하는데에 지장이 없다.

VARCHAR2는 문자형 값을 n바이트까지 입력받을 수 있는 가변형 문자열이다.

예: varchar2(10)인 컬럼에 ‘abcd’를 입력한 경우에 알아서 4 바이트까지만 공간을 이용한다.

여담으로, CHAR(n)은 문자형 값을 n바이트까지 입력받을 수 있는 고정형 문자열이다.

NUMBER는 숫자형 값을 n자리만큼 입력받고, m자리만큼 소수를 입력받는다.

실수와 정수 모두 표현이 가능하며, n와 m은 생략 가능하다. (보통은 단순하게 NUMBER로 사용한다)

DATE는 날짜형 값을 입력받는다.

테이블 생성 문법:

1
2
3
4
5
6
CREATE TABLE QUIZ_TABLE (
    Q_ID NUMBER(3,0) NOT NULL, -- 컬럼명 자료형 [DEFAULT] [NULL여부] 
    Q_CONTENT VARCHAR2(200) NOT NULL,
    Q_ANSWER VARCHAR2(100),
    REG_DATE DATE DEFAULT SYSDATE
);

제약조건

PRIMARY KEY(PK)

  • NOT NULL + UNIQUE
  • 식별자 규칙을 물리적 모델링 한 것으로, NULL값 입력 불가, 중복 불가
    1
    2
    
    ALTER TABLE QUIZ_TABLE -- 테이블을 변경  
    ADD CONSTRAINT PK_QUIZ_TABLE PRIMARY KEY(Q_ID); -- 제약조건 추가, Q_ID를 PK로 설정  
    

UNIQUE KEY(UK)

  • UNIQUE
  • NULL값은 입력할 수 있게 하며, 중복 불가
    1
    2
    
    ALTER TABLE QUIZ_TABLE 
    ADD CONSTRAINT UK_QUIZ_TABLE UNIQUE(Q_CONTENT); 
    

NOT NULL

  • NULL 값이 안들어오게 한다

CHECK

  • 특정 컬럼에 데이터를 입력할 때, 지정한 데이터만 입력하도록 설정
  • 입력받는 범위를 강하게 설정
    1
    2
    
    ALTER TABLE TB_CUST -- 테이블을 변경  
    ADD CONSTRAINT CK_DEL_YN CHECK(DEL_YN IN ('Y', 'N')); 
    

FOREIGN KEY(FK)

  • 테이블끼리 연결되어 있는 관계를 물리적 모델링한 것
  • FK를 설정하면 무결성을 지원해준다
    1
    2
    
    ALTER TABLE TB_CUST_BADGE-- 테이블을 변경 : 키를 빌려가는 입장에서 변경   
    ADD CONSTRAINT FK_CUST_BADGE_1 FOREIGN KEY(CUST_ID) REFERENCES TB_CUST(CUST_ID); 
    

ON DELETE CASCADE - 참조하는 CUST_ID가 삭제되면 함께 삭제하겠다는 의미
ON DELETE RESTRICT - 부모 테이블의 자료를 삭제하려하면 막는 문법

DROP CONSTRAINT - 제약조건 삭제

ALTER

  • ALTER TABLE ADD 컬럼명 : 컬럼 추가
  • ALTER TABLE DROP COLUMN 컬럼명 : 컬럼 삭제
  • ALTER TABLE MODIFY 컬럼명 : 컬럼 수정
  • ALTER TBALE RENAME 컬럼명 TO 컬럼명2: 컬럼명 이름 변경

삭제

  • DROP TABLE : 테이블 영구 삭제
  • DROP TABLE 테이블 CASCADE CONSTRAINT : 연결된 관계선(FK)도 함께 제거

CASCADE

  • TRUNCATE : 테이블의 데이터 삭제

DELETE/DROP/TRUNCATE 차이

DIFF

DDL은 자동 커밋이 되기 때문에 롤백이 불가능하다.

 DELETETRUNCATEDROP
문법DMLDDLDDL
롤백 가능 여부OXX
테이블 삭제 여부XXO

DCL

DCL은 Data Control Language의 약자이다. 즉, 데이터를 제어하는 언어이다.

사용자에게 자원에 대한 권한을 줄 때 사용되는 언어이다.

  • GRANT
  • REVOKE

GRANT
권한을 부여하는 명령어
GRANT 권한 [ON 대상객체] TO 계정 [WITH GRANT OPTION]

예: GRANT SELECT ON USER_B.TAB1 TO USER_A;

WITH GRANT OPTION은 권한을 받을 때, 또 다른 사람에게 이 권한을 공유할 수 있게 하는 옵션이다.

REVOKE
권한을 회수하는 문법

REVOKE 권한 [ON 대상객체] FROM 계정

예: REVOKE SELECT ON USER_B.TAB1 FROM USER_A;

예제: 다음과 같이 권한이 부여되고 회수되었을 때, 어떤 권한이 남는지 명시해주세요.

예제

USER_B : USER_C : UPDATE

  • CASCADE : GRANT OPTION으로 추가로 준 권한고 연쇄적으로 회수한다.

ROLE

여러 권한을 한번에 부여할 수 있도록 묶어놓은 개념이다. 주로 비슷한 유형의 권한들을 묶어 한 번에 부여한다.


이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.