CREATE
테이블생성
CREATE TABLE [table name](
column1_name culumn1_type [제약조건],
column2_name culumn2_type [제약조건],
column3_name culumn3_type [DEFAULT expr] );
CREATE TABLE ranger (
ranger_no NUMBER,
ranger_nm VARCHAR2(50),
reg_dt DATE DEFAULT SYSDATE);
INSERT INTO ranger(ranger_no, ranger_nm) VALUES (1,'brown');
CTAS (CREATE TABLE ... AS ..)
CREATE TABLE table_name(column,column ...) AS
SUBQUERY
- NOT NULL이외의 제약조건은 복사되지 않는다
CREATE TABLE emp_test AS
SELECT * FROM emp;
--테이블 틀만 빠르게 복사할때
CREATE TABLE emp_test2 AS
SELECT * FROM emp
WHERE 1 != 1;
VIEW
CREATE [OR REPLACE] VIEW view_name [(alias) [, alias])]
AS SUBQUERY;
CREATE OR REPLACE VIEW v_emp AS
SELECT empno, ename, job, mgr, hiredate, deptno
FROM emp;
--ORA-01031: insufficient privileges error
- 뷰생성은 권한이 있어야 한다
-- Sys계정에서 사용자 계정에게 권한 부여
GRANT CREATE VIEW TO jun;
뷰를 통해 얻을 수 있는 이점
- 코드를 재사용 할 수 있다
- SQL 코드가 짧아진다
- 컬럼 접근 제한 (계정별 권한을 통해)
자주 사용하는 테이블 조인결과를 뷰로 활용
CREATE OR REPLACE VIEW v_emp_dept AS
SELECT dname, empno, ename, job ,hiredate
FROM emp, dept
WHERE emp.deptno = dept.deptno;
SEQUENCE
CREATE SEQUENCE sequence_name
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CACHE n | NOCACHE}]
[{ORDER n | NOCACHE}]
[{CYCLE | NOCYCLE}];
옵션
- INCREMENT BY n : 시퀀스 증가치
- START WITH n : 시작값
- MAXVALUE n | NOMAXVALUE : 시퀀스최대값 | 무한대
- MINVALUE n | NOMINVALUE : 시퀀스최소값 | 무한대
- ORDER n | NOCACHE : ORACLE RAC 환경같이 멀티서버에서
- CYCLE | NOCACHE : 최대값 도달시 최소값부터 다시 시작 여부
- CACHE n | NOCACHE : 캐싱할 개수
동시성 경쟁에서 속도를 빠르게 하기위해 사용 - 캐싱된 값들은 이미 사용된것*
rollback 해도 복원안됨
시퀀스 객체를 통해 중복되지 않는 값을 조회
시퀀스 객체에서 제공하는 함수
- nextval ( next value)
시퀀스 객체의 다음값을 요청하는 함수
시퀀스객체값이 하나 증가함 - currval ( current value)
nextval함수를 사용하고 나서 사용할 수 있는 함수
nextval함수를 통해 얻은 값을 다시 확인할때 사용
리턴값에 영향을 미치지 않음
CREATE SEQUENCE seq_emp;
SELECT seq_emp.nextval
FROM dual; -- 1 , 2 , 3 , 4,5 ,6, 7
SELECT seq_emp.currval -- 7, 7, 7 ,7, 7
FROM dual;
INDEX
CREATE [UNIQUE] INDEX index_name ON table (column);
Synonym
CREATE [PUBLIC] SYNONYM synonym_name FOR object
- PUBLIC : 모든사용자가 사용할수 있는 시노님
권한이 있어야 사용가능 - PRIVATE [DEFAULT] : 해당 사용자만 사용가능한 시노님
--hr에서
SELECT *
FROM jun.v_emp;
CREATE SYNONYM v_emp FOR jun.v_emp;
DROP SYNONYM v_emp;
SELECT *
FROM v_emp;
반응형
'IT > SQL' 카테고리의 다른 글
[ORACLE]ALTER (0) | 2022.01.11 |
---|---|
[ORACLE]DROP (0) | 2022.01.11 |
[ORACLE]제약조건 (0) | 2022.01.11 |
[ORACLE]오라클 객체 (0) | 2022.01.11 |
[ORACLE]DELETE (0) | 2022.01.11 |