#3 Data Definition Language
#3.0 Intoduction
์ฃผ์ ์ถ๊ฐ
-- < ํ์ค ์ฃผ์
/*
์ฌ๋ฌ์ค ์ฃผ์
*/
SQL ๋ช ๋ น์ด
๋/์๋ฌธ์ ๊ตฌ๋ถํ์ง ์์
SQL ์ฟผ๋ฆฌ ๋ ์ธ๋ฏธ์ฝ๋ก ; ๋ถ์ด๊ธฐ
DDL (Data Definition Language) : ๋ฐ์ดํฐ ์ ์ ์ธ์ด
#3.1 Tables
ํ ์ด๋ธ : ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋ ํ ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด ์คํ๋ ๋์ํธ์ ์ ์ฌํ ํ-์ด ํ์์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ ๊ฐ ํ์ ๊ณ ์ ํ ๋ ์ฝ๋, ๊ฐ ์ด์ ๋ ์ฝ๋์ ํ๋๋ฅผ ๋ํ๋ธ๋ค.
#3.2 Create Table
CREATE TABLE movies (
title,
released,
overview,
rating,
director
);
-- CREATE TABLE - SQLite ์์ ์ ํ
์ด๋ธ ์์ฑ์ ์ฌ์ฉ๋จ
-- sqlite๋ ์ด ์ ๋๋ก ์๋ํจ
#3.3 Insert Into Values
DROP TABLE movies;
-- DROP TABLE ํ
์ด๋ธ ์ ๊ฑฐ, ํ์ธ ๋ฉ์์ง ์๊ธฐ์ ํ์ ์ ๊ฐ๊ณ ์ฌ์ฉ
INSERT INTO movies VALUES (
'The Godfather',
1980,
'The Best Movie In The World',
10,
'F.F.C'
);
-- ํ
์ด๋ธ์ ๋ฐ์ดํฐ ์ถ๊ฐ
#3.4 Insert Into Values (part Two)
์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก INSERT INTO ๋ฅผ ํ์ฉํด ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ๋ ๋ฐ๋์ ์ด์ ์์๋ฅผ ์์์ผ ํจ, null ๊ฐ์ผ๋ก ๋ ์ ์์ง๋ง ์ด๋ ๊ทผ๋ณธ์ ์ธ ํด๊ฒฐ์ด ์๋
INSERT INTO movies (title) VALUES ('TLOTR');
INSERT INTO movies (title, rating) VALUES ('TLOTR 2', 10);
INSERT INTO movies (title, rating,released) VALUES ('TLOTR 3', 10, 2003);
-- ๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ํน์ ๊ฐ๋ง ์ถ๊ฐํ ์ ์์, ๊ฐ์ ์ง์ ํ์ง ์์ผ๋ฉด null
INSERT INTO movies (title, rating) VALUES ('ET', 10), ('ET 2', 9);
-- ์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฌ๋ฌ ๋ฐ์ดํฐ ์ฝ์
๊ฐ๋ฅ
#3.5 Data Types
ํ์ง๋ง ์ด๋ ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ๋, ๊ฐ ๋ฐ์ดํฐ์ ํ์ ์ด ๋ค์์ผ ์ ์์. ์๋ฅผ ๋ค์ด title์ text๊ณ rating์ number์ง๋ง ์์ ๊ฐ์ด ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ฉด title์ ์ซ์, rating์ text๊ฐ ์ถ๊ฐ๋๋๊ฑธ ๋ฐฉ์งํ ์ ์์.
๋ฐ๋ผ์ ์๋์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ํ์ ์ ์ค์ (Daya Types์ DB ๋ง๋ค ๋ค๋ฆ)
CREATE TABLE movies (
title TEXT,
released INTEGER, -- 1, 2, 3 ...
overview TEXT,
rating REAL, -- 1.2 9.5 ... ์์ x
director TEXT,
for_kids INTEGER -- 0 or 1 ... sql์์๋ T/F ์ค์ x
-- poster BLOB -- image but DB์ ์ด๋ฏธ์ง๋ฅผ ๋ฃ๋๊ฑด ์์ข์ ์ด๋ฏธ์ง ์ฃผ์๋ฅผ ๋ฃ๋ ๋ฐฉ๋ฒ
) STRICT; -- ์ ํ์
์ด ์๋ ์ ์ค๋ฅ
ํ์ง๋ง ์ด๋ ๊ฒ ํด๋ ์กฐ๊ธ ๋ถ์กฑํจ. rating์ 10์ ๊น์ง๋ง ์ฃผ๊ณ ์ถ์ง๋ง ๊ทธ ์ด์๋ถํฐ ์์๊น์ง ๋ชจ๋ ๊ฐ๋ฅ...
#3.6 Constraints
column ์ ์ถ๊ฐ๋ ๋ฐ์ดํฐ์ ์ ์ฝ ์กฐ๊ฑด์ ์ค ์ ์์
/*
UNIQUE ์ ์ผ๊ฐ
NOT NULL null ๊ธ์ง
DEFAULT ๊ธฐ๋ณธ๊ฐ
*/
CREATE TABLE movies (
title TEXT UNIQUE NOT NULL,
released INTEGER NOT NULL,
overview TEXT NOT NULL,
rating REAL NOT NULL,
director TEXT,
for_kids INTEGER NOT NULL DEFAULT 0
) STRICT;
/*
์์์ ์ํฅ์ ๋ฐ๋ ์กฐ๊ฑด๋ค๋ ์๊ธฐ์ ์๋ํด๋ณด๊ธฐ
*/
#3.7 CHECK Constraint
๋ํ ์ผํ ์ ์ฝ ์กฐ๊ฑด ์ถ๊ฐ
/*
CHECK () - CHECK ๋ค ๋ด์ฉ์ด ์ฐธ์ธ์ง ํ์ธ
BETWEEN A AND B
*/
CREATE TABLE movies (
title TEXT UNIQUE NOT NULL,
released INTEGER NOT NULL CHECK (released > 0),
overview TEXT NOT NULL,
rating REAL NOT NULL CHECK (rating BETWEEN 0 AND 10),
director TEXT,
for_kids INTEGER NOT NULL DEFAULT 0 CHECK (for_kids BETWEEN 0 AND 1)
) STRICT;
#3.8 Recap
+ ๋ด์ฅ FUNCTION ์ฐธ๊ณ
CREATE TABLE movies (
title TEXT UNIQUE NOT NULL,
released INTEGER NOT NULL CHECK (released > 0),
overview TEXT NOT NULL CHECK (LENGTH(overview) <= 100),
rating REAL NOT NULL CHECK (rating BETWEEN 0 AND 10),
director TEXT,
for_kids INTEGER NOT NULL DEFAULT 0 CHECK (for_kids BETWEEN 0 AND 1)
) STRICT;
#3.9 Primary Keys
๊ธฐ๋ณธ ํค - ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ๊ฐ ํ/๋ ์ฝ๋๋ฅผ ๊ณ ์ ํ๊ฒ ์๋ณํ๋ ํ ์ด๋ธ์ ํ๋. ๊ณ ์ ํ ๊ฐ์ด ํฌํจ๋์ด์ผ ํ๋ฉฐ, ๊ธฐ๋ณธ ํค ์ด์ NULL ๊ฐ์ ๊ฐ์ง ์ ์๋ค. ์ฌ๋ฌ ํ๋๊ฐ ํค๋ณธ ํค๋ก ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ๋ณตํฉ ํค๋ผ๊ณ ํ๋ค.
๊ธฐ๋ณธ ํค๋ ๋ถ๋ณํ๊ณ ๊ณ ์ ํด์ผ ํจ
NATURAL PRIMARY KEY - ์์ฐ ๊ธฐ๋ณธํค, ํ ์ด๋ธ์ ๋ฐ์ดํฐ์์ ํ์๋์ด ๊ณ ์ ์๋ณ์๋ก ์ฌ์ฉํ๋ column์ ์๋ฏธ
SURROGATE PRIMARY KEY - ๋์ฒด ๊ธฐ๋ณธํค, ์๋ฏธ ์์ง๋ง ๊ณ ์ ์๋ณ์๋ฅผ ์ํด ์ฌ์ฉํ๋ ์ธ์์ ์ธ ์ด
์์ฐ ๊ธฐ๋ณธํค๋ ์ ์ง๊ฐ ์ด๋ ต๊ธฐ์ ๋์ฒด ๊ธฐ๋ณธํค ์ฌ์ฉ์ด ๊ถ์ฅ๋จ
-- ์์ฐ ๊ธฐ๋ณธํค title
CREATE TABLE movies (
title TEXT PRIMARY KEY UNIQUE NOT NULL,
released INTEGER NOT NULL CHECK (released > 0),
overview TEXT NOT NULL CHECK (LENGTH(overview) <= 100),
rating REAL NOT NULL CHECK (rating BETWEEN 0 AND 10),
director TEXT,
for_kids INTEGER NOT NULL DEFAULT 0 CHECK (for_kids BETWEEN 0 AND 1)
) STRICT;
-- ๋์ฒด ๊ธฐ๋ณธํค movieId
CREATE TABLE movies (
movieId INTEGER NOT NULL PRIMARY KEY,
title TEXT UNIQUE NOT NULL,
released INTEGER NOT NULL CHECK (released > 0),
overview TEXT NOT NULL CHECK (LENGTH(overview) <= 100),
rating REAL NOT NULL CHECK (rating BETWEEN 0 AND 10),
director TEXT,
for_kids INTEGER NOT NULL DEFAULT 0 CHECK (for_kids BETWEEN 0 AND 1)
) STRICT;
-- SQLite_ AUTO INCREMENT ํญ์ ์๋กญ๊ณ ๊ณ ์ ํ ๊ธฐ๋ณธํค ๋ณด์ฅ
PRIMARY KEY & UNIQUE
NULL ํ์ฉ ์ฌ๋ถ
X
O
ํ ์ด๋ธ๋น ๊ฐ์
1
MANY
INDEX ์์ฑ
์๋์ผ๋ก ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค ์์ฑ
NON-ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค ์์ฑ
๋ ์ฝ๋ ์๋ณ
ํ ์ด๋ธ์ด ๊ฐ ๋ ์ฝ๋๋ฅผ ๊ณ ์ ํ๊ฒ ์๋ณํ๋๋ฐ ์ฌ์ฉ
ํน์ ์ด์ ๊ฐ์ด ๊ณ ์ ํจ์ ๋ณด์ฅํ์ง๋ง, ๋ฐ๋์ ๋ ์ฝ๋ ์๋ณ์ฉ์ ์๋
์ธ๋ ํค ์ฐธ์กฐ
๋ค๋ฅธ ํ ์ด๋ธ์ ์ธ๋ ํค๊ฐ ์ฐธ์กฐ ๊ฐ๋ฅ
์ธ๋ ํค์ ์ฐธ์กฐ ๋์์ด ๋ ์ ์์ง๋ง, ์ผ๋ฐ์ ์ด์ง ์์
๋ณ๊ฒฝ ๊ฐ๋ฅ์ฑ
์ผ๋ฐ์ ์ผ๋ก ๋ณ๊ฒฝ ๊ถ์ฅ X
์๋์ ์ผ๋ก ๋ณ๊ฒฝ ์ฉ์ด, ์ฃผ์ ํ์
Last updated
Was this helpful?