FOREIGN KEY Constraint (P8-15)
- s_dept(부서) 테이블 (parent table, 참조를 당하는쪽)
did | dname |
---|---|
10 | 개발실 |
20 | 기획실 |
30 |
영업부 |
- s_emp(사원) 테이블 (child table, 외래키를 가지고 있는쪽)
eid | ename | did |
---|---|---|
1 | kim | 10 |
2 | lee | 20 |
3 | hong | 30 |
4 | park | 100 |
-
s_emp 테이블의 did 컬럼은 s_dept 테이블의 did 컬럼을 참조(외래키)
- s_dept 테이블의 did 컬럼은 기본키(Primary Key)로 선언해야함
- SQL> CREATE TABLE s_dept(
2 did VARCHAR2(4) PRIMARY KEY
3 ,dname VARCHAR2(20)
4 ); - Table created.
- SQL> CREATE TABLE s_emp(
2 eid VARCHAR2(4) PRIMARY KEY
3 ,ename VARCHAR2(30)
4 ,did VARCHAR2(4) REFERENCES s_dept(did) // 컬럼수준
5 ); - Table created.
Rule (P8-16)
- DB 개념상의 Rule일뿐 오라클이 모두 지원하는 것은 아님
- No Action : 참조되고 있는 테이블이나 레코드는 삭제가 안됨.(기본값), 갱신도 안됨(s_dept.did)
- Set to Null : 참조하는쪽 (s_emp.did)의 값이 null 값으로 변경
- Set to Default : 참조하는쪽 (s_emp.did)의 값이 기본값으로 변경
- Cascade : 참조하는쪽 (s_emp.did)의 값이 같이 변경 or 삭제 (P8-18)
CHECK Constraint (P8-19)
- Check 조건은 WHERE절과 같은 조건
- s_emp.commission_pct에는 "10, 12.5, 15, 17.5, 20"만 들어갈 수 있다.
- SQL> CREATE TABLE s_emp(
2 commission_pct NUMBER(4,2)
3 CONSTRAINT s_emp_commission_pct_ck
4 CHECK( commission_pct IN(10, 12.5, 15, 17.5, 20))
5 ); - Table created.
- // 10, 12.5, 15, 17.5, 20 이외의 값 입력시 에러~
- SQL> INSERT INTO s_emp VALUES(1);
INSERT INTO s_emp VALUES(1)
*
ERROR at line 1:
ORA-02290: check constraint (SCOTT.S_EMP_COMMISSION_PCT_CK) violated - // 10, 12.5, 15, 17.5, 20에 해당되는 값 입력시 성공~
SQL> INSERT INTO s_emp VALUES(10); - 1 row created.
Data Dictionary Views (P8-26)
- USER : 현재 User의 스키마만 포함되는것
- ALL : 자신 + 자신이 갖고 있는 권한에 해당되는것(권한이 있는 모든 정보)
- DBA : DBA 권한이 있는것(system, sys계정)
Query Data Dictionary (P8-27)
- SQL> SELECT object_name
2 FROM user_objects
3 WHERE object_type='TABLE'; - OBJECT_NAME
---------------------------------------- - DEPT
EMP
BONUS
SALGRADE
BIN$J92fFoOLTCuM2RR+ve0MUg==$0
BIN$KqqjB2iZTcezR/fGV12zrw==$0
BIN$YQUbZwM3QAORwmz1f8P9uQ==$0
BIN$MOosV/OaS52BjFddRSfg3Q==$0
BIN$e2XKTrA1S+qzuY8Q4yTFiw==$0
BIN$Kf9Pl0QmSFiFM3XaY93Omg==$0
BIN$p/BT1OI9TKWn7tOMljvmjA==$0 - OBJECT_NAME
---------------------------------------- - S_DEPT
BIN$jMcGAkRKTEeP/7vNTOOP9w==$0
BIN$be+G/ui5ST2gaEsodqwkQg==$0
S_EMP
BIN$BX1dGSxkTZ20WKeVEuCiSQ==$0 - 16 rows selected.
이 글은 스프링노트에서 작성되었습니다.