mingming

Oracle - 제약 조건 & Subquery 본문

새싹 하이브리드 클라우드/Database

Oracle - 제약 조건 & Subquery

mingming_96 2023. 10. 7. 16:20

제약 조건

  • 제약 조건은 테이블 레벨에서 규칙을 강제 적용합니다.
  • 제약 조건은 데이터베이스의 일관성 및 무결성을 보장합니다.
제약 조건 설명
NOT NULL 열에 null 값을 포함할 수 없음을 지정합니다.
UNIQUE 테이블의 모든 행에 대해 값이 고유해야 하는 열 또는 열 조합을 지정합니다.
PRIMARY KEY 테이블의 각 행을 고유하게 식별합니다.
FOREIGN KEY 특정 테이블의 열과 참조 테이블의열 간에 참조 무결성을 설정하고 적용하여 한 테이블의 값이 다른 테이블의 값과 일치하도록 합니다. 
CHECK 참이어야하는 조건을 지정합니다. 

 

제약 조건 정의

열 레벨 제약 조건

CREATE TABLE employees(
             employee_id NUMBER(6) CONSTRAINT emp_id_pk PRIMARY KEY,
             first_name VARCHAR2(20),
             ...);

 

테이블 레벨 제약 조건

CREATE TABLE employees (
             employee_id NUMBER(6),
             first_name  VARCHAR2(20),
             ...
             job_id VARCHAR2(10) NOT NULL,
             CONSTRAINT emp_id_pk PRIMARY KEY(EMPLOYEE_ID));

 

UNIQUE 제약 조건

UNIQUE key 무결설 제약 조건에서는 하나의 열 또는 여러 열에 있는 모든 값이 고유해야 합니다. 즉 테이블의 두 행은 지정된 열 또는 열 집합에서 중복된 값을 가질 수 없습니다. UNIQUE key 제약 조건 정의에 포함된 열 또는 열 집합을 UNIQUE key 라고 합니다. UNIQUE 제약 조건은 테이블 레벨 또는 열 레벨에서 정의됩니다.

CREATE TABLE employees(
             employee_id NUMBER(6),
             last_name VARCHAR2(25) NOT NULL,
             email VARCHAR2(25),
             salary NUMBER(8,2)
             commission_pct NUMBER(2,2)
             hire_date DATE NOT NULL,
             ...
             CONSTRAINT emp_email_uk UNIQUE(email));

 

PRIMARY KEY 제약 조건

각 테이블에는 하나의 Primary key만 생성할 수 있습니다. Primary key 제약 조건은 테이블의 각 행을 고유하게 식별하는 열 또는 집합입니다.

 

FOREIGN KEY 제약 조건

열 또는 열 조합을 Foreign key로 지정하고 동일한 테이블이나 다른 테이블의 Primary key 또는 Unique key 와의 관게를 설정합니다.

테이블 레벨 또는 열 레벨에서 정의됩니다.

CREATE TABLE employees(
             employee_id NUMBER(6),
             last_name VARCHAR2(25) NOT NULL,
             email VARCHAR2(25),
             salary NUMBER(8,2),
             commission_pct NUMBER(2,2)
             hire_date DATE NOT NULL,
             ...
             department_id NUMBER(4)
             CONSTRAINT emp_dept_fk FOREIGN KEY (department_id)
             REFERENCES departments(department_id)
             CONSTRAINT emp_email_uk UNIQUE(email));
  • FOREIGN KEY : 테이블 제약 조건 레벨에서 하위 테이블의 열을 정의합니다.
  • REFERENCES : 테이블 및 상위 테이블의 열을 식별합니다.
  • ON DELETE CASCADE : 상위 테이블의 행이 삭제될 때 하위 테이블의 종속 행을 삭제합니다.
  • ON DELETE SET NULL : 종속 Foreign key 값을 null로 변환합니다.

 

CHECK 제약 조건

  • 각 행이 충족해야 하는 조건을 정의합니다.
  • 다른 테이블의 열을 참조할 수 없습니다.
..., salary NUMBER(2)
CONSTRAINT emp_salary_min CHECK (salary > 0),...

 

Subquery를 사용하여 테이블 생성 

  • CREATE TABLE 문과 AS subquery 옵션을 결합하여 테이블을 생성하고 행을 삽입합니다.
  • 지정된 열 개수와 subquery 열 개수를 일치시킵니다.
  • 열 이름과 기본값을 가진 열을 정의합니다.
CREATE TABLE table
AS subquery
  • 지정한 열 이름으로 테이블이 생성되고 SELECT 문으로 검색한 행이 테이블에 삽입됩니다.
  • 열 정의에는 열 이름과 기본값만 포함될 수 있습니다.
  • 열 사양이 주어지는 경우 열 개수는 subquery SELECT list의 열 개수와 같아야 합니다.
  • 열 사양이 주어지지 않는 경우 테이블의 열 이름은 subquery의 열 이름과 동일합니다.
  • 열 데이터 유형 정의 및 NOT NULL 제약 조건이 새 테이블로 전달됩니다. 명시적 NOT NULL 제약 조건만 상속됩니다. PRIMARY KEY 열은 NOT NULL 기능을 새 열에 전달하지 않습니다. 다른 제약조건 규칙은 새 테이블로 전달되지 않습니다. 하지만 열 정의에 제약 조건을 추가할 수 있습니다.
CREATE TABLE dept_new
AS
SELECT * FROM employees
WHERE department_id = 80;

CREATE TABLE dept_new80
AS
SELECT employee_id, last_name, salary,hire_date
FROM employees
WHERE department_id = 80;

 

'새싹 하이브리드 클라우드 > Database' 카테고리의 다른 글

Oracle - Subquery  (0) 2023.10.07
Oracle - DELETE & TRUNCATE  (0) 2023.10.07
Oracle - SQL (DDL)  (2) 2023.10.07
Oracle - SQL (DML)  (0) 2023.10.07
Oracle - SQL Query (2)  (0) 2023.10.06