뷰 : 논리적으로 하나 이상의 테이블에 있는 데이터의 부분 집합을 나타냄
시퀀스 : 숫자 값 생성기
인덱스 : 질의의 성능을 향상
동의어 : 객체에 다른 이름을 제공
테이블 : 데이터의 저장 단위
레코드 -> 데이터가 저장되는 행
컬럼 -> 데이터를 구별하는 속성
SELECT table_name FROM user_tables;
SELECT DISTINCT object_type FROM user_objects;
SELECT * FROM user_catalog;
테이블 : 기본 저장 단위로 행과 열로 구성
CREATE TABLE employee(
empno number(6),
name varchar2(30) not null,
salary number(8,2),
hire_date date default SYSDATE,
constraint employee_pk primary key (empno)
);
describe employee;
desc employee;
테이블에 새로운 컬럼을 추가
ALTER TABLE employee ADD (addr varchar2(60));
제약 조건 추가
ALTER TABLE employee ADD CONSTRAINT employee_pk
primary key (empno);
테이블의 컬럼을 수정하거나 not null 컬럼으로 변경할 수 있음
ALTER TABLE employee MODIFY (salary number(10,2) not null);
컬럼의 삭제
ALTER TABLE employee DROP COLUMN name;
컬럼명 변경
ALTER TABLE employee RENAME COLUMN salary TO sal;
테이블명 변경
RENAME employee TO employee2;
테이블의 삭제
DROP TABLE employee2;
ON DELETE CASCADE 옵션을 사용하면 부모 테이터를 삭제하면
자식 테이터가 있을 경우 자식 테이터까지 모두 삭제함
부모 데이터를 삭제시 자식 데이터가 있으면 null로 처리
논리적으로 하나 이상의 테이블에 있는 데이터의 부분 집합을 나타냄
CREATE OR REPLACE VIEW emp10_view
as SELECT empno id_number, ename name, sal*12 ann_salary
FROM emp
WHERE deptno=10;
SELECT * FROM emp10_view;
view의 구조 확인
desc emp_info_view;
일반적으로 view는 조회용으로 많이 사용되지만 아래와 같이 데이터를
변경할 수 있음
UPDATE emp10_view SET name='SCOTT' WHERE id_number=7839;
SELECT * FROM emp10_view;
SELECT * FROM emp;
가상열(ann_salary)의 데이터는 변경할 수 없기 때문에 오류 발생
읽기 전용 뷰를 생성하는 옵션
CREATE OR REPLACE VIEW emp20_view as
SELECT empno id_number, ename name, sal*12 ann_salary
FROM emp
WHERE deptno=20
WITH READ ONLY;
읽기 전용 뷰이기 때문에 데이터 변경 불가능
UPDATE emp20_view SET name='DAVID' WHERE id_number=7902;
DROP VIEW emp10_view;
유일한 값을 생성해주는 오라클 객체
시퀀스를 생성하면 기본키와 같이 순차적으로 증가하는 컬럼을 자동적으로 생성할 수 있음.
보통 primary key 값을 생성하기 위해 사용
시작 값이 1이고 1씩 증가하고, 최대값 100000이 되는 시퀀스 생성
CREATE SEQUENCE test_seq
start with 1
increment by 1
maxvalue 100000;
currval : 현재 값을 반환
nextval : 현재 시퀀스 값의 다음 값 반환
주의 sequence를 생성한 후 바로 currval를 호출하면 초기 값이 생성되지
않아서 아래와 같은 오류 발생
[시퀀스 TEST_SEQ.CURRVAL은 이 세션에서는 정의 되어 있지 않습니다]
SELECT test_seq.nextval FROM dual;
ALTER SEQUENCE sequence_name
increment by n
maxvalue n|nomaxvalue
minvalue n|nominvalue
cycle|nocycle
start with는 수정할 수 없음
DROP SEQUENCE sequence_name;
원하는 정보의 위치를 빠르고, 정확하고, 지능적으로
알아낼 수 있는 방법을 제공
테이블의 컬럼에 제약 조건을 설정할 때 Primary key,
unique 로 설정하면 Oracle은 자동으로 이 컬럼에
Unique index 설정 데이터 값이 중복됨이 없이 유일한 값을 가지는 컬럼에 인덱스를 설정했을 때 이를 unique index라 함
자동
테이블 정의에 Primary key 또는 unique 제약 조건을 정의하면 고유 인데그가 자동으로 생성
수동
CREATE UNIQUE INDEX dname_idx ON dept (dname);
CREATE INDEX emp_ename_idx ON emp (ename);
객체의 다른 이름을 생성하여 객체 액세스를 단순화
CREATE SYNONYM emp20 FOR emp20_view;
SELECT * FROM emp20;
DROP SYNONYM emp20;