본문 바로가기

[2016 - 2019] 학부 정리/DataBase

[DB공부] 10. DDL

테이터베이스 객체

1. 테이블 : 기본저장 단위, 행으로 구성

2. 뷰 : 하나 이상의 테이블에 있는 데이터의 부분집합을 논리적으로 나타냄

3. 시퀀스 : 숫자 값을 생성 

4. 인덱스 : 일부 query 성능을 향상

5. 동의어 : 객체에 다른 이름을 부여


이름 지정 규칙

테이블의 이름 및 열 이름의 규칙

1. 문자로 시작

2. 길이 : 1-30자

3. A-Z, a-z, 0-9, _,$,#만 가능

4. 동일한 유저가 소유한 다른 객체의 이름과 중복되지 않아야 한다.

5. Oracle 서버 예약어는 사용할 수 없다.(권장하지 않지만 "" 안에서 사용은 가능..)


다른 유저가 소유한 테이블은 소유자의 이름을 접두어로 사용해야 한다.


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));


not null -> check

CONSTRAINT emp_salary_min CHECK (salary > 0)


다른 테이블에서 Foreign key로 사용되는 Primary key를 포함한 행은 삭제할 수 없습니다.


11. 뷰생성

CREATE VIEW empvu80 

AS SELECT employee_id, last_name, salary 

FROM employees 

WHERE department_id = 80;


테이블처럼 뷰에서도 데이터를 검색할 수 있습니다. 전체 뷰나 특정 행과 열의 내용을 표시할 수 있습니다.


뷰수정

CREATE OR REPLACE VIEW empvu80 (id_number, name, sal, department_id)

 AS SELECT employee_id, first_name || ' ' || last_name, salary, department_id 

FROM employees 

WHERE department_id = 80; 


뷰제거

DROP VIEW empvu80;


시퀀스 생성

CREATE SEQUENCE dept_deptid_seq 

                         INCREMENT BY 10 

                         START WITH 120 

                         MAXVALUE 9999 

                         NOCACHE NOCYCLE;