Part 9. DDL - CREATE

Hyunsu·2023년 3월 15일
0

국비 교육

목록 보기
34/36
post-thumbnail

📝 목차

  1. 데이터 딕셔너리
  2. CREATE
  3. 제약 조건
  4. PRIMARY KEY
  5. FOREIGN KEY
  6. NOT NULL
  7. UNIQUE
  8. CHECK

DDL 이란 데이터 정의 언어로 객체를 CREATE 또는 ALTER 또는 DROP 한다.
데이터의 전체 구조를 정의하는 언어로 주로 DB 관리자나 설계자가 사용한다.

1. 데이터 딕셔너리

사용자가 테이블을 생성하거나 사용자를 변경하는 등의 작업을 할 때 데이터베이스 서버에 의해 자동으로 갱신되는 테이블


2. CREATE

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

-- 1) 테이블 생성하기
CREATE TABLE MEMBER (
    MEMBER_ID VARCHAR2(20),
	MEMBER_PWD VARCHAR2(20),
	MEMBER_NAME VARCHAR2(15), -- 한글 2글자에서 5글자 (3BYTE)
	MEMBER_SSN CHAR(14), -- 항상 14글자
	ENROLL_DATE DATE DEFAULT SYSDATE
);

-- 2) 컬럼에 주석달기
COMMENT ON COLUMN MEMBER.MEMBER_ID IS '회원 아이디';

테이블 생성 시 주의사항은 주민등록번호나 전화번호와 같은 숫자로만 이루어진 데이터를 NUMBER 타입으로 지정할 경우 값 제일 앞 0 을 유지하지 못한다. 따라서 CHAR 또는 VARCHAR2 타입으로 컬럼 타입을 지정한다.

📌 자료형

데이터베이스는 char 개념이 없고 string 개념만 있다.
또한 한글과 한자는 3 byte 이며 영어나 숫자나 특수문자는 1 byte 이다.

  • NUMBER : 숫자형
  • CHAR : 고정길이 문자형 = 2000 BYTE
  • VARCHAR2 : 가변길이 문자형 = 4000 BYTE
  • DATE : 날짜 타입
  • BLOB : 대용량 이진 데이터 = 4 GB
  • CLOB : 대용량 문자 데이터 = 4 GB

3. 제약 조건

사용자가 원하는 조건의 데이터만 유지하기 위해서 특정 컬럼에 설정하는 제약이며 데이터 무결성 보장을 목적으로 한다. 즉 중복과 NULL 값이 아니어야한다.

✍️ 제약 조건은 반드시 알아둬야 한다.
중요도 : PRIMARY KEY - FOREIGN KEY - NOT NULL - UNIQUE - CHECK


4. PRIMARY KEY

테이블에서 한 행의 정보를 찾기위해 사용할 컬럼을 의미하며 테이블에 대한 식별자 역할을 한다. NOT NULL 및 UNIQUE 의미를 가지며 한 테이블당 한 개만 설정할 수 있다.

USER_NO NUMBER PRIMARY KEY -- 컬럼 레벨 제약조건 (이름 미지정)
USER_NO NUMBER CONSTRAINT USER_NO_PK PRIMARY KEY -- 컬럼 레벨 제약조건 (이름 지정)

, PRIMARY KEY(USER_NO); -- 테이블 레벨 제약조건 (이름 미지정)
, CONSTRAINT USER_NO_PK PRIMARY KEY(USER_NO) -- 테이블 레벨 제약조건 (이름 지정)

5. FOREIGN KEY

참조된 다른 테이블의 컬럼이 제공하는 값만 사용할 수 있다. 제공되는 값 외에는 NULL 을 사용할 수 있다.

-- 컬럼 레벨 제약조건
GRADE_CODE NUMBER CONSTRAINT GRADE_CODE_FK1 REFERENCES USER_GRADE(GRADE_CODE)

-- 테이블 레벨 제약조건
, CONSTRAINT GRADE_CODE_FK2 FOREIGN KEY(GRADE_CODE) REFERENCES USER_GRADE2(GRADE_CODE)

외래키는 FOREIGN KEY 삭제 옵션이 존재하는데 부모 테이블의 데이터 삭제 시 자식 테이블의 데이터를 어떻게 설정할 것인지 지정할 수 있다. 반드시 외워두도록 한다.

  • ON DELETE RESTRICTED : 지정된 컬럼에서 사용되고 있는 값일 경우 삭제 불가능
  • ON DELETE SET NULL : 부모키 삭제시 자식키를 NULL 로 변경
  • ON DELETE CASCADE : 부모키 삭제시 자식키도 함께 삭제됨

6. NOT NULL

해당 컬럼에 반드시 값이 기록되어야 하는 경우 사용한다.

USER_NO NUMBER NOT NULL; -- 컬럼 레벨 제약조건

NOT NULL 은 컬럼 레벨로만 작성이 가능하다.


7. UNIQUE

컬럼에 입력 값에 대해서 중복을 제한하는 제약조건이다. 단 NULL 은 중복이 가능하다.

USER_ID VARCHAR2(20) UNIQUE -- 컬럼 레벨 제약조건 (이름 미지정)
USER_ID VARCHAR2(20) CONSTRAINT USER_ID_UK UNIQUE -- 컬럼 레벨 제약조건 (이름 지정)

, CONSTRAINT USER_ID_UK UNIQUE(USER_ID) -- 테이블 레벨 제약조건

8. CHECK

컬럼에 기록되는 값에 조건 설정을 할 수 있다.
비교값은 리터럴만 사용할 수 있으며 변하는 값이나 함수는 사용하지 못한다.

-- 컬럼 레벨 제약조건
GENDER VARCHAR2(10) CONSTRAINT GENDER_CHECK CHECK (GENDER IN ('남', '여'))
profile
현수의 개발 저장소

0개의 댓글