day05
- not null : null값이 입력되지 못하게 하는 조건
- unique : 종복된 값이 입력되지 못하게 하는 조건
- check : 주어진 값만 허용하는 조건
- primary key : not null + unique _ index의 의미
- foreign key : 다른 테이블의 필드(컬럼)를 참조해서 무결성을
검사하는 조건
null_test이라는 테이블 만들어주고
co1, co2, co3 의 컬륨을 만들어준다.not null CREATE TABLE null_test( col1 varchar2(10) NOT NULL, col2 varchar2(10) NULL, col3 varchar2(10) );
co1는 not null을 넣어줬기 때문에 null값을 설정할수 없음
co1과 co2에 데이터를 넣어줌INSERT INTO NULL_TEST (col1, COL2) VALUES ('aa', 'bb');
col1와 col3에 데이터를 넣어준다. 만약 col1에 null값을 넣으면 오류가 나타난다.
INSERT INTO NULL_TEST (col1, COL3) VALUES ('aa', 'bb');
unique
CREATE TABLE unique_test(
col1 varchar2(20) UNIQUE NOT NULL, -- 중복된값 투입 불가 and null값 투입 x
col2 varchar2(20) UNIQUE , -- 중복된 값을 넣을수 없음
col3 varchar2(20) NOT NULL, -- null값 투입 불가
col4 varchar2(20) NOT NULL, -- null값 투입 불가
CONSTRAINT temp_unique unique(col3, col4) -- col3 + col4 합쳐서 중복 불가능
);
CREATE TABLE UNIQUE_TEST2( col1 varchar2(20), col2 varchar2(10), CONSTRAINT temp_unique2 unique(col1, col2) );
INSERT INTO UNIQUE_TEST2 (col1 , col2) -- ('aa','bb')를 중복을 방지 values('aa','aa'); INSERT INTO UNIQUE_TEST2 (col1 , col2) values('aa','bb'); INSERT INTO UNIQUE_TEST2 (col1 , col2) values('aa','cc');
컬륨안에 특정 데이터만 들어올수있게 만듬
check CREATE TABLE check_test( gender varchar2(10) NOT NULL CONSTRAINT check_gender CHECK (gender IN('여성','남성')) );
SELECT * FROM CHECK_TEST ct ; INSERT INTO CHECK_TEST VALUES ('여성'); INSERT INTO CHECK_TEST VALUES ('남성'); INSERT INTO CHECK_TEST VALUES ('F'); -- 오류 INSERT INTO CHECK_TEST VALUES ('M'); -- 오류 특정 컬륨에서 여성 남성만 들어올 수 있음
- 기본키 역시 기본적인 제약조건들은 테이블을 생성할때 같이 정의한다.
- 테이블당 하나만 정의 가능하다.
- 기본키, 식별자, pk, 등으로 불리고 있다.
- not null + unique + index
CREATE TABLE constTest(
pkCol1 varchar2(10) PRIMARY KEY, -- 1번째 방법 이것만 기억해도됨
pkCol2 varchar2(10) CONSTRAINT pk_test1 PRIMARY KEY, -- 2번째 방법
pkCo13 varchar2(10),
CONSTRAINT pk_test2 PRIMARY KEY (pkcol3) -- 3번째 방법
);
CREATE TABLE primary_test(
student_id NUMBER(10) PRIMARY KEY,
name varchar2(20)
);
- 외부키, 외래키, 참조키, fk, 외부식별자 불린다.
- FK가 정의된 테이블을 자식 테이블이라고 칭한다.
- 참조되는 테이블 즉 PK가 있는 테이블을 부모 테이블이라고 한다.
- 부모테이블의 PK컬럼에 존재하는 데이터만 사식 테이블에 입력할 수 있다.
- 부모테이블은 자식의 데이터나 테이블이 삭제 된다고 영향을 받지 않는다.
- 참조하는 데이터 컬럼과 데이터 타입이 반드시 일치해야 한다.
- 참조할 수 잇는 컬럼은 기본키이거나 unique만 가능하다.
(보통은 pk랑 엮는다)
CREATE TABLE foreign_key(
department_id varchar2(10)
CONSTRAINT dept_fk REFERENCES departments(department_id), -- 인라인
name varchar2(10),
salary number(10)
);
CREATE TABLE foreign_key(
department_id varchar2(10),
name varchar2(10),
salary number(10),
CONSTRAINT dept_fk
FOREIGN KEY department_id
REFERENCES departments(department_id) -- 아웃라인
);