riboooo
Daily Traveler 리보
riboooo
전체 방문자
오늘
어제
  • 분류 전체보기 (71)
    • 프로젝트,발표 (2)
    • IT (67)
      • HTML ,CSS (3)
      • JAVA (22)
      • SQL (37)
      • 자료구조,알고리즘 (0)
      • PYTHON (4)
      • 보안 (0)
      • 서버 구축 (0)
      • GITHUB (1)
    • About ribo (2)
      • 커리어 (1)
      • 회고록 (1)
      • 버킷리스트 (0)
      • 일기 (0)
      • 잡담 (0)
    • 책 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • java
  • join
  • 시간 중복 활용
  • ORACLE CASE
  • Django
  • inspectdb
  • ORACLE NULL 함수
  • non-prewise
  • SQL
  • INSTALLED_APPS
  • ORACLE 날짜 관련 함수
  • django설계
  • prewise
  • ORACLE 숫자 함수
  • ORACLE 조건문
  • 자바코딩컨벤션
  • 오라클
  • 네이버핵데이
  • select
  • oracle

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
riboooo

Daily Traveler 리보

[ORACLE]CREATE
IT/SQL

[ORACLE]CREATE

2022. 1. 11. 20:12

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;

뷰를 통해 얻을 수 있는 이점

  1. 코드를 재사용 할 수 있다
  2. SQL 코드가 짧아진다
  3. 컬럼 접근 제한 (계정별 권한을 통해)

자주 사용하는 테이블 조인결과를 뷰로 활용

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 해도 복원안됨

시퀀스 객체를 통해 중복되지 않는 값을 조회

시퀀스 객체에서 제공하는 함수

  1. nextval ( next value)
    시퀀스 객체의 다음값을 요청하는 함수
    시퀀스객체값이 하나 증가함
  2. 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
    riboooo
    riboooo
    최준영 https://github.com/riboooo

    티스토리툴바