[SQL] 데이터 정의어 : DDL

아임펭·2024년 5월 10일

SQL

목록 보기
2/9

1. 데이터 정의어(DDL)

데이터 정의어는 데이터를 생성(CREATE), 추가 및 변경(ALTER), 객체 삭제(DROP), 데이터 삭제(TRUNCATE)의 역할을 하는 명령어입니다.
데이터 베이스를 구축, 설계를 목적으로 사용합니다.

DDL 사용 종류로는
CREATE TABLE, CREATE SCHEMA, CREATE DOMAIN, CREATE VIEW, CREATE INDEX, ALTER TABLE, DROP 등이 있습니다.

1) CREATE TABLE

테이블 생성을 위해 사용합니다.

🟢 테이블 생성

CREATE TABLE `테이블명` 
(
  `칼럼1` 데이터타입 [DEFAULT 기본값][NOT NULL]
  [, PRIMARY KEY (기본키_칼럼명)]
  [, UNIQUE (대체키_칼럼명)]
  [, FOREIGN KEY (외래키_속성명)][REFERENCES]
  [, CONSTRINT 제약조건명][CHECK (조건식)]
)

▪테이블을 생성할 때는 "CREATE TABLE 테이블명 ( 칼럼 내용 )" 으로 생성이 가능합니다.
▪테이블명과 칼럼명은 ``(백틱)기호를 사용하여 감싸주는 것이 좋습니다. (문자를 입력할 때 ' 와 구분을 위함)
▪칼럼명 뒤에는 데이터타입, NULL여부, 키 설정을 입력할 수 있습니다.

-- 테이블 생성 예제
CREATE TABLE `member` (
	`no` INT AUTO_INCREMENT PRIMARY KEY,
    `id` VARCHAR(10) NOT NULL,
    `passwd` VACHAR(20) NOT NULL
)

아이디와 비밀번호를 저장하는 member 테이블을 생성하는 예제입니다
✔ member 테이블은 칼럼 값으로 no, id, passwd를 가집니다
✔ no 칼럼은 AUTO_INCREMENT 으로 데이터 행이 추가될 때마다 자동으로 숫자가 증가되는 값입니다
✔ no 칼럼에 PRIMARY KEY로 기본키로 지정했습니다

📌데이터타입

SQL에서 사용하는 다양한 데이터타입 중 많이 사용되는 타입

숫자형 데이터 타입

숫자형구분데이터타입설명
정수형정수INT4Byte, 0 ~ 232-1자리
BIGINT8Byte, 0 ~ 28-1자리
실수형고정DEMICAL(p,s)p : 전체 자리수, s : 소수점 자리수
부동FLOAT4Byte
DOUBLE8Byte

문자형 데이터 타입

문자구분데이터타입설명
문자형고정CHAR(n)고정 길이 문자, 1~255Byte, 속도가 빠름
가변VARCHAR(n)가변 길이 문자, 1~65,535Byte, 용량에 좋음

긴글이나 html소스 저장

문자데이터타입설명
문자열text최대 길이 65535자, html 소스 저장 시 크기가 작을 수 있음
mediumtext최대 길이는 16777215자

날짜/시간 데이터 타입

시간형구분데이터타입설명
시간형날짜DATEYYYY-MM-DD
시간TIMEHHH:MM:SS
날짜&시간DATETIMEYYYY-MM-DD HHH:MM:SS

2) CREATE ~ SELECT

CREATE를 통해 새로운 테이블을 만들어서 결과를 삽입할 때 사용할 수 있습니다.

기존 테이블의 값을 유지하면서 새로운 테이블에 내용을 복사할 때 사용하기 좋습니다.

🟢 테이블 복사

CREATE TABLE 복사테이블 AS SELECT 필드목록 FROM 원본테이블;

복사할 테이블은 기존에 없는 테이블명을 지정해야 합니다.

-- 예시
CREATE TABLE table_backup_240510 AS SELECT * FROM table;

백업본 생성 시 원본 데이터의 키 속성은 복사되지 않습니다


3) CREATE SCHEMA

테이블이 들어갈 공간인 스키마(schema)를 만드는 역할을 합니다.
스키마 식별을 위해 이름, 소유권자, 허가권자를 정의합니다.

🟢 스키마 생성

CREATE SCHEMA 스키마명 AUTHORIZATION 사용자_id

4) CREATE DOMAIN

특정한 데이터 타입과 속성들의 집합을 정의하기 위한 도메인(domain)을 생성합니다.

🟢 도메인 생성

CREATE DOMAIN 도메인명 [AS] 데이터_타입
			  [DEFAULT 기본값]
              [CONSTRAINT 제약조건명 CHECK (범위값)]

5) CREATE VIEW

쿼리의 결과를 가상의 테이블로 만드는 뷰(view)를 생성합니다.

🟢 뷰 생성

CREATE VIEW 뷰명 [속성명[속성명, ...]]

6) CREATE INDEX

테이블의 데이터를 조회할 때 빠르고 효과적으로 조회할 수 있도록 도와주는 인덱스(index)를 생성합니다.

🟢 인덱스 생성

CREATE [UNIQUE] INDEX 인덱스명 ON 테이블명 (속성명 [ASC|DESC])[CLUSTER]

7) ALTER TABLE

테이블 정의 변경할 때 사용합니다.

🟢 테이블 변경

-- 추가
ALTER TABLE 테이블명 ADD 속성명 데이터_타입
-- 변경
ALTER TABLE 테이블명 ALTER 속성명 데이터_타입
-- 속성 삭제
ALTER TABLE 테이블명 DROP COLUMN 속성명 (CASCADE)

8) DROP

스키마, 도메인, 테이블, 뷰, 인덱스, 제약 조건 등 제거할 때 사용합니다.

🟢 제거

-- 스키마 제거
DROP SCHEMA 스키마명 [CASCADE|RESTRICT]
-- 도메인 제거
DROP DOMAIN 도메인명 [CASCADE|RESTRICT]
-- 테이블 제거
DROP TABLE 테이블명 [CASCADE|RESTRICT]
-- 뷰 제거
DROP VIEW 뷰명 [CASCADE|RESTRICT]
-- 인덱스 제거
DROP INDEX 인덱스명 [CASCADE|RESTRICT]
-- 제약조건 제거
DROP CONSTRAINT 제약조건명

9) TRUNCATE

테이블의 구조는 남겨두고 데이터만 삭제하는 경우에 사용합니다.

🟢 데이터 삭제

TRUNCATE TABLE 테이블
profile
I'm peng

0개의 댓글