DB || DAY12 || 제약조건
# 제약조건 선언시기
1. 테이블 생성시 - CREATE TABLE . . .
2. 테이블 생성 후 - ALTER TABLE . . .
# 제약조건의 유형
1. NOT NULL - 팔수정보인 컬럼에 선언함.
2. UNIQUE - 중복되는 데이터가 허용되지 않는 컬럼에 선언함. ex) 주민번호, 이메일 등
3. PRIMARY KEY - NOT NULL + UNIQUE 의 성격을 가짐.
4. FOREIGN KEY - 부모컬럼을 참조하는, 자식컬럼임.
*** 이때, 참조대상인 부모컬럼은 PRIMARY KEY or UNIQUE 제약조건이 걸려있어야한다.
# 컬럼레벨 *** FOREIGN KEY 키워드 사용하지 않음!
create table . . .
department_id number(4) CONSTRAINT emp_dept_fk
REFERENCES departments(department_id),
. . .
# 테이블레벨
CONSTRAINT emp_dept_fk FOREIGN KEY (department_id)
REFERENCES departments(department_id),
5. CHECK - 해당컬럼이 만족했으면 하는 조건을 부여함.
# 컬럼레벨
salary number(10) CONSTRAINT a_sal_ck (salary 조건문지정) ,
성별 varchar2(10) constraint ____ check (성별 in('남','여'),
# 테이블레벨
salary number(10),
CONSTRAINT a_sal_ck CHECK(salary 조건문지정), . . .
# 제약조건명 선언
1. 생략해도 무방하다.- Oracle 자동부여. ( sys_cXXXXXX 형태 )
2. 사용자 지정이 권장사항이다. -> ( 대부분 테이블_컬럼_제약조건 형태로 함. )
# 제약조건 선언 문법
1. 컬럼레벨 문법
- NOT NULL 가능
CREATE TABLE 테이블명
(컬럼명 테이터타입(컬럼사이즈) CONSTRAINT 제약조건명 제약조건유형,
. . . )
CREATE TABLE my_emp
(employee_id number(10) CONSTRAINT emp_empId_pk Primary Key ,
. . . )
2. 테이블레벨 문법
-마지막에 컬럼명을 한번 더 언급한다.
- NOT NULL 불가능
CREATE TABLE 테이블명
(컬럼명1 데이터타입(컬럼사이즈),
컬럼명2 데이터타입(컬럼사이즈),
. . . ,
CONSTRAINT 제약조건명 제약조건유형 ( 컬럼명1 ) );
ex) CONSTRAINT emp_empId_pk Primary Key (employee_id)
# 제약조건 확인하기
DESC user_constraint;
- 입력한 테이블에 해당하는 테이블의 제약조건을 출력하기
SELECT constraint_name, constraint_type, search_condition, r_constraint_name
FROM user_constraints
WHERE UPPER(table_name) = UPPER('&table_name');
'개발자 양성과정 필기노트 > DB | ORACLE' 카테고리의 다른 글
데이터 삭제 조작어 (0) | 2021.09.29 |
---|---|
ALTER TABLE (0) | 2021.09.28 |
테이블 복사, INSERT, UPDATE, DELETE, 트랜잭션 , 치환변수 (0) | 2021.09.13 |
SELF JOIN, 서브쿼리 (0) | 2021.09.10 |
그룹함수 , GROUP BY절, HAVING절 (0) | 2021.09.07 |
댓글