๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด? ํ
์ด๋ธ์ด๋ ๋ทฐ, ์ธ๋ฑ์ค ๋ฑ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ์ ์ํ๋ ๋ชจ๋ ๊ฒ์ ์ผ์ปซ๋ ๋ง.
(๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช)
๊ฐ์ฒด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ์ค์ฒด๋ฅผ ๊ฐ์ง๋ ์ด๋ค ๊ฒ. ๊ฐ์ฒด์ ์ข ๋ฅ์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋๋ ๋ด์ฉ๋ ๋ฌ๋ผ์ง. ์ง๊ธ๊น์ง ํ์ตํ ๊ฒ ์ค ๊ฐ์ฒด์ ํด๋นํ๋ ๊ฒ์ ํ ์ด๋ธ! (๊ณ ๋ก select๋ insert ๋ฑ์ SQL๋ช ๋ น์ด๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ์กด์ฌํ๋ ๊ฒ์ด ์๋๋๊น ๊ฐ์ฒด๊ฐ ์๋~!)
๊ฐ์ฒด ์ด๋ฆ ๋ถ์ผ ๋ ์ค์ํ ๊ฒ?
๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๋ ์คํค๋ง๋ผ๋ ๊ทธ๋ฆ ์์์ ๋ง๋ค์ด์ง. ๊ฐ์ฒด์ ์ด๋ฆ์ด ๊ฐ์๋ ์คํค๋ง๊ฐ ์๋ก ๋ค๋ฅด๋ค๋ฉด ์๊ด์์! ์คํค๋งA์ fooํ
์ด๋ธ, ์คํค๋งB์ fooํ
์ด๋ธ -> NO ์๊ด.
-> ์ด์ ๊ฐ์ ํน์ง ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๋ '์คํค๋ง ๊ฐ์ฒด'๋ผ๊ณ ๋ถ๋ฆฌ๊ธฐ๋ ํจ. ์ค์ ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ
์ด๋ธ์ ์์ฑํด์ ๊ตฌ์ถํด๋๊ฐ๋ ์์
์ '์คํค๋ง ์ค๊ณ'๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํจ. ์ด๋ ์คํค๋ง๋ SQL๋ช
๋ น์ DDL์ ์ด์ฉํด ์ ์.
MySQL์์๋ CREATE DATABASE๋ช ๋ น์ผ๋ก ์์ฑํ '๋ฐ์ดํฐ๋ฒ ์ด์ค'๊ฐ ์คํค๋ง๊ฐ ๋จ.
์คํค๋ง๋ '๋ค์์คํ์ด์ค(namespace)'๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํจ!
๐ create tables ํ
์ด๋ธ๋ช
(
์ด ์ ์1,
์ด ์ ์2,
...
) ๐
์ด๋ช ์ ์ด์ ๋ถ์ด๋ ์ด๋ฆ, ์๋ฃํ์ integer๋ varchar ๋ฑ์ ์ง์ . ํนํ, char๋ varchar์ ๊ฐ์ ๋ฌธ์์ดํ์ผ๋ก ์ง์ ํ ๋๋ ์ต๋๊ธธ์ด๋ฅผ ๊ดํธ๋ก ๋ฌถ์ด์ฃผ๊ธฐ.
๊ธฐ๋ณธ๊ฐ์ default๋ก ์ง์ ํ๋ ์๋ฃํ์ ๋ง๋ ๋ฆฌํฐ๋ด๋ก ๊ธฐ์ . ๊ธฐ๋ณธ๊ฐ ์๋ต ๊ฐ๋ฅ.
์ด์ด NULL์ ํ์ฉํ ๊ฒ์ธ์ง ์ง์ ๊ฐ๋ฅ. NOT NULL์ด๋ผ๊ณ ์ง์ ํ๋ฉด ์ ์ฝ์ด ๊ฑธ๋ฆฌ๊ณ NULLํ์ฉ ์๋จ.
๊ทธ๋ ๋ค๋ฉด!!1 create table ๋ช ๋ น์ผ๋ก sample62 ํ ์ด๋ธ์ ์ ์ํ ๋ค desc๋ก ์ด ๊ตฌ์ฑ์ ํ์ธํด๋ณด์ฅ.
๐ create table sample62( # ํ
์ด๋ธ์ด๋ฆ: sample62
-> no integer NOT NULL, # ์ด์ด๋ฆ no, a, b
-> a VARCHAR(30), # ๊ฐ ํ
์ด๋ธ์ ํน์ฑ๋ค, integer, varchar, date
-> b DATE); ๐
๐ drop table ํ
์ด๋ธ๋ช
๐
๐ truncate table ํ
์ด๋ธ๋ช
๐
๐ alter table ํ
์ด๋ธ๋ช
๋ณ๊ฒฝ๋ช
๋ น ๐
ํ ์ด๋ธ์ ์์ฑํ ๋ค์๋ ์ด์ ์ถ๊ฐํ๊ฑฐ๋ ๋ฐ์ดํฐ ์ต๋๊ธธ์ด๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฑ ๊ตฌ์ฑ์ ๋ฐ๊ฟ์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์ข ์ข ์๊น. ์ด๋ ํ ์ด๋ธ์ด ๋น์ด์์ผ๋ฉด drop table๋ก ํ ์ด๋ธ ์ญ์ ํ๊ณ ๋ณ๊ฒฝํ ํ ์ด๋ธ ๊ตฌ์กฐ์ ๋ง์ถฐ create table์ ์คํํด ํ ์ด๋ธ์ ๋ณ๊ฒฝํ ์ ์์!
๊ทผ๋ฐ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ฉด drop table๋ก ํ ์ด๋ธ์ ์ญ์ ํ๋ ์๊ฐ ๊ธฐ์กด ๋ฐ์ดํฐ๋ ๋ชจ๋ ์ญ์ ๋จ ใ ใ
์ด๋ alter table ๋ช ๋ น์ ์ฌ์ฉํ๋ฉด ํ ์ด๋ธ์ ์ ์ฅ๋์ด ์๋ ๋ฐ์ดํฐ๋ ๊ทธ๋๋ก ๋จ๊ธด ์ฑ ๊ตฌ์ฑ๋ง ๋ณ๊ฒฝ ๊ฐ๋ฅ.
alter table ๊ธฐ๋ฅ: 1) ์ด์ถ๊ฐ, ์ญ์ , ๋ณ๊ฒฝ 2) ์ ์ฝ ์ถ๊ฐ, ์ญ์
1) ์ด์ถ๊ฐ
๐ alter table ํ
์ด๋ธ๋ช
add ์ด ์ ์ ๐
๐ alter table sample62 add newcol integer; ๐ # newcol(์ด์ด๋ฆ) integer(์๋ฃํ์์ฑ)
์ฌ๊ธฐ์ ์ฃผ์ํ ๊ฒ์!! NOT NULL ์ ์ฝ์ ๋ถ์ธ ์ด์ ์ถ๊ฐํ๊ณ ์ถ๋ค๋ฉด ๋จผ์ NOT NULL๋ก ์ ์ฝ์ ๊ฑด ๋ค์ NULL ์ด์ธ์ ๊ฐ์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ ์ง์ ํ ํ์๊ฐ ์์!
์ด ์์ฑ ๋ณ๊ฒฝ: alter table ์ด ์์ฑ์ ๋ณ๊ฒฝํ ๊ฒฝ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ด modify ํ๋ถ๋ช ๋ น์ ์คํํจ.
๐ alter table ํ
์ด๋ธ๋ช
modify ์ด ์ ์ ๐
๐ alter table sample62 modify newcol varchar(20); ๐
-> ์๋ ๊ฒ int์์ varchar๋ก ํ์ ํ์ด ๋ฐ๋!
๐ alter table ํ
์ด๋ธ๋ช
change [๊ธฐ์กด ์ด ์ด๋ฆ] [์ ๊ท ์ด ์ ์] ๐
์ด ์ด๋ฆ์ ๋ณ๊ฒฝํ ๋๋ Modify ๋ง๊ณ change ์ฌ์ฉ!! change๋ ์ด ์ด๋ฆ๋ฟ๋ง ์๋๋ผ ์ด ์์ฑ๋ ๋ณ๊ฒฝํ ์ ์์!
์ด ์ญ์ : alter table๋ก ์ด์ ์ญ์ ํ ๋๋ drop ํ๋ถ๋ช ๋ น์ ์ฌ์ฉํจ.
๐ alter table ํ
์ด๋ธ๋ช
drop ์ด๋ช
๐
๐ alter table sample62 drop c; ๐
๐ alter table sample modify col varchar(30) ๐
์ฃผ์ํ ์ ! ๊ธฐ์กด์ ํ์ ์กด์ฌํ๋ ๋ฐ์ดํฐ์ ๊ธธ์ด๋ณด๋ค ์๊ฒ ์ง์ ํ ์๋ ์์!
์ด ์ถ๊ฐ: ํ ์ด๋ธ์ ์ด์ ์ถ๊ฐํ๋ ์ผ์ ์์ฃผ ์ผ์ด๋จ. alter table ๋ช ๋ น์ ์จ์!
๐ alter table sample add new_col integer ๐
๐ create table sample631(
a integer NOT NULL, # a ์ด์๋ NOT NULL ์ ์ฝ์ด ๊ฑธ๋ ค์์!
b integer NOT NULL UNIQUE, # b์ด์๋ NOT NULL + UNIQUE ์ ์ฝ.
c VARCHAR(30)
); ๐
๐ create table sample 632(
no INTEGER NOT NULL,
sub_no INTEGER NOT NULL,
name VARCHAR(30),
PRIMARY KEY (no, sub_no)
); ๐
-> ์ด์ no, sub_no, name์ผ๋ก ์ธ๊ฐ, integer ์๋ฃํ์ not null ์ ์ฝ ๊ฑธ์ด์ฃผ๊ณ , name ์ด์ null true๊ฐ ๋์ด์๋ค. ๊ทธ๋ฆฌ๊ณ no, sub_no ์ด์ primary key๋ก ์ง์ !
๐ create table sample632(
no integer NOT NULL,
sub_no INTEGER NOT NULL,
name VARCHAR(30),
CONSTRAINT ๐ฑpkey_sample๐ฑ PRIMARY KEY(no, sub_no) # ์ ์ฝ์ด๋ฆ์ pkey_sample!
); ๐
๐ alter table sample632 modify name varchar (30) NOT NULL; ๐
์๋ ๊ฒ ๋ฐ๋์ด์ฐ~~~ ๐
-> sample632ํ
์ด๋ธ์ name์ด์ NOT NULL๋ก ์ ์ฝ ์ค์ ํจ!
2) ํ
์ด๋ธ ์ ์ฝ ์ถ๊ฐ
alter table์ add ํ๋ถ๋ช
๋ น์ผ๋ก ์ถ๊ฐํ ์ ์์! ๊ธฐ๋ณธํค ์ ์ฝ์ ์ถ๊ฐํด๋ณผ๊น์...?^^ ๊ธฐ๋ณธํค๋ ์๋ ํ
์ด๋ธ์ ํ๋๋ง ์ค์ ํ ์ ์์! ๊ทธ๋์ ์ด๋ฏธ ๊ธฐ๋ณธํค๊ฐ ์ค์ ๋์ด ์๋ ํ
์ด๋ธ์ ์ถ๊ฐ๋ก ๊ธฐ๋ณธํค๋ฅผ ์์ฑํ ์ ์๋ฌ! ๋, ์ด ์ ์ฝ์ ์ถ๊ฐํ ๋์ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ธฐ์กด์ ํ์ ๊ฒ์ฌํด ์ถ๊ฐํ ์ ์ฝ์ ์๋ฐํ๋ ๋ฐ์ดํฐ๊ฐ ์์ ใ
ใ
๋ฌ ๋ฐ์!
๐ alter table sample632 add constraint pkey_sample632 primary key(a); ๐
๐ alter table sample632 modify sub_no varchar(30); ๐
๐ alter table sample633 drop primary key; ๐
-> ์๋ ๊ฒ ๊ธฐ๋ณธํค ์ ์ฝ์ ์ญ์ ํด์ฅผ ใ
ใ
1)๋จผ์ create table๋ก ํ ์ด๋ธ ๋ง๋ค์ด์ฃผ๊ธฐ!
๐ create table sample634(p INTEGER NOT NULL, a VARCHAR(30), CONSTRAINT pkey_sample634 PRIMARY KEY(p)); ๐
์ด p๊ฐ sample634 ํ ์ด๋ธ์ ๊ธฐ๋ณธํค. (+๊ธฐ๋ณธํค๋ก ์ง์ ํ ์ด์ NOT NULL ์ ์ฝ์ด ์ค์ ๋์ด ์์ด์ผํจ!!!๐)
๊ธฐ๋ณธํค๋ ํ ์ด๋ธ์ ํ ํ ๊ฐ๋ฅผ ํน์ ํ ์ ์๋ ๊ฒ์ํค!(๊ฒ์ํค๋ ๊ฒ์ํ ๋์ ํค์๋๋ผ๊ณ ์ดํดํ์ฅ!๐ผ)
๊ธฐ๋ณธํค๋ก ์ค์ ๋ ์ด์ด ์ค๋ณตํ๋ ๋ฐ์ดํฐ ๊ฐ์ ๊ฐ์ง ์ ์๋ค~!
๋จผ์ insert๋ฅผ ์ฌ์ฉํด์ sample634์ ์ธ๊ฐ์ ํ์ ์ถ๊ฐํจ!
๐ insert into sample634 values(1, '์ฒซ์งธ์ค');
๐ insert into sample634 values(2, '๋์งธ์ค');
๐ insert into sample634 values(3, '์
์งธ์ค');
์ด๋ p ์ด์ ๊ฐ์ด ๊ฐ๊ฐ 1,2,3์ผ๋ก ์ค๋ณตํ์ง ์์! ๊ทธ๋ผ ์ด๋ฏธ ์กด์ฌํ๋ ๊ฐ์ธ 2๋ก ๋ค์ ํ๋ฒ ํ์ ์ถ๊ฐํด๋ณผ๊น์~?ใ
ใ
-> ์ค๋ณต๋ผ์ ์๋ฌ๊ฐ ๋ฌ๋น! ๊ธฐ๋ณธํค์ ์ฝ์ ์๋ฐ๋๋ค๋ ๋ผ!
update ๋ช ๋ น์ ์คํํ ๋๋ ์ ์ฝ์ ์๋ฐํ๋ ๊ฐ์ด ์๋์ง ๊ฒ์ฌํจ!
p๊ฐ 3์ธ ํ์ 2๋ก ๊ฐฑ์ ํ๋๋ฐ ์ฑ๊ณตํ๋ฉด, p=2์ธ ์ด์ด ๋๊ฐ๋ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ update ๋ช ๋ น ์ญ์ ์ ์ฝ์ ์๋ฐ๋๋ฏ๋ก ์คํ๋์ง ์์.
๐ update sample634 SET p=2 where p=3; ๐
-> ์ด์ฒ๋ผ ์ด์ ๊ธฐ๋ณธํค๋ก ์ง์ ํด ์ ์ผํ ๊ฐ์ ๊ฐ์ง๋๋ก ํ๋ ๊ตฌ์กฐ๊ฐ ๋ฐ๋ก ๊ธฐ๋ณธํค ์ ์ฝ!
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ธ๋ฑ์ค์ ์ฐ์ด๋ ๋ํ์ ์ธ ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก๋ '์ด์ง ํธ๋ฆฌ(binary tree)'๊ฐ ์์ผ๋ฉฐ ๊ทธ ๋ค์์ผ๋ก 'ํด์'๊ฐ ์์!
ํ ํ
์ด๋ธ ์ค์บ(full table scan)
์ธ๋ฑ์ค๊ฐ ์ง์ ๋์ง ์์ ํ
์ด๋ธ์ ๊ฒ์ํ ๋๋ ํ ํ
์ด๋ธ ์ค์บ์ด๋ผ ๋ถ๋ฆฌ๋ ๊ฒ์๋ฐฉ๋ฒ์ ์ฌ์ฉ. ํ์ด 1,000๊ฑด ์๋ค๋ฉด ์ต๋ 1,000๋ฒ ๊ฐ์ ๋น๊ตํจ
์ด์ง ํ์(binary search)
์ด์ง ํ์์ ์ฐจ๋ก๋ก ๋์ด๋ ์งํฉ์ ๋ํด ์ ํจํ ๊ฒ์ ๋ฐฉ๋ฒ. ์ฒ์๋ถํฐ ์์๋๋ก ์กฐ์ฌํ๋ ๊ฒ์ด ์๋๊ณ ์งํฉ์ ๋ฐ์ผ๋ก ๋๋์ด ์กฐ์ฌํ๋ ๊ฒ์๋ฐฉ๋ฒ.
์ด์ง ํธ๋ฆฌ(binary tree)
์ด์ง ํ์์ ๊ณ ์์ผ๋ก ๊ฒ์ํ ์ ์๋ ํ์ ๋ฐฉ๋ฒ์ด์ง๋ง ๋ฐ์ดํฐ๊ฐ ๋ฏธ๋ฆฌ ์ ๋ ฌ๋์ด์์ด์ผ ํจ.
๐ create index
๐ drop index
์ธ๋ฑ์ค๋ create index ๋ช ๋ น์ผ๋ก ๋ง๋ ๋น! ์ธ๋ฑ์ค์ ์ด๋ฆ์ ๋ถ์ฌ ๊ด๋ฆฌํ๋๋ฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๊ฐ ๋ ์ง ํ ์ด๋ธ์ ์ด์ฒ๋ผ ์ทจ๊ธ๋ ์ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํ์ ๋ฐ๋ผ ๋ค๋ฆ! SQL Server๋ MySQL์์ ์ธ๋ฑ์ค๋ ํ ์ด๋ธ ๋ด ๊ฐ์ฒด๊ฐ ๋จ. ๊ทธ๋์ ํ ์ด๋ธ ๋ด ์ด๋ฆ์ด ์ค๋ณต๋์ง ์๋๋ก ์ง์ ํด ๊ด๋ฆฌ!
์ธ๋ฑ์ค๋ฅผ ์์ฑํ ๋๋ ํด๋น ์ธ๋ฑ์ค๊ฐ ์ด๋ ํ ์ด๋ธ์ ์ด๋ ์ด์ ๊ดํ ๊ฒ์ธ์ง ์ง์ ํ ํ์๊ฐ ์์. ์ด์ ๋ณต์๋ก๋ ์ง์ ๊ฐ๋ฅ.
๐ create index ์ธ๋ฑ์ค๋ช
on ํ
์ด๋ธ๋ช
(์ด๋ช
1, ์ด๋ช
2, ...) ๐
๐ drop index ์ธ๋ฑ์ค๋ช
on ํ
์ด๋ธ๋ช
๐
-> ์์์ ๋ง๋ค์ด๋์๊ฑฐ ์ง์์ค!
์ธ๋ฑ์ค๋ ํ ์ด๋ธ์ ์์กดํ๋ ๊ฐ์ฒด์. drop table๋ก ํ ์ด๋ธ์ ์ญ์ ํ๋ฉด ํ ์ด๋ธ์ ์์ฑ๋ ์ธ๋ฑ์ค๋ ์๋์ผ๋ก ์ญ์ . ์ธ๋ฑ์ค๋ง ์ญ์ ํ๋ ๊ฒฝ์ฐ์๋ drop index ์ฌ์ฉ.
์ธ๋ฑ์ค๋ฅผ ์์ฑํด๋๋ฉด ๊ฒ์์ด ๋นจ๋ผ์ง. ์์ฑํ ์ธ๋ฑ์ค์ ์ด์ where ๊ตฌ๋ก ์กฐ๊ฑด์ ์ง์ ํด select ๋ช ๋ น์ผ๋ก ๊ฒ์ํ๋ฉด ์ฒ๋ฆฌ์๋๊ฐ ํฅ์.
๐ create index isample65 On sample634(a); ๐
-> sample634 ํ
์ด๋ธ์ isample65๋ผ๋ ์ธ๋ฑ์ค๋ฅผ ์์ฑํจ.
-> where ๊ตฌ์ a ์ด์ ๋ํ ์กฐ๊ฑด์์ ์ง์ ํ ๊ฒฝ์ฐ, select ๋ช
๋ น์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํด ๋น ๋ฅด๊ฒ ๊ฒ์ ๊ฐ๋ฅ.
๐ select *from sample634 where a = 'a'; ๐
-> ๊ทธ์น๋ง where ๊ตฌ์ ์กฐ๊ฑด์์ a์ด์ด ์ ํ ์ฌ์ฉ๋์ง ์์ผ๋ฉด select ๋ช ๋ น์ isample62๋ผ๋ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ ์ ์์.
๐ EXPLAIN SQL ๋ช
๋ น ๐
EXPLAIN์ ๋ค์ด์ด ํ์ธํ๊ณ ์ถ์ select ๋ช ๋ น ๋ฑ์ SQL ๋ช ๋ น์ ์ง์ ํ๋ฉด ๋จ! ๋ค๋ง ์ด SQL ๋ช ๋ น์ ์ค์ ๋ก๋ ์คํ๋์ง ์์ ใ ใ ์ด๋ค ์ํ๋ก ์คํ๋๋์ง ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ค๋ช ํด์ค ๋ฟ!
EXPLAIN์ ํ์ค SQL์๋ ์กด์ฌํ์ง ์๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํ ์์กดํ ๋ช ๋ น!
๐ EXPLAIN select * from sample634 where a = 'a'; ๐
sample634์ a์ด์๋ isample65๋ผ๋ index๊ฐ ์์ฑ๋์ด์์. EXPLAIN์ ๋ค๋ฅผ ์๋ select ๋ช ๋ น์ a ์ด์ ๊ฐ์ ์ฐธ์กฐํด ๊ฒ์ํ๋ฏ๋ก isample65์ ์ฌ์ฉํด ๊ฒ์ํจ.
๊ทธ๋ผ where ์กฐ๊ฑด์ ๋ฐ๊พธ๋ฉด ์ด๋ป๊ฒ ๋ณํ ๊น?
EXPLAIN select * from sample634 where no > 10;
-> a ์ด์ ์ฌ์ฉํ์ง ์๋๋ก ์กฐ๊ฑด์ ๋ณ๊ฒฝํ๋ฉด ์ธ๋ฑ์ค ์ฌ์ฉ NONO!
๋ด๋ถ ์ฒ๋ฆฌ์์ select ๋ช ๋ น์ ์คํํ๊ธฐ์ ์์ ์คํ๊ณํ์ ์ธ์. ์คํ๊ณํ์์๋ '์ธ๋ฑ์ค๊ฐ ์ง์ ๋ ์ด์ด where ์กฐ๊ฑด์ผ๋ก ์ง์ ๋์ด ์์ผ๋ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์'์ ๊ฐ์ ์ฒ๋ฆฌ๊ฐ ์ด๋ฃจ์ด์ง. EXPLAIN ๋ช ๋ น์ ์ด ์คํ๊ณํ์ ํ์ธํ๋ ๋ช ๋ น.
์คํ๊ณํ์์๋ ์ธ๋ฑ์ค์ ์ ๋ฌด๋ฟ๋ง ์๋๋ผ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ ๊ฒ์ธ์ง ์ฌ๋ถ์ ๋ํด์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด๋ถ์ ์ต์ ํ ์ฒ๋ฆฌ๋ฅผ ํตํด ํ๋จ.
๐ create view ๋ทฐ๋ช
as select๋ช
๋ น
๐ drop view ๋ทฐ๋ช
-> ๋ทฐ๋ select ๋ช ๋ น์ ๊ธฐ๋กํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด!
๐ select * from (select * from sample634) sq; ๐
-> ์๋ฐ์์ผ๋ก!
๐ select * from sample_view_67; ๐
์์ฃผ ์ฌ์ฉํ๊ฑฐ๋ ๋ณต์กํ select ๋ช ๋ น์ ๋ทฐ๋ก ๋ง๋ค์ด ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์์!
๊ฐ์ ํ ์ด๋ธ: ๋ทฐ๋ ํ ์ด๋ธ์ฒ๋ผ ์ทจ๊ธํ ์ ์์ฐ๋ง, '์ค์ฒด๊ฐ ์กด์ฌํ์ง ์๋๋ค'๋ ์๋ฏธ๋ก '๊ฐ์ ํ ์ด๋ธ'์ด๋ผ ๋ถ๋ฆฌ๊ธฐ๋ ํจ.
select ๋ช ๋ น์ผ๋ก ์ด๋ฃจ์ด์ง๋ ๋ทฐ๋ ํ ์ด๋ธ์ฒ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฑฐ๋ ์ง์ธ ์ ์๋ ์ ์ฅ๊ณต๊ฐ์ ๊ฐ์ง์ง ์์. ์ด ๋๋ฌธ์ ํ ์ด๋ธ์ฒ๋ผ ์ทจ๊ธํ ์ ์๋ค๊ณ ๋ ํด๋ 'select ๋ช ๋ น์์๋ง ์ฌ์ฉ'ํ๋ ๊ฒ์ ๊ถ์ฅํจ.
๋ทฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ DDL๋ก ์์ฑํ๊ฑฐ๋ ์ญ์ .
์์ฑ: create view, ์ญ์ : drop view.
๋ทฐ ์์ฑ
๐ create view ๋ทฐ๋ช
as select ๋ช
๋ น ๐ # as ์๋ต ๋ถ๊ฐ๋ฅ!
๐ create view ๋ทฐ๋ช
(์ด๋ช
1, ์ด๋ช
2, ...) as select ๋ช
๋ น ๐
๋ทฐ์ ์ด ์ง์ ์ ์๋ตํ ๊ฒฝ์ฐ์๋ select ๋ช ๋ น์ select ๊ตฌ์์ ์ง์ ํ๋ ์ด ์ ๋ณด๊ฐ ์์ง๋์ด ์๋์ ์ผ๋ก ๋ทฐ์ ์ด๋ก ์ง์ ๋จ! ๋ฐ๋๋ก ์ด์ ์ง์ ํ ๊ฒฝ์ฐ์๋ select ๋ช ๋ น์ select ๊ตฌ์ ์ง์ ํ ์ด๋ณด๋ค ์ฐ์ ๋จ.
๋ทฐ ์ญ์
๐ drop view sample_view_67; ๐
1) ๋จธํฐ๋ฆฌ์ผ๋ผ์ด์ฆ๋ ๋ทฐ
2) ํจ์ํ ์ด๋ธ
๐ฆ 6์ฅ ์๋ฃ...! ์ด์ง๋ฌ์... ๊ทธ๋ ์ง๋ง ํ ์์ด๋ฐ! ๐ฆ