일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Numpy
- sklearn
- 파이썬
- SQL
- seaborn
- 튜닝
- 머신러닝
- 카카오
- oracle
- level 1
- level 2
- R
- 프로그래머스
- 실습
- Oracel
- 코딩테스트
- 데이터 분석
- Kaggle
- pandas
- 빅분기
- matplotlib
- 빅데이터 분석 기사
- 실기
- python3
- 알고리즘
- Python
- 오라클
- Today
- Total
라일락 꽃이 피는 날
[Oracle] 제약 (constraint) 2 본문
예제 1. 사원 테이블의 월급이 0~9000 사이의 데이터만 입력 또는 수정되게끔 check 제약 걸기
alter table emp
add constraint emp_sal_ck check(sal between 0 and 9000);
예제 2. email 에 체크 제약을 거는데, 이메일에 @ 와 . 이 없으면 에러가 나게끔 제약 걸기
alter table emp
add constraint emp_email_ck check(email like '%@%.%');
alter table emp
add constraint emp_email_ck check(email like '%@%' and email like '%.%');
예제 3. 통신사 컬럼에 제약을 거는데 데이터가 sk, lg, kt 만 입력 또는 수정되게끔 제약 걸기
alter table emp
add constraint emp_telecom_ck check(telecom in ('sk', 'lg', 'kt'));
dept 테이블의 deptno 에 primary key 제약을 걸고 emp 테이블의 deptno 에 foreign key 제약을 걸면
emp 테이블의 deptno 에 데이터를 입력할 때, dept 테이블에 존재하는 deptno 에 대한 데이터만 입력 또는 수정할 수 있다.
dept 테이블의 데이터를 지울 때 emp 테이블에 관련된 부서 번호가 있다면, 해당 부서 번호는 에러가 나면서 지워지지 않는다.
자식 테이블인 emp 테이블에 해당 부서 번호가 없어야만 지워진다.
예제 4. dept 테이블의 deptno 에 primary key 제약 걸기
alter table dept
add constraint dept_deptno_pk primary key(deptno);
예제 5. emp 테이블의 deptno 에 foreign key 제약을 걸면서 dept 테이블의 deptno 를 참조
alter table emp
add constraint emp_deptno_fk foreign key(deptno) references dept(deptno);
이렇게 하게 되면 dept 테이블은 부모 테이블이 되고, emp 테이블은 자식 테이블이 된다.
예제 6. KING 의 부서 번호를 70번으로 변경
update emp
set deptno = 70
where ename = 'KING';
무결성 제약조건(C##SCOTT.EMP_DEPTNO_FK)이 위배되었습니다- 부모 키가 없습니다.
위의 update 문은 dept 테이블의 deptno 에 70번이 없기 때문에 에러가 난다.
예제 7. 부서 테이블에서 부서 번호 10번 행을 삭제
delete dept
where deptno = 10;
무결성 제약조건(C##SCOTT.EMP_DEPTNO_FK)이 위배되었습니다- 자식 레코드가 발견되었습니다.
자식 테이블에 부서 번호 10번이 존재하기 때문에, 부모 테이블인 dept 테이블의 10번 데이터를 함부로 삭제할 수 없다.
'프로그래밍 > Oracle' 카테고리의 다른 글
[Oracle] 알고리즘 문제 1 (0) | 2022.06.14 |
---|---|
[Oracle] WITH ~ AS 절 (0) | 2022.06.14 |
[Oracle] 제약 (constraint) 1 (0) | 2022.06.14 |
[Oracle] 머신러닝 - 미국인 의료비 데이터 (0) | 2022.06.12 |
[Oracle] Flashback 기술 2 - Drop / Version Query (0) | 2022.06.10 |