69. [SQL]_(08) DDL (Data Definition Language) CREATE

hyunsoda·2024년 3월 13일

DB

목록 보기
9/11
post-thumbnail

DDL (Data Definition Language)

  • 데이터 정의 언어로 객체(OBJECT)를 만들고(CREATE), 수정하고(ALTER), 삭제(DROP)하는 구문을 말함
  • 데이터의 전체 구조를 정의하는 언어로 주로 DB관리자, 설계자가 사용함.

    오라클 객체 종류
    테이블(TABLE), 뷰(VIEW), 시퀀스(SEQUENCE), 인덱스(INDEX), 패키지(PACKAGE),
    프로시저(PROCEDUAL), 함수(FUNCTION), 트리거(TRIGGER), 동의어(SYNONYM), 사용자(USER)

오라클의 데이터형

CREATE

  • 테이블이나 인덱스, 뷰 등 데이터베이스 객체를 생성하는 구문
  • 테이블로 생성된 객체는 DROP구문을 통해 제거할 수 있음

표현식

CREATE TABLE 테이블명 (
컬럼명 자료형(크기),
컬럼명 자료형(크기),
컬럼명 자료형(크기),
...
);

컬럼에 주석 달기

COMMENT ON COLUMN 테이블.컬럼명 IS '주석내용'

제약 조건 (CONSTRAINTS)

  • 사용자가 원하는 조건의 데이터만 유지하기 위해서 특정 컬럼에 설정하는 제약
  • 데이터 무결성 보장을 목적으로 함
  • 입력 데이터에 문자가 없는지 자동으로 검사하는 목적
  • 데이터의 수정/삭제 가능 여부 검사등을 목적으로 함.
    ➡️ 제약조건을 위배하는 DML 구문은 수행할 수 없다.

데이터 무결성 : 데이터가 정확하고 무결한 상태
➡️ 중복데이터 X

제약 조건 종류
PRIMARY KEY, NOT NULL, UNIQUE, CHECK, FOREIGN KEY

NOT NULL

  • 해당 컬럼에 반드시 값이 기록되어야 하는 경우 사용
  • 특정 컬럼에 값을 저장하거나 수정할 때 NULL 값을 허용하지 않도록 컬럼 레벨에서 제한

UNIQUE

  • 컬럼 입력 값에 대해 중복을 제한하는 제약조건
  • 컬럼 레벨과 테이블 레벨에 설정 가능
  • 단, UNIQUE 제약조건이 설정된 컬럼에 NULL값은 중복 삽입 가능
  • 제약조건 지정 방법
    1) 컬럼 레벨 : [CONSTRAINT 제약조건명] 제약조건
    2) 테이블 레벨 : [CONSTRAINT 제약조건명] 제약조건(컬럼명)

UNIQUE 복합키

  • 두 개 이상의 컬럼을 묶어서 하나의 UNIQUE 제약조건을 설정함
    복합키 지정은 테이블 레벨만 가능하다!
    복합키는 지정된 모든 컬럼의 값이 같을 때 위배된다!

PRIMARY KEY

  • 테이블에서 한 행의 정보를 구분하기 위한 고유 식별자(Identifier)역할

  • NOT NULL의 의미와 UNIQUE의 의미를 둘 다 가지고 있으며 한 테이블 당 하나만 설정 가능

  • 컬럼 레벨과 테이블 레벨 둘 다 지정 가능

  • NOT NULL + UNIQUE 제약조건의 의미 -> 중복되지 않는 값이 필수로 존재해야함.

  • 한 개 컬럼에 설정할 수 있고, 여러 개의 컬럼을 묶어서 설정할 수 있음.

PRIMARY KEY 복합키 (테이블 레벨만 가능)

CONSTRAINT PK_USERNO_USERID PRIMARY KEY(USER_NO, USER_ID)
➡️ USER_NO와 USER_ID 중 하나만 겹치는 경우 가능 o
➡️ USER_NO와 USER_ID 둘 다 겹치는 경우 불가능 X

FOREIGN KEY (외래키/외부키) 제약조건

  • 참조(REFERENCES)된 다른 테이블의 컬럼이 제공하는 값만 사용할 수 있음
  • FOREIGN KEY 제약 조건에 의해서 테이블간의 관계가 형성됨
  • 제공되는 값 외에는 NULL을 사용할 수 있음.

컬럼 레벨일 경우
컬럼명 자료형(크기) [CONSTRAINT 이름] REFERENCES 참조할 테이블명 [(참조할 컬럼)][삭제룰]

테이블 레벨일 경우
[CONSTRAINT 이름] FOREIGN KEY (적용할 컬럼명) REFERENCES 참조할 테이블명 [(참조할 컬럼)][삭제룰]

참조될 수 있는 컬럼은 PRIMARY KEY 컬럼과, UNIQUE 지정된 컬럼만 외래키로 사용할 수 있음.
참조할 테이블의 참조할 컬럼명이 생략되면, PRIMARY KEY로 설정된 컬럼이 자동 참조할 컬럼이 됨.

FOREIGN KEY 삭제 옵션

  • 부모 테이블의 데이터 삭제 시 자식 테이블의 데이터를 어떤 식으로 처리할지에 대한 내용을 설정할 수 있다.

1) ON DELETE RESTRICTED

  • ON DELETE RESTRICTED (삭제 제한)로 기본 지정되어 있음
  • FOREIGN KEY로 지정된 컬럼에서 사용되고 있는 값일 경우
    제공하는 컬럼의 값은 삭제하지 못함

2) ON DELETE SET NULL

  • 부모키 삭제 시 자식 키를 NULL로 변경하는 옵션

3) ON DELETE CASCADE

  • 부모키 삭제시 자식키도 함께 삭제됨
  • 부모키 삭제시 값을 사용하는 자식 테이블의 컬럼에 해당하는 행이 삭제됨

CHECK

  • 컬럼에 기록되는 값에 조건 설정을 할 수 있음
    CHECK (컬럼명 비교연산자 비교값)

0개의 댓글