< 참고 >
Data Dictionary (데이터 사전 , 데이터 딕셔너리)
- 자원을 효율적으로 관리하기 위한 다양한 정보를 저장하는 시스템 테이블
- Data Dictionary는 사용자가 테이블을 생성하거나 사용자를 변경하는 등의
작업을 할 때 DB 서버에 의해 자동으로 갱신되는 테이블.
- User_tables : 자신의 게정이 소유한 객체 등에 관한 정보를 조회 할 수 있는 Dictionary 뷰
DDL ( Data Definition Language ) 데이터 정의 언어
- 객체(Object)를 만들고(CREATE) , 수정(ALTER) , 삭제(DROP)하는 등의
데이터 전체 구조를 정의하는 언어로 주로 DB관리자 , 설계자가 많이 사용함.
CREATE
- TABLE , INDEX , VIEW 등 데이터베이스 객체를 생성하는 구문
* 테이블이란 ?
- 행(ROW)과 열(COLUMN)으로 구성된 가장 기본적인 데이터베이스 객체
- 데이터베이스 내에서 모든 데이터는 테이블을 통해서 저장된다.
< 테이블 생성 >
CREATE TABLE 테이블명 (
컬럼명 자료형( SIZE ),
컬럼명 자료형( SIZE ),
컬럼명 자료형( SIZE ),
...
);
* SUBQUERY를 이용한 테이블 생성도 가능
CREATE TABLE 테이블명
AS SUBQUERY문
-- ex) MEMBER라는 이름의 TABLE 생성
CREATE TABLE MEMBER (
MEMBER_ID VARCHAR2(30), -- 아이디
MEMBER_PW VARCHAR2(30), -- 비밀번호
MEMBER_NAME VARCHAR2(30), -- 이름
ENROLL_DATE DATE DEFAULT SYSDATE -- 가입일 (기본값 : 현재시간)
);
* 주석 달기
COMMENT ON COLUMN 테이블명.컬럼명 IS '주석 내용';
-- MEMBER 테이블에 주석 추가
COMMENT ON COLUMN MEMBER.MEMBER_ID IS '아이디';
COMMENT ON COLUMN MEMBER.MEMBER_PW IS '비밀번호';
COMMENT ON COLUMN MEMBER.MEMBER_NAME IS '이름';
COMMENT ON COLUMN MEMBER.ENROLL_DATE IS '가입일';
* 제약 조건 (CONSTRAINTS)
- 사용자가 원하는 조건의 데이터만 유지하기 위해서 특정 컬럼에 설정하는 제약
- 데이터 무결성 보장을 목적으로 한다.
- 입력 데이터에 문제가 없는지 자동으로 검사하는 목적
- 데이터의 수정 / 삭제 가능 여부를 검사하는 목적
* 데이터 무결성 : 저장된 데이터의 정확성 / 일관성을 보증하는 것 => 중복 X , NULL X
1. NOT NULL
- 해당 컬럼에 반드시 값이 기록되어야 하는 경우 사용
- 삽입 / 수정 시 NULL 값을 허용하지 않도록 컬럼레벨에서 제한한다.
< NOT NULL >
-- NOT NULL은 컬럼레벨에서만 설정 가능하다
1) 조건명 미지정
CREATE TABLE MEMBER (
MEMBER_ID VARCHAR2(30) NOT NULL
);
2) 조건명 지정 (ID_NN)
CREATE TABLE MEMBER (
MEMBER_ID VARCHAR2(30) CONSTRAINT ID_NN NOT NULL
);
2. UNIQUE
- 같은 컬럼 내 입력 값에 대해서 중복을 제한하는 제약조건
- 컬럼레벨, 테이블레벨 설정 가능
- UNIQUE 조건을 설정해도 NULL값은 중복으로 삽입 가능하다.
- 복합키로 조건을 설정하면 묶은 컬럼이 모두 중복되는 값일 때만 오류 발생
< UNIQUE >
1) 컬럼레벨 조건명 미지정
CREATE TABLE MEMBER (
MEMBER_ID VARCHAR2(30) UNIQUE
);
2) 컬럼레벨 조건명 지정 (ID_U)
CREATE TABLE MEMBER (
MEMBER_ID VARCHAR2(30) CONSTRAINT ID_U UNIQUE
);
3) 테이블레벨 조건명 미지정
CREATE TABLE MEMBER (
MEMBER_ID VARCHAR2(30),
UNIQUE(MEMBER_ID)
);
4) 테이블레벨 조건명 지정 (ID_U)
CREATE TABLE MEMBER (
MEMBER_ID VARCHAR2(30),
CONSTRAINT ID_U UNIQUE(MEMBER_ID)
);
5) 복합키 지정 (테이블 레벨에서만 가능함) (ID_PW_U)
CREATE TABLE MEMBER (
MEMBER_ID VARCHAR2(30),
MEMBER_PW VARCHAR2(30),
[CONSTRAINT ID_PW_U] UNIQUE(MEMBER_ID , MEMBER_PW)
);
3. PRIMARY KEY (기본키)
- 테이블에 대한 식별자(IDENTIFIER) 역할을 하며 , 한 행의 정보를 찾기위해 사용할 컬럼을 의미한다.
- NOT NULL + UNIQUE 제약조건의 성질을 가지고 있다.
- 한 테이블에 한 개만 설정할 수 있다.
- 컬럼레벨, 테이블레벨 가능
- 복합키 가능
< PRIMARY KEY >
1) 컬럼레벨 조건명 미지정
CREATE TABLE MEMBER (
MEMBER_ID VARCHAR2(30) PRIMARY KEY
);
2) 컬럼레벨 조건명 지정 (ID_PK)
CREATE TABLE MEMBER (
MEMBER_ID VARCHAR2(30) CONSTRAINT ID_PK PRIMARY KEY
);
3) 테이블레벨 조건명 미지정
CREATE TABLE MEMBER (
MEMBER_ID VARCHAR2(30),
PRIMARY KEY(MEMBER_ID)
);
4) 테이블레벨 조건명 지정
CREATE TABLE MEMBER (
MEMBER_ID VARCHAR2(30),
CONSTRAINT ID_PK PRIMARY KEY(MEMBER_ID)
);
5) 복합키
CREATE TABLE MEMBER (
MEMBER_ID VARCHAR2(30),
MEMBER_PW VARCHAR2(30),
[CONSTRAINT ID_PW_PK] PRIMARY KEY(MEMBER_ID , MEMBER_PW)
);
4. FOREIGN KEY (외부키)
- 참조(REFERENCES)된 다른 테이블의 컬럼이 제공하는 값만 사용할 수 있다.
- FK 조건에 의해 테이블간의 관계가 형성된다. ==> JOIN의 기준 컬럼
- 제공되는 값 외에 NULL 사용 가능
- 컬럼레벨, 테이블레벨 가능하나 작성법이 다르다
- PK컬럼과 UNIQUE 지정된 컬럼만 참조할 수 있음. 컬럼명이 생략되면 자동으로 PK 컬럼을 참조한다.
< FOREIGN KEY >
컬럼명 자료형(SIZE) [CONSTRAINT 조건명] REFERENCES 참조할 테이블 [(참조할 컬럼)] [삭제룰]
CONSTRAINT 조건명 FOREIGN KEY (컬럼명) REFERENCES 참조할 테이블 [(참조할 컬럼)] [삭제룰]
-- LOGIN 테이블의 LOG_NO 컬럼을 참조한다고 가정
1) 컬럼레벨 조건명 미지정
CREATE TABLE MEMBER (
MEMBER_ID VARCHAR2(30) REFERENCES LOGIN(LOG_NO)
);
2) 컬럼레벨 조건명 지정
CREATE TABLE MEMBER (
MEMBER_ID VARCHAR2(30) CONSTRAINT ID_FK REFERENCES LOGIN(LOG_NO)
);
3) 테이블레벨 조건명 미지정
CREATE TABLE MEMBER (
MEMBER_ID VARCHAR2(30),
FOREIGN KEY (MEMBER_ID) REFERENCES LOGIN(LOG_NO)
);
4) 테이블레벨 조건명 지정
CREATE TABLE MEMBER (
MEMBER_ID VARCHAR2(30),
CONSTRAINT ID_FK FOREIGN KEY (MEMBER_ID) REFERENCES LOGIN(LOG_NO)
);
* FOREIGN KEY 삭제 옵션
- 부모 테이블의 데이터 삭제 시 자식 테이블의 데이터 처리 방법을 설정할 수 있다.
1) ON DELETE RESTRICTED
- DEFAULT값
- FK 적용된 자식 데이터 삭제 불가
2) ON DELETE SET NULL
- FK 적용된 부모 데이터 삭제시 자식 데이터를 NULL로 변경하는 옵션
CREATE TABLE MEMBER (
MEMBER_ID VARCHAR2(30) REFERENCES LOGIN(LOG_NO) ON DELETE SET NULL
);
3) ON DELETE CASCADE
- FK 적용된 부모 데이터 삭제 시 자식 데이터도 함께 삭제
CREATE TABLE MEMBER (
MEMBER_ID VARCHAR2(30) REFERENCES LOGIN (LOG_NO) ON DELETE CASCADE
);
5. CHECK
- RDBMS의 데이터 무결성과는 관계없는 제약조건
- 컬럼에 기록되는 값에 조건을 설정
- 비교 값으로는 리터럴만 사용 가능하다.
< CHECK >
1) 컬럼레벨 조건명 미지정
CREATE TABLE MEMBER (
MEMBER_ID VARCHAR2(30) CHECK (MEMBER_ID > 0)
);
2) 컬럼레벨 조건명 지정
CREATE TABLE MEMBER (
MEMBER_ID VARCHAR2(30) CONSTRAINT ID_CH CHECK (MEMBER_ID > 0)
);
3) 테이블레벨 조건명 미지정
CREATE TABLE MEMBER (
MEMBER_ID VARCHAR2(30),
CHECK (MEMBER_ID > 0)
);
4) 테이블레벨 조건명 지정
CREATE TABLE MEMBER (
MEMBER_ID VARCHAR2(30),
CONSTRAINT ID_CH CHECK (MEMBER_ID > 0)
);
예제 )
'Study > ORACLE' 카테고리의 다른 글
DML ( Data Manipulation Language ) (0) | 2021.09.30 |
---|