DDL이란 Data Definition Languaged의 약어로 데이터 정의어를 뜻한다.
데이터 정의어란 데이터베이스를 정의하는 언어이며, 데이터를 생성, 수정, 삭제하는 등의 데이터의 전체의 골격을 결정하는 역할을 하는 언어이다.
종류
- create
- alter
- drop
- truncate
대부분 직접적으로 구조에 관한 명령어들이다.
데이터를 담는 구조는 기본적으로 table을 생각 할 수 있지만 더 많은 종류가 존재한다.
- table : 데이터를 저장하는 기본 저장 단위이고, 행과 열로 구성
- index : 검색 속도를 향상시키기 위한 db 오브젝트
- view : 테이블을 바라보는 쿼리문이 출력되는 결과(하나 이상의 테이블에 있는 데이터의 부분 집합)
- sequence : 일련번호 생성기(번호를 생성하는 db 오브젝트)
- synonym : 테이블의 또 다른 이름을 부여
CREATE
[ TABLE ]
-- 기본 테이블 생성 방식
create table 테이블명(
컬럼명 데이터유형(길이),
컬럼명 데이터유형(길이),
컬럼명 데이터유형(길이)
);
-- 테이블 구조와 데이터 모두 복사
CREATE TABLE 생성할_테이블명 AS
SELECT 컬럼1, 컬럼2, ...
FROM 복사할_테이블명;
컬럼명은 변수명이 되고, 데이터 유형은 대표적인 몇가지만 알아보자.
데이터 유형 | 설명 |
VARCHAR2 | 가변 크기 문자열 데이터 형식입니다. UTF-8 문자 인코딩을 사용합니다. |
CHAR | 고정 크기 문자열 데이터 형식입니다. UTF-8 문자 인코딩을 사용합니다. |
INT | 크기: 4 Byte |
DATE | SQL Server에서 날짜를 정의합니다. |
[ SEQUENCE ]
CREATE SEQUENCE 시퀀스명
START WITH n
INCREMENT BY n
MAXVALUE n | NOMAXVALUE
MINVALUE n | NOMINVALUE
CACHE n
NOORDER | ORDER
NOCYCLE | CYCLE
- START WITH : 초기화 값
- INCREMENT BY : 증가값
- MAXVALUE : 최대값
- MINVALUE : 최소값
- CACHE : 시퀀스를 빨리 제공하기 위해 메모리에 캐쉬 하는 갯수를 지정합니다. 기본값은 20
- NOORDER | ORDER : 기본값은 NOORDER 입니다. 병렬서버를 사용할 경우 요청 순서에 따라 정확하게 시퀀스를 생성하기를 원할 때 ORDER로 지정합니다. 단일서버일 경우 이 옵션과 관계 없이 정확히 요청 순서에 따라 시퀀스가 생성됩니다.
- NOCYCLE | CYCLE : 기본값을 NOCYCLE 입니다. CYCLE로 지정하면 MAXVALUE에 도달 했을 때 다시 MINVALUE부터 시작하게 됩니다.
예제
CREATE SEQUENCE SEQ_BOARD
MINVALUE 1
MAXVALUE 9999999999999999999999999999
INCREMENT BY 1
START WITH 1
CACHE 20
NOORDER
NOCYCLE;
[ VIEW ]
- 뷰는 쿼리의 결과를 가상의 테이블로 만드는 것을 말합니다.
--기본 구문
CREATE OR REPLACE VIEW [스키마.][뷰 NAME] AS
SELECT문;
--예제
CREATE OR REPLACE VIEW V1 AS
SELECT
CUS.NAME,
CUS.ADDRESS,
CON.EMAIL,
CON.PHONE
FROM CUSTOMERS CUS
LEFT OUTER JOIN CONTACTS CON ON CUS.CUSTOMER_ID = CON.CUSTOMER_ID
WHERE CON.CONTACT_ID IS NOT NULL
ORDER BY NAME;
[ INDEX ]
- 인덱스는 데이터베이스의 모든 블록을 다 읽지 않고, 목적한 데이터가 위치해 있는 블록만을 읽어들이므로, 적절한 상황에서 사용하면 작업을 효율적으로 만들 수 있습니다.
-- 인덱스 하나 생성
create index 인덱스이름K on 테이블이름A(컬럼이름X);
-- 인덱스 한개 이상 생성
create index 인덱스이름K on 테이블이름A(컬럼이름X, 컬럼이름Y);
index 생성 시 고유한 값으로 지정하고 싶다면 unique를 지정하면 된다.
create unique index 인덱스이름K on 테이블이름A(컬럼이름X);
index 생성에는 더 많은 사용법이 있지만 이 글에서는 간단하게 이정도만 알아보자.
[ SYNONYM ]
- 동의어(SYNONYM, 시노님)란, SQL에서 객체에 붙인 별명과 유사한 개념입니다.
-- synonym 생성
create synonym 동의어이름s for 객체A;
-- synonym 생성 및 갱신
create or replace synonym 동의어이름s for 객체A;
ALTER
[ TABLE ]
-- 컬럼 추가
ALTER TABLE table_name ADD COLUMN ex_column varchar(32) NOT NULL;
-- 컬럼 변경
ALTER TABLE table_name MODIFY COLUMN ex_column varchar(16) NULL;
-- 컬럼 이름까지 변경
ALTER TABLE table_name CHANGE COLUMN ex_column ex_column2 varchar(16) NULL;
-- 컬럼 삭제
ALTER TABLE table_name DROP COLUMN ex_column;
-- 테이블 이름 변경
ALTER TABLE table_name1 RENAME table_name2;
-- 제약조건 지정(이름x)
ALTER TABLE [테이블명] ADD [제약조건](컬럼명)
ALTER TABLE [테이블명] MODIFY [컬럼명] [제약조건]
-- 제약조건 지정(이름o)
ALTER TABLE [테이블명] ADD CONSTRAINT [제약조건명] [제약조건](컬럼명)
-- 제약조건 삭제
ALTER TABLE [테이블명] DROP CONSTRAINT [제약조건명]
[ INDEX ]
-- 인덱스명 변경
ALTER INDEX [ IF EXISTS ] 이름 RENAME TO 새이름
-- 해당 인덱스의 저장 위치를 지정한 테이블스페스로 바꾸기
ALTER INDEX [ IF EXISTS ] 이름 SET TABLESPACE 테이블스페이스이름
--변경하려는 인덱스에 하위 인덱스를 추가
ALTER INDEX 이름 ATTACH PARTITION 인덱스이름
DROP
[ TABLE ]
-- 테이블과 테이터 삭제
DROP TABLE 테이블명;
-- 제약조건까지 삭제
DROP TABLE 테이블명 CASCADE CONSTRAINTS;
-- 삭제한 테이블을 휴지통에 넣지 않고 삭제
DROP TABLE 테이블명 PURGE;
-- 테이블, 데이터, 제약조건 바로 삭제
DROP TABLE 테이블명 CASCADE CONSTRAINTS PURGE;
[ INDEX ]
DROP INDEX emp_idx01
[ VIEW ]
DROP VIEW 이름;
'DataBase' 카테고리의 다른 글
[SQL] JOIN ON, WHERE 차이 (0) | 2023.03.21 |
---|---|
[SQL] 기본 함수 (0) | 2023.03.21 |
[DB] SQL 구문 순서, 실행 순서 (0) | 2023.03.20 |
[SQL] JOIN - 2 (0) | 2023.03.20 |
[SQL] Join (0) | 2023.03.20 |