기본키 (Primary key)
(1) 기본키 설정
기본키는 유일한 식별자 개념으로 당연히 테이블 당 1개만 생성할 수 있다.기본키로 사용할 수 있는 컬럼 개수는 최대 32개이다.(32개로 설정할 일이 있을까...) 기본키는 CREATE, ALTER 구문에서 정의가능하며 생성 방법은 다음과 같다.
CREATE 문 기본키 설정
-- CREATE 문 기본키 생성문 Syntax
CREATE TABLE 테이블명
(
컬럼1 데이터타입 null/not null
컬럼2 데이터타입 null/not null
...
CONSTRAINT 제약조건명 PRIMARY KEY(column1,column2,...)
);
-- 생성 예시
CREATE TABLE supplier
(
supplier_id numeric(10) not null,
supplier_name varchar2(50) not null,
contact_name varchar2(50),
CONSTRAINT supplier_pk PRIMARY KEY (supplier_id)
);
--복수 컬럼 지정 기본키 생성
CREATE TABLE supplier
(
supplier_id numeric(10) not null,
supplier_name varchar2(50) not null,
contact_name varchar2(50),
CONSTRAINT supplier_pk PRIMARY KEY (supplier_id, supplier_name)
);
ALTER 문 기본키 설정
ALTER 문으로 테이블에 새로운 필드를 추가하거나 수정할 때도 기본키 제약 조건을 설정할 수 있다.
-- ALTER 문 기본키 제약조건 변경
ALTER TABLE 테이블명
ADD CONSTRAINT 제약조건명 PRIMARY KEY (column1, column2, ... column_n);
-- 예시
ALTER TABLE supplier
ADD CONSTRAINT supplier_pk PRIMARY KEY (supplier_id, supplier_name);
Drop & Disable & Enable 기본키 설정
각각의 구문을 통해 테이블 기본키의 삭제, 해제, 활성화를 할 수 있다.
-- 기본키 제약조건 삭제
ALTER TABLE 테이블명
DROP CONSTRAINT 제약조건명;
--기본키 해제
ALTER TABLE 테이블명
DISABLE CONSTRAINT 제약조건명;
-- 기본키 활성화
ALTER TABLE 테이블명
ENABLE CONSTRAINT 제약조건명;
외래키 (Foreign key)
(1) 외래키 설정
참조된 테이블을 상위 테이블이라고 하고, 외래 키가 있는 테이블을 하위 테이블이라고 보통 지칭한다.하위 테이블의 외래키는 상위 테이블의 기본키를 참조하는 구조를 지닌다.외래키에 사용할 수 있는 최대 컬럼 개수 또한 32개이다. 외래키도 CREATE 또는 ALTER 구문을 통해 설정 가능하다.
CREATE 문 기본키 설정
-- CREATE 문 외래키 생성문 Syntax
CREATE TABLE 테이블명
(
column1 datatype null/not null,
column2 datatype null/not null,
...
CONSTRAINT 외래키명
FOREIGN KEY (column1, column2, ... column_n)
REFERENCES 상위 테이블 (column1, column2, ... column_n)
);
-- 생성 예시
CREATE TABLE supplier
( supplier_id numeric(10) not null,
supplier_name varchar2(50) not null,
contact_name varchar2(50),
CONSTRAINT supplier_pk PRIMARY KEY (supplier_id)
);
CREATE TABLE products
( product_id numeric(10) not null,
supplier_id numeric(10) not null,
CONSTRAINT fk_supplier
FOREIGN KEY (supplier_id)
REFERENCES supplier(supplier_id)
);
--복수 컬럼 지정 외래키 생성
CREATE TABLE supplier
( supplier_id numeric(10) not null,
supplier_name varchar2(50) not null,
contact_name varchar2(50),
CONSTRAINT supplier_pk PRIMARY KEY (supplier_id, supplier_name)
);
CREATE TABLE products
( product_id numeric(10) not null,
supplier_id numeric(10) not null,
supplier_name varchar2(50) not null,
CONSTRAINT fk_supplier_comp
FOREIGN KEY (supplier_id, supplier_name)
REFERENCES supplier(supplier_id, supplier_name)
);
ALTER 문 외래키 설정
ALTER 문으로 테이블에 새로운 필드를 추가하거나 수정할 떄도 외래키 제약 조건을 설정할 수 있다.
-- ALTER 문 외래키 제약조건 변경
ALTER TABLE 테이블명
ADD CONSTRAINT 제약조건명
FOREIGN KEY (column1, column2, ... column_n)
REFERENCES 상위 테이블 (column1, column2, ... column_n);
-- 단일 컬럼 참조
ALTER TABLE products
ADD CONSTRAINT fk_supplier
FOREIGN KEY (supplier_id)
REFERENCES supplier(supplier_id);
-- 복수 컬럼 참조
ALTER TABLE products
ADD CONSTRAINT fk_supplier
FOREIGN KEY (supplier_id, supplier_name)
REFERENCES supplier(supplier_id, supplier_name);
Check
(1) Check 설정
Check 제약 조건은 뷰(VIEW), 서브쿼리,다른 테이블 참조열 등에는 적용할 수 없다. 해당 테이블의 열만 참조할 수 있으며 CRETE&ALTER 문을 통해 역시 설정할 수 있다.
CREATE 문 Check 설정
CREATE TABLE 테이블 명
(
column1 datatype null/not null,
column2 datatype null/not null,
...
CONSTRAINT 제약조건명 CHECK (컬렁명 조건) [DISABLE]
);
-- 예시
CREATE TABLE suppliers
(
supplier_id numeric(4),
supplier_name varchar2(50),
CONSTRAINT check_supplier_id
CHECK (supplier_id BETWEEN 100 and 9999)
);
ALTER & DROP & ENABLE & DISABLE 문 Check 설정
-- Check 삭제
ALTER TABLE suppliers
DROP CONSTRAINT check_supplier_id;
-- Check 활성화
ALTER TABLE suppliers
ENABLE CONSTRAINT check_supplier_id;
-- Check 비활성화
ALTER TABLE suppliers
DISABLE CONSTRAINT check_supplier_id;
참고자료
Oracle / PLSQL: Foreign Keys
Oracle / PLSQL: Foreign Keys This Oracle tutorial explains how to use Foreign Keys in Oracle with syntax and examples. What is a foreign key in Oracle? A foreign key is a way to enforce referential integrity within your Oracle database. A foreign key means
www.techonthenet.com
'데이터베이스 > Oracle' 카테고리의 다른 글
[Oracle] 제약조건(Constraints) 의 개념과 종류(1) NOT NULL&UNIQUE (0) | 2023.07.18 |
---|---|
[Oracle] 데이터 타입(1) 문자 데이터 타입과 숫자 데이터 타입 (0) | 2023.07.09 |
[Oracle] 테이블 조회 및 SELECT 사용법 (0) | 2023.07.06 |