CREATE TABLE cons_06 (
data NUMBER CHECK (data>=1 AND data<=100)
data NUMBER CHECK (data BETWEEN 1 AND 100)
);
CREATE TABLE cons_07(
data VARCHAR2(1) CHECK ( data IN ('Y', 'N'))
);
user_constraints (제약사항 자료사전)으로 확인할 수 없음user_tab_columns (테이블 컬럼 자료사전)으로 확인해야 함CREATE TABLE cons_08 (
data NUMBER DEFAULT 123
, data2 DATE DEFAULT sysdate
, data3 VARCHAR2(10) DEFAULT 'HI' NOT NULL --NOT NULL은 CHECK 제약조건으로 들어감
);
INSERT INTO cons_08 VALUES (null, null, 'ABCDE');
INSERT INTO cons_08 (data3) VALUES ('Apple');
CREATE TABLE cons_09 (
no NUMBER CONSTRAINT pk_no PRIMARY KEY
, data VARCHAR2(10) NOT NULL
);
-- 두 컬럼을 같이 PK로 지정
CREATE TABLE cons_13 (
no NUMBER
, data VARCHAR2(10)
, CONSTRAINT pk_cons13 PRIMARY KEY(no, data)
);
-- 에러, PK는 NULL값 불가 -> 둘 중 한 컬럼에 NULL이 설정되어 있음
INSERT INTO cons_13 VALUES (NULL, 'A');
INSERT INTO cons_13 VALUES (111, NULL);
-- 두 컬럼의 값이 동시에 중복될 때 UNIQUE가 적용됨
INSERT INTO cons_13 VALUES (1, 'Apple');
INSERT INTO cons_13 VALUES (2, 'Banana');
INSERT INTO cons_13 VALUES (1, 'Banana');
CREATE TABLE cons_14 (
num NUMBER
, data VARCHAR2(20)
, CONSTRAINT fk_num
FOREIGN KEY(num) --FK 설정 / 자신 테이블의 컬럼 설정
REFERENCES cons_12(no) --참조할 PK 설정 / 참조할 테이블과 컬럼을 설정
);
식별 관계 : FK가 PK역할을 동시에 수행하는 경우
비식별 관계 : FK컬럼이 PK역할을 수행하지 않는 행태
참조되고 있는 pk의 값은 함부로 지울 수 없음
ON DELETE CASCADE 추가 구문 : 참조하고 있는 PK값이 삭제될 때 FK를 가진 행도 같이 삭제되도록 설정ON DELETE SET NULL 추가구문 : 참조하고 있는 PK값이 삭제되면 FK 컬럼의 값만 NULL로 바꾸도록 설정 ➡ 참조무결성 유지-- 값 삭제해보기
SELECT * FROM pk_test
--DELETE pk_test --에러, fk키가 참조하고 있는 pk는 삭제할 수 없음 (child record found)
WHERE no = 1;
-- fk가 참조하고 있지 않은 pk데이터는 삭제 가능
SELECT * FROM pk_test
--DELETE pk_test
WHERE no = 3;
-- 에러, fk로 참조되고 있는 pk를 가진 테이블은 삭제할 수 없음
DROP TABLE pk_test;
-- DELETE CASECADE 테스트
SELECT * FROM pk_test
--DELETE pk_test --삭제됨
WHERE no = 1;
-- DELETE SET NULL 테스트
SELECT * FROM pk_test
--DELETE pk_test
WHERE no = 1;
DB 설계 문서 / ERD Cloud
개체(Entity)들의 속성(Attribute)과 개체들 간의 관계(Relation)를 도식화하여 표현한 것
👉🏻 [ 테이블들의 컬럼정보 / 테이블의 구조 / 테이블들 간의 연결 (pk, fk) ]을 하나의 그림으로 표현한 것
엔티티, Entity 🟥
개체 / 정보가 저장되는 단위 / 테이블
속성, Attribute 🟡
엔티티의 특성을 나타내는 세부 항목 / 컬럼
관계, Relation 🔷
엔티티들 사이의 연관성 / PK-FK의 연결 (식별관계 비식별관계)
인스턴스, Instance
엔티티의 실 데이터 / 행(row)
식별자, key, 키
특정 인스턴스를 구분하기 위해 대표로 설정한 속성