일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 딥레이서 보상함수
- 그라파나 시각화
- Solution Architecture
- AWS 딥레이서
- 깃허브 액션
- jenkins
- livenessPorbe
- blue-green
- EFS CSI Driver
- headless service
- LoadBalancer Controller
- kubernetes 동작 원리
- helm
- Firelens
- Kubernetes
- EKS 클러스터
- Aurora cluster
- Prometheus install
- 그라파나 대시보드
- 로드밸런서 컨트롤러
- 솔데스크
- terraform
- 딥레이서
- grafana on kubernetes
- 쿠버네티스 컴포넌트
- 쿠버네티스
- github action 사용법
- SAA 합격 후기
- 메탈LB
- Kubernets on Jenkins
Archives
mingming
Oracle - 제약 조건 & Subquery 본문
제약 조건
- 제약 조건은 테이블 레벨에서 규칙을 강제 적용합니다.
- 제약 조건은 데이터베이스의 일관성 및 무결성을 보장합니다.
제약 조건 | 설명 |
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) (3) | 2023.10.07 |
Oracle - SQL (DML) (0) | 2023.10.07 |
Oracle - SQL Query (2) (0) | 2023.10.06 |