ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQLD Oracle / DDL 정리
    Web dev/SQL 2022. 8. 15. 23:57
    728x90
    반응형

    SQLD Oracle DDL 정리

     

    DDL 종류 - ROLLBACK 을 할수 없다.

    1. CREATE - DB에 각종 오브젝트를 생성

    2.ALTER - 오브젝트를 변경

    3.RENAME - 오브젝트의 이름을 바꿈

    4.TRUNCATE - 테이블 내의 모든 행(row)을 없앰

    5.DROP - 오브젝트를 제거

     

    1. CRTATE TABLE

    CREATE TABLE table_name(
    	col_1 datatype [NULL|NOT NULL], #1.칼럼이름 2.데이터타입 3.제약조건
        	col_2 datatype [NULL|NOT NULL],
        	...
        	col_n datatype [NULL|NOT NULL],
    );

    ex) 

    CREATE TABLE emp1(
    	empno NUMBER(4) CONSTRAINT emp_pk PRIMARY KEY,
        	ename VARCHAR2(10),
        	sal NUMBER(10) DEAFAULT 200
    );

     

    CTAS - SELECT 한 데이터를 같은구조로 테이블 생성

    CREATE TABLE my_table # 테이블을 먼저 만든 후 INSERT 하는것보다 빠르다 ROLLBACK되지 않는다.
    	AS(SELECT * FROM base_table);

    ex)

    CREATE TABLE empSALES #emp에서 job이 SALESMAN 인 컬럼만 가져와 테이블 생성
    	AS (SELECT * FROM emp
        	WHERE job = 'SALESMAN');

    ex) 테이블 구조만 거져오고 데이터는 입력하지 않는 방법

    CREATE TABLE emp2 
    	AS (SELECT * FROM emp
        	WHERE 1 = 2) #조건이 false이므로 테이터를 가지고 오지 않는다. 구조만 생성

     

    2. ALTER

     

    컬럼추가

    ALTER TABLE tbale_name #1.칼럼읾 2.데이터타입 3.기본값,NULL여부
    ADD (col_1 column-definition
         col_2 column-definition
         ...
         col_n column-definition);

    ex)

    ALTER TABLE emp1
     ADD (phone VARCHAR2(20),
          address VARCHAR2(20));

     

    칼럼 Date tpye 변경

    ALTER TABLE table_name
    MODIFY( col_1 column-definition,
      	col_2 column-definition,
      	...
      	col_n column-definition);

    ex)

    ALTER TABLE emp1
    MODIFY (ename VARCHAR(20));

    칼럼 제거

    ALTER TABLE table_name
    DROP (col_1,col_2);
    
    or
    
    ALTER TABLE table_name
    DROP COLUMN col_1,col_2;

    ex)

    ALTER TABLE emp1
    DROP (address);
    
    or
    
    ALTER TABLE emp1
    DROP COLUMN address;

     

    3) RENAME

    RENAME 컬렴명 TO 변경할컬럼명;

     

    4) TRUNCATE TABLE

    TRUNCATE TABLE #HWM를 reaset하는 것으로 시간이 걸리지 않는다. 
    [schema_name].table_name
    [PRESERVE MATERIALZED VIEW LOG | PURGE MATERIALZED VIEW LOG]
    [DROP STORAGE | REUSE STORAGE];

     

    5) DROP TABLE

    DROP TABLE [schema_name].table_name
    [CASCADE CONSTRAINTS]
    [PURGE];

     

    제약조건

    1. NOT NULL - 칼럼이 NULL값을 포함하지 못하도록 지정

    2. UNIQUE - 칼럼 값이 해당 테이블 전체에서 유일한 값

    3. PRIMARY KEY - NOT NULL & UNIQUE

    4. FOREGIN KEY - 입력되어야 할 값이 다른 테이블의 칼럼 값을 참조

    5. CHECK - 해당 조건을 만족하는 값으로만 입력을 제한

     

    1) PRIMARY KEY

    CREATE TABLE table_name(
        col_1 datatype [NULL | NOT NULL],
        col_2 datatype [NULL | NOT NULL]
        
        CONSTRAINT constraint_name
        PRIMARY KEY (col_1,col_2));

    ex) 테이블 레벨로 만드는 경우

    CREATE TABLE emp1 #테이블 레벨로 만드는 경우
    (empno NUMBER(4),
     ename VARCHAR2(10),
     CONSTRAINT emp1_pk PRIMARY KEY (empno)
    );

    ex) 칼럼 레벨로 만드는 경우

    CREATE TABLE emp1
    (empno NUMBER(4) CONSTRAINT emp1_pk PRIMARY KEY,
     ename VARCHAR2(10)
    );

    ex) 제약조건 추가하기

    ALTER TABLE table_name
    ADD CONSTARINT constraint_name
    PRIMARY KEY (col_1, col_2);
    ALTER TABLE emp1
    ADD CONSTRAINT emp1_pk PRIMARY KEY(empno);

     

    2) FOREIGN KEY

    CREATE TABLE table_name(
    	col_1 datatype [NULL | NOT NULL],
    	col_2 datatype [NULL | NOT NULL],
        CONSTRAINT constraint_name
        FOREIGN KEY(col_1,col_2)
        REFERENCES parent_table(col_1,col_2));

    ex) ALTER 외래키 추가

    ALTER TABLE table_name
    ADD CONSTRAINT constraint_name
    FOREIGN KEY (col_1,col_2)
    REFERENCES parent_table (col_1,col_2)
    ON DELETE CASCADE; #참조하고 있는 부모테이블의 데이터를 삭제하면 관련된 데이터를 함께 삭제시킴

    3) CHECK

    CREATE TABLE table_name(
    	col_1 datatype[NULL | NOT NULL],
    	col_2 datatype[NULL | NOT NULL],
        CONSTRAINT constraint_name
        CHECK(column_name condition)[DISABLE]);

    예시)

    CREATE TABLE emp2
    (empno NUMBER(4) CONSTRAINT emp2_pk PRIMARY KEY,
    deptno NUMBER(2),
    CONSTRAINT deptno_ck
    CHECK(deptno BETWEEN 10 AND 90)
    );

     

     

    ex) 제약 조건의 비활성 /  활성

    #비활성
    ALTER TABLE table_name
    DISABLE CONSTRAINT constraint_name
    CASCADE;
    
    #활성
    ALTER TABLE table_name
    ENABLE CONSTRAINT constraint_name
    CASCADE;

     

    728x90
    반응형

    댓글

Designed by Tistory.