20241015(화) DB - DDL

Dodo Lee·2024년 10월 15일

[ DDL : Data Definition Language ]

  • 데이터 정의 언어로, 객체를 만들고(CREATE), 수정(ALTER)하고, 삭제(DROP)하는 구문

1. CREATE

테이블이나 인덱스, 뷰 등 테이터베이스 객체를 생성하는 구문

1) 표현식

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

※참고※

  • VARCHAR2(크기) : UTF-8, 바이트 기준
  • NVARCHAR2(크기): UTF-16, 글자수 기준

2) 예시

CREATE TABLE "MEMBER" (
	MEMBER_ID VARCHAR2(20),
	MEMBER_PWD VARCHAR2(20),
	MEMBER_NAME VARCHAR2(30),
	MEMBER_SSN CHAR(14), -- '991213-1234567'
	ENROLL_DATE DATE DEFAULT SYSDATE
);

2. 컬럼 주석

테이블의 컬럼에 주석을 다는 구문

1) 표현식

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

2) 예시

COMMENT ON COLUMN "MEMBER".MEMBER_ID IS '회원 아이디';
COMMENT ON COLUMN "MEMBER".MEMBER_PWD IS '회원 비밀번호';
COMMENT ON COLUMN "MEMBER".MEMBER_NAME IS '회원 이름';
COMMENT ON COLUMN "MEMBER".MEMBER_SSN IS '회원 주민등록번호';
COMMENT ON COLUMN "MEMBER".ENROLL_DATE IS '회원 가입일';

3. 제약 조건(CONSTRAINTS)

테이블 작성 시 각 컬럼에 기록될 데이터에 대해 제약조건을 설정할 수 있는데
이는 데이터 무결성 보장을 주 목적으로 함
입력 데이터에 문제가 없는지에 대한 검사와 데이터의 수정/삭제 여부 검사 등을 위해 사용

1) NOT NULL

데이터에 NULL을 허용하지 않음

CREATE TABLE USER_USED_NN(
	USER_NO NUMBER NOT NULL,
	USER_ID VARCHAR2(20),
	USER_PWD VARCHAR2(20),
	USER_NAME VARCHAR2(30),
	GENDER VARCHAR2(10),
	PHONE VARCHAR2(30),
	EMAIL VARCHAR2(50)
);

2) UNIQUE

중복된 값을 허용하지 않음

CREATE TABLE USER_USED_UK(
	USER_NO NUMBER NOT NULL,
	USER_ID VARCHAR2(20) CONSTRAINT USER_ID_U UNIQUE,
	USER_ID VARCHAR2(20), 
	USER_PWD VARCHAR2(20),
	USER_NAME VARCHAR2(30),
	GENDER VARCHAR2(10),
	PHONE VARCHAR2(30),
	EMAIL VARCHAR2(50),
);
CREATE TABLE USER_USED_UK(
	USER_NO NUMBER NOT NULL,
	USER_ID VARCHAR2(20),
	USER_PWD VARCHAR2(20),
	USER_NAME VARCHAR2(30),
	GENDER VARCHAR2(10),
	PHONE VARCHAR2(30),
	EMAIL VARCHAR2(50),
	CONSTRAINT USER_ID_U UNIQUE(USER_ID)
);

3) PRIMARY KEY

NULL과 중복 값을 허용하지 않음(컬럼의 고유 식별자로 사용하기 위해)

CREATE TABLE USER_USED_PK(
	USER_NO NUMBER CONSTRAINT USER_NO_PK PRIMARY KEY,
	USER_ID VARCHAR2(20),
	USER_PWD VARCHAR2(20),
	USER_NAME VARCHAR2(30),
	GENDER VARCHAR2(10),
	PHONE VARCHAR2(30),
	EMAIL VARCHAR2(50)
);

4) FOREIGN KEY

참조되는 테이블의 컬럼의 값이 존재하면 허용

CREATE TABLE USER_USED_FK(
	USER_NO NUMBER PRIMARY KEY, 
	USER_ID VARCHAR2(20) UNIQUE, 
	USER_PWD VARCHAR2(20) NOT NULL, 
	USER_NAME VARCHAR2(30),
	GENDER VARCHAR2(10),
	PHONE VARCHAR2(30),
	EMAIL VARCHAR2(50),
	GRADE_CODE NUMBER CONSTRAINT GRADE_CODE_FK REFERENCES USER_GRADE
);

5) CHECK

저장 가능한 테이터 값의 범위나 조건을 지정하여 설정한 값만 허용

CREATE TABLE USER_USED_CHECK(
	USER_NO NUMBER PRIMARY KEY,
	USER_ID VARCHAR2(20) UNIQUE, 
	USER_PWD VARCHAR2(20) NOT NULL, 
	USER_NAME VARCHAR2(30),
	GENDER VARCHAR2(10) CONSTRAINT GENDER_CHECK CHECK( GENDER IN('남', '여')),
	PHONE VARCHAR2(30),
	EMAIL VARCHAR2(50)
);
profile
연습생

0개의 댓글