Tycoon/오라클 SQL과 PL/SQL (개정4판) (完)

[오라클 SQL과 PL/SQL] 7장 연습문제 (Constraint(제약조건) 1 ~ 5)

nyamnmm 2025. 1. 5. 03:00
『 다양한 예제로 쉽게 배우는 오라클 SQL과 PL/SQL (개정 4판) 』
저자: 서진수, 김균도
사용 프로그램: sqlplus
※ 본 게시글에 작성된 문제는 책 본문과 일치하지 않는 부분이 존재하며, 풀이 또한 정확하지 않습니다.

 


 

1. 아래의 표를 보고 테이블을 생성하면서 제약조건을 설정하세요.
테이블 이름 컬럼 이름 데이터 타입 제약조건 종류 제약조건 이름 기타사항
tcons no NUMBER(5) PRIMARY KEY tcons_no_pk  
  name VARCHAR2(20) NOT NULL tcons_name_nn  
  jumin VARCHAR2(13) NOT NULL tcons_jumin_nn  
  jumin VARCHAR2(13) UNIQUE tcons_jumin_uk  
  area NUMBER(1) CHECK tcons_area_ck 1~4까지의 숫자
  deptno VARCHAR2(6) FOREIGN KEY tcons_deptno_fk dept2(dcode)

 

문제풀이
CREATE TABLE tcons (
	no NUMBER(5)
		CONSTRAINT tcons_no_pk PRIMARY KEY,
	name VARCHAR2(20)
		CONSTRAINT tcones_name_nn NOT NULL,
	jumin VARCHAR2(13)
		CONSTRAINT tcons_jumin_nn NOT NULL
		CONSTRAINT tcons_jumin_uk UNIQUE,
	area NUMBER(11)
		CONSTRAINT tcons_area_ck CHECK(1 <= area AND area <= 4),
	deptno VARCHAR2(6)
		CONSTRAINT tcons_deptno_fk REFERENCES dept2(dcode)
);

 

실행결과

 


 

2.
tcons 테이블의 name 컬럼이 emp2 테이블의 name 컬럼의 값을 참조하도록 참조키 제약조건을 추가 설정하는 쿼리를 쓰세요. (tcons 테이블이 자식테이블입니다)

 

문제풀이
ALTER TABLE tcons
ADD CONSTRAINT tcons_name_fk FOREIGN KEY(name)
REFERENCES emp2(name);

 

실행결과

제약조건 추가(좌) / 추가 후 제약조건 확인(우)

 


 

3.
tcons 테이블의 name 컬럼에 만들어져 있는 unique 제약조건을 "사용안함"으로 변경하되해당 테이블의 데이터에 DML 까지 안되도록 변경하는 쿼리를 쓰세요.
(제약조건 이름은 tcons_name_uk 입니다)

 

문제풀이
ALTER TABLE tcons DISABLE VALIDATE CONSTRAINT tcons_jumin_uk;

 

실행결과

 


 

4.
위 3번 문제에서 "사용안함"으로 설정한 제약조건 tcons_name_uk 을 사용함으로 변경하되 기존에 있던 내용과 새로 들어올 내용 모두를 체크하는 옵션으로 변경하세요. 그리고 문제가 되는 데이터들은 sys.execptions 테이블에 저장하도록 설정하세요.

 

문제풀이
ALTER TABLE scott.tcons
ENABLE VALIDATE CONSTRAINT tcons_jumin_uk
EXCEPTIONS INTO sys.esceptions;

 

실행결과

 


 

5. emp 테이블에 설정되어 있는 제약조건 중 자신이 생성한 제약 조건들을 테이블명 , 컬럼명 ,제약조건명으로 검색하는 쿼리를 쓰세요.
(단 Foreign key 는 제외합니다)

 

문제풀이
SELECT owner, constraint_name, table_name, column_name
FROM user_cons_columns
WHERE table_name = 'EMP';

 

실행결과