1) 표현식
CREATE TABLE MEMBER
(
MEMBER_ID VARCHAR2(20)
, MEMBER_PWD VARCHAR2(20)
, MEMBER_NAME VARCHAR2(20)
);
COMMENT ON COLUMN MEMBER.MEMBER_NAME IS '회원이름';
1)
테이블 작성 시 각 컬럼에 대해 값 기록에 대한 제약 조건을 설정할 수 있다.
데이터 무결성 보장을 목적으로 한다
입력하거나 수정하는 데이터에 문제가 없는지 자동으로 검사
PRIMARY KEY, FOREIGN KEY, CHECK, NOT NULL, UNIQUE
해당 계정이 가지고 있는 제약조건 조회 구문
SELECT
*
FROM USER_CONSTRAINT;
SELECT
*
FROM USER_CONS_COLUMNS;
제약 조건에 이름을 붙일 경우 CONSTRAINT 를 활용
해당 컬럼에 반드시 값이 기록되어야 하는 경우 사용
삽입 혹은 수정 시 NULL 값을 허용하지 않도록 하며 컬럼 레벨에서 제한
NOT NULL만 반드시 컬럼 레벨에 작성
CREATE TABLE USER_NOTNULL
(
USER_NO NUMBER NOT NULL
, USER_ID VARCHAR(20) NOT NULL
);
3) UNIQUE
컬럼의 입력 값에 대해 중복을 제한하는 제약 조건
컬럼 레벨과 테이블 레벨에 모두 설정 가능
CREATE TABLE USER_UNIQUE
(
USER_NO NUMBER UNIQUE NOT NULL
)
CREATE TABLE USER_UNIQUE2
(
USER_NAME
, USER_ID
, UNIQUE(USER_ID)
);
-- 두 개 이상의 컬럼을 묶어서 하나의 UNIQUE 제약 조건 설정
-- 묶인 조건이 모두 중볼될 경우 작성 불가
-- 묶인 조건 중 하나만 중복될 경우 UNIQUE에 위배되지 않는다
```sql
CREATE TABLE USER_UNIQUE3(
USER_NO NUMBER,
USER_ID VARCHAR2(20) NOT NULL,
USER_PWD VARCHAR2(20) NOT NULL,
UNIQUE(USER_NO, USER_ID)
);
-- 제약조건에 이름을 붙여 테이블 생성
CREATE TABEL CONS_NAME(
TEST_DATA1 VARCHAR2(20) CONSTRAINT NN_TEST NOT NULL
, TEST_DATA2 NUMBER
, TEST_DATA3 VARCHAR2(20)
, TEST_DATA4 VARCHAR2(20)
CONSTRAINT UN_TEST UNIQUE(TEST_DATA3, TEST_DATA4)
);
4) CHECK
컬럼에 기록되는 값에 조건 설정 가능
CHECK(컬럼명 비교연산자 비교값)
CREATE TABLE USER_CHECK(
USER_NO NUMBER,
USER_ID VARCHAR2(20) UNIQUE,
GENDER VARCHAR(5) CHECK(GENDER IN ('남','여')
);
5) PRIMARY KEY
CREATE TABLE USER_PRIMARYKEY(
USER_NO NUMBER CONSTRAINT PK_USER_NO PRIMARY KEY
);
-- 테이블 레벨에서 설정(복합키 설정)
-- INSERT 할 경우
-- 설정된 두 가지 컬럼 모두 UNIQUE / NOT NULL 조건을 위배할 경우 삽입 불가
CREATE TABLE USER_PRIMARYKEY2(
USER_NO NUMBER,
USER_ID VARCHAR2(20),
CONSTRAINT PK_USER_NO2 PRIMARY KEY(USER_NO, USER_ID)
);
6) FOREIGN KEY(외부키 | 외래키)
CREATE TABEL USER_FOREIGNKEY(
USER_NO NUMBER PRIMARY KEY,
USER_ID VARCHAR2(20) UNIQUE,
USER_PWD VARCHAR2(20) NOT NULL,
GRADE_CODE NUMBER,
CONSTRAINT FK_GRADE_CODE FOREIGN KEY(GRADE_CODE) REFERENCES USER_GRADE(GRADE_CODE)
);
1) ON DELETE RESTRICT
2) ON DELETE SET NULL
CREATE TABLE TEST(
NO1 NUMBER PRIMARY KEY,
NO2 VARCHAR2(20) UNIQUE,
NO3 NUMBER,
FOREIGN KEY(NO3) REFERENCES USER_GRADE2(GRADE_CODE) ON DELETE SET NULL
);
3) ON DELETE CASCADE