-
SQLD Oracle / DDL 정리Web dev/SQL 2022. 8. 15. 23:57728x90반응형
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반응형'Web dev > SQL' 카테고리의 다른 글
SQLD 성능 데이터 모델링 개요 / PDF 요약정리 (0) 2022.10.10 SQLD 데이터 모델의 이해 / PDF 요약정리 (0) 2022.10.10