Back-End/Oracle

Oracle ■ CREATE

SIKIDA 2024. 7. 25. 19:45
728x90

 

 

 

 DDL

 

• DDL(Data Definition Language)

데이터베이스의 객체를 생성, 수정, 삭제 하는 등의 작업이 가능한 언어

 

• 종류

1. CREATE : 객체 생성

2. ALTER : 객체 수정

3. DROP : 객체 삭제

 

 

• TABLE

테이블은 열과 행으로 구성되어 있는 데이터베이스의 객체 종류 중 하나로써 실제 데이터들이 저장되어 있는 공간

 

• 데이터베이스 객체 종류

1. Table

2. Indexes

3. Sequences

4. Views

5. 등등

 

• CREATE TABLE 표현법

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

 

• 자주 쓰이는 자료형 종류

 

 

• CREATE TABLE 표현법

회원 테이블 생성하는 쿼리문이며 각 단어들 사이에 언더바(_)를 작성함

 

 

• COMMENT

해당 컬럼이 어떠한 역할을 정의하는 컬럼인지 주석을 남길 수 있음 표현법

: COMMENT ON COLUMN 테이블명.컬럼명 IS ‘내용

 

 

 

 DDL 제약조건 - NOT NULL 

 

• 제약조건 (CONSTRAINTS)

컬럼에 어떠한 조건을 걸어 부적절한 데이터가 추가되는것들 방지하는 조건

 

• 제약조건의 종류

1. NOT NULL 2. UNIQUE 3. PRIMARY KEY 4. FOREIGN KEY 5. CHECK 6. DEFAULT 7. …

 

 

• NOT NULL

해당 컬럼에 빈 값(NULL)이 들어올 수 없음을 뜻함. 반드시 있어야 하는 값

* ex. 회원 가입 페이지에서의 아이디, 패스워드 등 필수 입력 값

 

• 사용 방법

CREATE TABLE MEMBER_NOTNULL (

MEMBER_NO NUMBER NOT NULL,

MEMBER_ID VARCHAR2(30) NOT NULL,

MEMBER_PWD VARCHAR2(150) NOT NULL,

MEMBER_NAME VARCHAR2(50),

MEMBER_IN_DATE DATE

)

 

◈ 제약조건 - UNIQUE

 

• UNIQUE

해당 컬럼에 들어있는 값에서 반드시 유일(절대 중복되지 않는)해야 하는 값

 

• UNIQUE 제약조건을 위반하는 경우

유저의 이름에 UNIQUE 제약조건을 걸엇으나, 동명이인이 있을 경우 서로 같은 이름을 가지므로 제약조건에 위반됨

 

• 사용 방법 (1)

CREATE TABLE MEMBER_UNIQUE (

MEMBER_NO NUMBER NOT NULL,

MEMBER_ID VARCHAR2(30) NOT NULL UNIQUE

MEMBER_PWD VARCHAR2(150) NOT NULL,

MEMBER_NAME VARCHAR2(50),

MEMBER_IN_DATE DATE

)

 

• 설명

사용자가 로그인하는 아이디는 중복되지 않는 값(유일한 값)이어야 함

 

 

◈ 제약조건 - CHECK

 

• CHECK

해당 컬럼에 들어와야 할 값들을 미리 정함. 정해진 값 외에는 입력할 수 없음

 

• 예시

1. 성별 : 성별에는 ‘W’, ‘M’ 값만 들어올 수 있음

2. 이용약관 동의 : 동의란에는 ‘동의‘, ‘비동의‘ 값만 들어올 수 있음

3. …

 

• 사용 방법

CREATE TABLE MEMBER_CHECK (

MEMBER_NO NUMBER NOT NULL,

MEMBER_ID VARCHAR2(30) NOT NULL ,

MEMBER_PWD VARCHAR2(150) NOT NULL,

MEMBER_NAME VARCHAR2(50),

MEMBER_GENDER VARCHAR2(5) CHECK (MEMBER_GENDER IN(‘M’, ‘W’)),

MEMBER_IN_DATE DATE

)

 

• 설명

사용자의 성별은 W(여자) 또는 M(남자) 이어야 함. 다른 값은 추가할 수 없음

 

◈ 제약조건 - DUEFAULT

 

• DEFAULT

해당 컬럼에 아무런 값이 들어오지 않을 경우 기본값으로 추가할 값을 설정함

 

• 예시

1. 회원의 가입일이 추가된 현재 날짜(가입일)를 추가

2. 게시판이 작성된 현재 날짜(작성일)를 추가

3. …

 

• 사용 방법

CREATE TABLE MEMBER_DEFAULT (

MEMBER_NO NUMBER NOT NULL,

MEMBER_ID VARCHAR2(30) NOT NULL ,

MEMBER_PWD VARCHAR2(150) NOT NULL,

MEMBER_NAME VARCHAR2(50),

MEMBER_GENDER VARCHAR2(5),

MEMBER_IN_DATE DATE DEFAULT SYSDATE NOT NULL

)

 

• 설명

기본값으로 현재 날짜(SYSDATE)를 설정하며, 해당 값은 비워질 수 없음

(NOT NULL) INSERT 작성 시 해당 값이 들어가는 자리에 DEFAULT를 작성하면 현재 날짜가 추가됨

 

◈ 제약조건 - PK(PRIMARY KEY)

 

• 기본키(PRIMARY KEY)

테이블에서 튜플들의 데이터를 유일하게 식별할 수 있는 컬럼에 작성하는 제약 조건 튜플들을 구분할 수 있는 식별자이며, 해당 값은 반드시 유일(UNIQUE)해야하고 NULL 이 들어올 수 없음

-> UNIQUE + NOT NULL

 

• 예시

1. 회원 번호

2. 부서 번호

3. 게시글 번호

4. …

 

• 사용 방법

CREATE TABLE MEMBER_PRIMARY_KEY (

MEMBER_NO NUMBER PRIMARY KEY

MEMBER_ID VARCHAR2(30) NOT NULL ,

MEMBER_PWD VARCHAR2(150) NOT NULL,

MEMBER_NAME VARCHAR2(50),

MEMBER_GENDER VARCHAR2(5),

MEMBER_IN_DATE DATE,

)

 

• 설명

MEMBER_NO의 값은 비워질 수 없으며(NOT NUL) 해당 컬럼에 존재하는 값은 중복되지 않아

반드시 유일(UNIQUE) 해야함

즉, MEMBER_NO의 값으로 해당하는 유저를 찾을 수 있어야 함

 

 

◈ 제약조건 - FK(FOREIGN KEY)

 

• 외래키 (FOREIGN KEY)

다른 테이블을 참조하여 테이블간의 관계를 맺어주는 키

 

1. 기본키가 정의된 컬럼을 참조하여 가져옴

2. 가져온 테이블은 부모 테이블이 되며, 외래키는 참조하기 때문에 자식 테이블이 됨

3. 부모 테이블의 기본키가 존재하는 데이터만 추가할 수 있음

4. 데이터 타입이 반드시 일치해야 함(부모 테이블의 기본키를 참조하기 때문)

5. 참조할 수 있는 컬럼은 기본키(PK) 또는 UNIQUE만 가능

 

• 사용 방법

CREATE TABLE MEMBER_JOB (

JOB_CODE VARCHAR2(5) PRIMARY KEY,

JOB_NAME VARCHAR2(50) NOT NULL

)

 

CREATE TABLE MEMBER_FOREIGN_KEY (

MEMBER_NO NUMBER PRIMARY KEY,

MEMBER_ID VARCHAR2(30) NOT NULL ,

MEMBER_PWD VARCHAR2(150) NOT NULL,

MEMBER_NAME VARCHAR2(50),

MEMBER_GENDER VARCHAR2(5),

MEMBER_IN_DATE DATE, J

OB_CODE VARCHAR2(5) REFERENCES MEMBER_JOB(JOB_CODE)

)

 

• 설명

JOB_CODE 컬럼을 생성하면서 MEMBER_JOB 테이블의 JOB_CODE 컬럼을 참조하겠다는 의미

 

• 참고

아래와 같은 옵션들을 추가할 수 있음

1. ON DELETE SET NULL : 참조하는 부모 테이블의 값(PK or UNIQUE)이 삭제 된다면

                                             자식 테이블의 값을 NULL로 변경

2. ON DELETE CASECADE : 참조하는 부모 테이블의 값(PK or UNIQUE)이 삭제 된다면

                                                자식 테이블의 값 또한 같이 삭제

3. ON DELETE RESTRICTED : 참조하는 부모 테이블의 값(PK or UNIQUE)이 존재 한다면

                                                    자식 테이블의 값을 삭제할 수 없음 (기본값)

 

 

 

• ON DELETE SET NULL 사용 예시

 

CREATE TABLE MEMBER_JOB (

JOB_CODE VARCHAR2(5) PRIMARY KEY,

JOB_NAME VARCHAR2(50) NOT NULL

)

CREATE TABLE MEMBER_FOREIGN_KEY (

MEMBER_NO NUMBER PRIMARY KEY,

MEMBER_ID VARCHAR2(30) NOT NULL ,

MEMBER_PWD VARCHAR2(150) NOT NULL,

MEMBER_NAME VARCHAR2(50),

MEMBER_GENDER VARCHAR2(5),

MEMBER_IN_DATE DATE,

JOB_CODE VARCHAR2(5) REFERENCES MEMBER_JOB(JOB_CODE) ON DELETE SET NULL

)

 

• 설명

1. MEMBER_NO = 1을 가진 유저는 JOB_CODE 10을 참조함 (JOB_NAME이 Test)

2. MEMBER_NO = 3을 가진 유저는 JOB_CODE 30을 참조함 (JOB_NAME이 Engineer)

 

 

DDL CREATE에 대해 정리를 해보았다 그럼 20000!