◈ 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!
'Back-End > Oracle' 카테고리의 다른 글
Oracle ■ DDL ALTER, DROP (0) | 2024.07.29 |
---|---|
Oracle ■ 데이터베이스 정규화 (1) | 2024.07.26 |
Oracle ■ DML INSERT, UPDATE, DELETE (5) | 2024.07.24 |
Oracle ■ DML SELECT (4)-서브쿼리 (0) | 2024.07.17 |
Oracle ■ DML SELECT(3)-집합 연산자,조인 (0) | 2024.07.17 |