SQL ์๋ฆฌ์ฆ (6์ฅ) ๐ชด
<SQL ์ฒซ๊ฑธ์> ์ ๋ณด๊ณ ์ง์ ํ์ตํ๊ณ ๊ธฐ๋กํ๋ ํฌ์คํธ! ๐ฅ
DATABASE ๋ง์คํฐ๋ฅผ ๊ฟ๊พธ๋ฉฐ...๐ฅ
๐ 6์ฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด ์์ฑ๊ณผ ์ญ์
๐ 25๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด
- RDBMS ์ํธ์จ์ด๋ฅผ ์ค์นํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋น์ด์๋ ์ํ! ์ฌ๊ธฐ์ ํ ์ด๋ธ์ด๋ ๋ทฐ, ์ธ๋ฑ์ค, ํ๋ก์์ ๋ฑ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๋ฅผ ์์ฑํด ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ถ.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด
-
๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด? ํ ์ด๋ธ์ด๋ ๋ทฐ, ์ธ๋ฑ์ค ๋ฑ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ์ ์ํ๋ ๋ชจ๋ ๊ฒ์ ์ผ์ปซ๋ ๋ง.
(๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช๐คช) -
๊ฐ์ฒด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ์ค์ฒด๋ฅผ ๊ฐ์ง๋ ์ด๋ค ๊ฒ. ๊ฐ์ฒด์ ์ข ๋ฅ์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋๋ ๋ด์ฉ๋ ๋ฌ๋ผ์ง. ์ง๊ธ๊น์ง ํ์ตํ ๊ฒ ์ค ๊ฐ์ฒด์ ํด๋นํ๋ ๊ฒ์ ํ ์ด๋ธ! (๊ณ ๋ก select๋ insert ๋ฑ์ SQL๋ช ๋ น์ด๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ์กด์ฌํ๋ ๊ฒ์ด ์๋๋๊น ๊ฐ์ฒด๊ฐ ์๋~!)
-
๊ฐ์ฒด ์ด๋ฆ ๋ถ์ผ ๋ ์ค์ํ ๊ฒ?
- ๊ธฐ์กด ์ด๋ฆ์ด๋ ์์ฝ์ด์ ์ค๋ณตํ์ง ์๊ธฐ
- ์ซ์๋ก ์์ํ ์ ์์
- ์ธ๋์ค์ฝ์ด(_) ์ด์ธ์ ๊ธฐํธ๋ ์ฌ์ฉํ ์ ์์
- ํ๊ธ์ ์ฌ์ฉํ ๋๋ ๋๋ธ์ฟผํธ(MySQL์์๋ ๋ฐฑ์ฟผํธ)๋ก ๋๋ฌ์
- ์์คํ
์ด ํ์ฉํ๋ ๊ธธ์ด๋ฅผ ์ด๊ณผํ์ง ์๊ธฐ
ex) foo๋ผ๋ ์ด๋ฆ์ ํ ์ด๋ธ์ ํ๋ฒ ๋ง๋ค๋ฉด, ๊ฐ์ ์ข ๋ฅ์ ํ ์ด๋ธ์ ๋ฌผ๋ก ์ด๊ณ ๋ทฐ์ ๊ฐ์ ๋ค๋ฅธ ์ข ๋ฅ์ ๊ฐ์ฒด ์ญ์ ๋๊ฐ์ ์ด๋ฆ์ผ๋ก ์์ฑํ ์ ์์!
- ์คํค๋ง
-
๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๋ ์คํค๋ง๋ผ๋ ๊ทธ๋ฆ ์์์ ๋ง๋ค์ด์ง. ๊ฐ์ฒด์ ์ด๋ฆ์ด ๊ฐ์๋ ์คํค๋ง๊ฐ ์๋ก ๋ค๋ฅด๋ค๋ฉด ์๊ด์์! ์คํค๋งA์ fooํ ์ด๋ธ, ์คํค๋งB์ fooํ ์ด๋ธ -> NO ์๊ด.
-> ์ด์ ๊ฐ์ ํน์ง ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๋ '์คํค๋ง ๊ฐ์ฒด'๋ผ๊ณ ๋ถ๋ฆฌ๊ธฐ๋ ํจ. ์ค์ ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ์์ฑํด์ ๊ตฌ์ถํด๋๊ฐ๋ ์์ ์ '์คํค๋ง ์ค๊ณ'๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํจ. ์ด๋ ์คํค๋ง๋ SQL๋ช ๋ น์ DDL์ ์ด์ฉํด ์ ์. -
MySQL์์๋ CREATE DATABASE๋ช ๋ น์ผ๋ก ์์ฑํ '๋ฐ์ดํฐ๋ฒ ์ด์ค'๊ฐ ์คํค๋ง๊ฐ ๋จ.
-
์คํค๋ง๋ '๋ค์์คํ์ด์ค(namespace)'๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํจ!
๐ 26๊ฐ ํ ์ด๋ธ ์์ฑ/์ญ์ /๋ณ๊ฒฝ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด์ธ ํ ์ด๋ธ์ ์์ฑ, ์ญ์ , ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ์ ์์๋ณผ๊น!?
- ํ ์ด๋ธ ์์ฑ
- DDL์ ๋ชจ๋ ๊ฐ์ ๋ฌธ๋ฒ์ ์ฌ์ฉํจ. create๋ก ์์ฑ, drop์ผ๋ก ์ญ์ , alter๋ก ๋ณ๊ฒฝ.
ex) ํ ์ด๋ธ์ ์์ฑํ๋ค๋ฉด, create table, ๋ทฐ๋ฅผ ์์ฑํ๋ค๋ฉด create view!
๐ 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 ํ
์ด๋ธ๋ช
๐
- ํ ์ด๋ธ์ญ์ ๊ฐ๋ฅ ! ('์ง์ง ์ญ์ ํ ๋?' ๋ผ๊ณ ์๋ฌผ์ด๋ณด๋๊น ์กฐ์ฌํด์ ์ญ์ ํ๊ธฐ! ๐)
- ๋ฐ์ดํฐ ํ ์ญ์ : drop table ๋ช ๋ น์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํ ์ด๋ธ์ ์ญ์ ํ๋๋ฐ ์ด๋ ํ ์ด๋ธ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ ํจ๊ป ์ญ์ . <-> ํ ์ด๋ธ์ ๊ทธ๋๋ก ๋๊ณ ๋ฐ์ดํฐ๋ง ์ญ์ ํ ๋๋ delete ๋ช ๋ น์ ์ฌ์ฉ. ์ด๋๋ delete ๋ช ๋ น์ where ์กฐ๊ฑด์ ์ง์ ํ์ง ์์ผ๋ฉด ํ ์ด๋ธ์ ๋ชจ๋ ํ์ ์ญ์ ํ ์ ์์!
- delete ๋ช ๋ น์ ํ ๋จ์๋ก ์ฌ๋ฌ ๊ฐ์ง ๋ด๋ถ์ฒ๋ฆฌ๊ฐ ์ผ์ด๋๋ฏ๋ก ์ญ์ ํ ํ์ด ๋ง์ผ๋ฉด ์ฒ๋ฆฌ์๋๊ฐ ์๋นํ ๋ฆ์ด์ง. ์ด๋๋ DDL๋ก ๋ถ๋ฅ๋๋ TRUNCATE TABLE ๋ช ๋ น์ ์ฌ์ฉ!
- TRUNCATE TABLE ๋ช ๋ น์ 1)์ญ์ ํ ํ์ ์ง์ ํ ์ ์๊ณ 2)where๊ตฌ๋ ์ง์ ๋ชปํ์ง๋ง 3)๋ชจ๋ ํ์ ์ญ์ ํด์ผ ํ ๋ ๋น ๋ฅธ ์๋๋ก ์ญ์ ํ ์ ์์!
๐ truncate table ํ
์ด๋ธ๋ช
๐
- ํ ์ด๋ธ ๋ณ๊ฒฝ
- ํ
์ด๋ธ ์์ฑํด๋ ์ด ๊ตฌ์ฑ์ ์ธ์ ๋
๋ณ๊ฒฝ๊ฐ๋ฅ! ์ด๋ ํ ์ด๋ธ ๋ณ๊ฒฝ์ alter 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 ์ด ์ ์ ๐
- ์ด๋๋ ์ด ์ ์๋ create table์ ๊ฒฝ์ฐ์ ๋์ผํจ. modify๋ก ์ด ์ด๋ฆ์ ๋ณ๊ฒฝํ ์ ์์ง๋ง, ์๋ฃํ์ด๋ ๊ธฐ๋ณธ๊ฐ, not null ์ ์ฝ ๋ฑ์ ์์ฑ์ ๋ณ๊ฒฝํ ์ ์์!
๐ alter table sample62 modify newcol varchar(20); ๐
-> ์๋ ๊ฒ int์์ varchar๋ก ํ์ ํ์ด ๋ฐ๋!
- ์ด ์ด๋ฆ ๋ณ๊ฒฝ: alter table๋ก ์ด ์ด๋ฆ์ ๋ณ๊ฒฝํ ๋๋ change ํ๋ถ๋ช ๋ น์ผ๋ก ์ํํ ์ ์์!
๐ alter table ํ
์ด๋ธ๋ช
change [๊ธฐ์กด ์ด ์ด๋ฆ] [์ ๊ท ์ด ์ ์] ๐
-
์ด ์ด๋ฆ์ ๋ณ๊ฒฝํ ๋๋ Modify ๋ง๊ณ change ์ฌ์ฉ!! change๋ ์ด ์ด๋ฆ๋ฟ๋ง ์๋๋ผ ์ด ์์ฑ๋ ๋ณ๊ฒฝํ ์ ์์!
-
์ด ์ญ์ : alter table๋ก ์ด์ ์ญ์ ํ ๋๋ drop ํ๋ถ๋ช ๋ น์ ์ฌ์ฉํจ.
๐ alter table ํ
์ด๋ธ๋ช
drop ์ด๋ช
๐
๐ alter table sample62 drop c; ๐
- alter table๋ก ํ ์ด๋ธ ๊ด๋ฆฌ
- ์ต๋๊ธธ์ด ์ฐ์ฅ: ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ ์~~~์ฒญ ์ปค์ง์๊ฐ ์์! ํนํ ํ ๊ฐ์๊ฐ ๋ง์ ํ ์ด๋ธ์์๋ ๋ฐ์ดํฐ ํ๋์ ํฌ๊ธฐ๋ฅผ ์ต์ ํํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ ์ฅ ๊ณต๊ฐ์ ์ ์ฝํ ์ ์์!
- ์ด๋ด ๋ alter table๋ก ์ด์ ์๋ฃํ๋ง ๋ณ๊ฒฝํด ๋์ํ ์ ์์!
๐ alter table sample modify col varchar(30) ๐
-
์ฃผ์ํ ์ ! ๊ธฐ์กด์ ํ์ ์กด์ฌํ๋ ๋ฐ์ดํฐ์ ๊ธธ์ด๋ณด๋ค ์๊ฒ ์ง์ ํ ์๋ ์์!
-
์ด ์ถ๊ฐ: ํ ์ด๋ธ์ ์ด์ ์ถ๊ฐํ๋ ์ผ์ ์์ฃผ ์ผ์ด๋จ. alter table ๋ช ๋ น์ ์จ์!
๐ alter table sample add new_col integer ๐
๐ 27๊ฐ ์ ์ฝ
- create table๋ก ํ ์ด๋ธ์ ์ ์ํ ๊ฒฝ์ฐ, ์ด ์ด์ธ์ ์ ์ฝ๋ ์ ์ํ ์ ์์์! ๊ทธ์ค ํ๋๊ฐ ๋ฐ๋ก NOT NULL! NOT NULL๋ง๊ณ ๋ ๋ค์ํ ์ ์ฝ์ด ์์! ์์๋ณด์ฅ...^^
- ํ ์ด๋ธ ์์ฑ์ ์ ์ฝ ์ ์
- ์ ์ฝ์ ํ ์ด๋ธ์ ์ค์ ํ๋ ๊ฒ. create table๋ก ํ ์ด๋ธ์ ์์ฑํ ๋ ์ ์ฝ์ ๊ฐ์ด ์ ์ํจ. ๋ฌผ๋ก alter table๋ก ์ ์ฝ์ ์ง์ ํ๊ฑฐ๋ ๋ณ๊ฒฝํ ์ ์์! ์ด๋ NOT NULL ์ ์ฝ ๋ฑ ํ๋์ ์ด์ ๋ํด ์ค์ ํ๋ ์ ์ฝ์ ์ด์ ์ ์ํ ๋ ์ง์ ํจ.
๐ create table sample631(
a integer NOT NULL, # a ์ด์๋ NOT NULL ์ ์ฝ์ด ๊ฑธ๋ ค์์!
b integer NOT NULL UNIQUE, # b์ด์๋ NOT NULL + UNIQUE ์ ์ฝ.
c VARCHAR(30)
); ๐
- a,b ์ด์๋ ๊ฐ๊ฐ ์ ์ฝ์ด ๊ฑธ๋ ค์๋๋ฐ ์ด๊ฑธ '์ด ์ ์ฝ'์ด๋ผ๊ณ ๋ถ๋ฆ. ๋ฐ๋ฉด, ํ ๊ฐ์ ์ ์ฝ์ผ๋ก ๋ณต์์ ์ด์ ์ ์ฝ์ ์ค๋ช
ํ๋ ์ ์ฝ์ ์ค๋ช
ํ๋ ๊ฒฝ์ฐ '๋ณต์์ด์ ์ํ ๊ธฐ๋ณธํค ์ ์ฝ' ์ด๋ผ๊ณ ๋ถ๋ฆ
!
๐ 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๋ก ์ง์ !
- ์ ์ฝ์๋ ์ด๋ฆ์ ๋ถ์ผ ์ ์์! ์ด๋ฆ ๋ถ์ด๋ฉด ๊ด๋ฆฌ๊ฐ ์ฌ์์ง๊ฒ์ฐ~~~
- ์ ์ฝ ์ด๋ฆ์ constraint ํค์๋๋ฅผ ์ฌ์ฉํด ์ง์ ! ๐ฑ
๐ 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!
); ๐
- ์ ์ฝ ์ถ๊ฐ
๊ธฐ์กด ํ ์ด๋ธ์๋ ๋์ค์ ์ ์ฝ์ ์ถ๊ฐํ ์ ์์. ์ด๋ ์ด ์ ์ฝ๊ณผ ํ ์ด๋ธ ์ ์ฝ์ ์กฐ๊ธ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ถ๊ฐ.
1) ์ด ์ ์ฝ ์ถ๊ฐ
- ์ด ์ ์ฝ์ ์ถ๊ฐํ ๊ฒฝ์ฐ alter table๋ก ์ด ์ ์๋ฅผ ๋ณ๊ฒฝ ๊ฐ๋ฅ. ๊ธฐ์กด ํ
์ด๋ธ ๋ณ๊ฒฝํ ๋๋ ์ ์ฝ์ ์๋ฐํ๋ ๋ฐ์ดํฐ๊ฐ ์๋์ง ๋จผ์ ๊ฒ์ฌํจ.
ex) c์ด์ NULL๊ฐ์ด ์กด์ฌํ๋ค๋ฉด alter table ๋ช ๋ น์ ์๋ฌ๊ฐ ๋ฐ์. c์ด์ NOT NULL ์ ์ฝ์ ์ค์ ํด๋ณด์ฅ!
๐ 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); ๐
- ์ ์ฝ ์ญ์
- ํ ์ด๋ธ ์ ์ฝ์ ๋์ค์ ์ญ์ ๊ฐ๋ฅ. ์ด ์ ์ฝ์ ๊ฒฝ์ฐ, ์ ์ฝ์ ์ถ๊ฐํ ๋์ ๋์ผํ๊ฒ ์ด ์ ์๋ฅผ ๋ณ๊ฒฝ. ๋ค์์ ์์ ์ถ๊ฐํ c ์ด์ NOT NULL ์ ์ฝ์ ์ญ์ ํ๋ alter table์ ์์!
๐ alter table sample632 modify sub_no varchar(30); ๐
- ํ ์ด๋ธ ์ ์ฝ์ alter table์ drop ํ๋ถ๋ช ๋ น์ผ๋ก ์ญ์ ํ ์ ์์! ์ญ์ ํ ๋๋ ์ ์ฝ๋ช ์ ์ง์ ํจ. ๊ทผ๋ฐ ์ ์ฝ๋ช ์ ์ง์ ํ์ง ์๊ณ ๋ ์ญ์ ๋ ๊ฐ๋ฅ !
๐ alter table sample633 drop primary key; ๐
-> ์๋ ๊ฒ ๊ธฐ๋ณธํค ์ ์ฝ์ ์ญ์ ํด์ฅผ ใ
ใ
- ๊ธฐ๋ณธํค
- ์ ๋ฆฌ: NOT NULL ์ ์ฝ์ ์ด ์ ์ฝ, ๊ธฐ๋ณธํค ์ ์ฝ์ด ํ ์ด๋ธ ์ ์ฝ.
- ์ด๋, NOT NULL ์ ์ฝ์ ์ค์ ํ๋ ค๋ฉด ๋์ ์ด์๋ NULL ๊ฐ์ด ์กด์ฌํ์ง ์์์ผ ํจ.
- ๊ทธ๋ผ, ๊ธฐ๋ณธํค ์ ์ฝ์ ์ค์ ํ๋ ค๋ฉด ํ ์ด๋ธ์ ์ด๋ค ์กฐ๊ฑด์ ๋ง์กฑํด์ผํ ๊น??
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; ๐
- ์๋ ๊ฒ ์๋ฌ๊ฐ ๋ธ.(p๋ primary key๋๊น)
-> ์ด์ฒ๋ผ ์ด์ ๊ธฐ๋ณธํค๋ก ์ง์ ํด ์ ์ผํ ๊ฐ์ ๊ฐ์ง๋๋ก ํ๋ ๊ตฌ์กฐ๊ฐ ๋ฐ๋ก ๊ธฐ๋ณธํค ์ ์ฝ!
- ๋ณต์์ ์ด๋ก ๊ธฐ๋ณธํค ๊ตฌ์ฑํ๊ธฐ: ๊ธฐ๋ณธํค ์ ์ฝ์๋ ์ด๋ฅผ ๊ตฌ์ฑํ ์ด ์ง์ ์ด ํ์ํจ. ์ด๋ ์ง์ ๋ ์ด์ NOT NULL ์ ์ฝ์ด ์ค์ ๋์ด ์์ด์ผ ํจ. ์ฆ, ๊ธฐ๋ณธํค๋ก๋ NULL๊ฐ์ด ํ์ฉ๋์ง ์์.
- ๊ธฐ๋ณธํค๋ฅผ ๊ตฌ์ฑํ๋ ์ด์ ๋ณต์๋ผ๋ ์๊ด์ด ์์. ๋ณต์์ ์ด์ ๊ธฐ๋ณธํค๋ก ์ง์ ํ์ ๊ฒฝ์ฐ, ํค๋ฅผ ๊ตฌ์ฑํ๋ ๋ชจ๋ ์ด์ ์ฌ์ฉํด ์ค๋ณตํ๋ ๊ฐ์ด ์๋์ง ์๋์ง๋ฅผ ๊ฒ์ฌํจ.
๐ 28๊ฐ ์ธ๋ฑ์ค ๊ตฌ์กฐ
- '์์ธ'์ด๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ฉฐ ์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด ์ค ํ๋.
- ํ ์ด๋ธ์๋ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ์ ์์!
- ์ธ๋ฑ์ค
- ์ธ๋ฑ์ค๋ ํ
์ด๋ธ์ ๋ถ์ฌ์ง ์์ธ์ด๋ผ ํ ์ ์์. ์ธ๋ฑ์ค์ ์ญํ ์ ๊ฒ์์๋์ ํฅ์.
-> ์ฌ๊ธฐ์ '๊ฒ์'์ด๋ select ๋ช ๋ น์ where ๊ตฌ๋ก ์กฐ๊ฑด์ ์ง์ ํ๊ณ ๊ทธ์ ์ผ์นํ๋ ํ์ ์ฐพ๋ ์ผ๋ จ์ ๊ณผ์ ์ ๋งํจ.
-> ์ด ์ฑ ์ ๋ชฉ์ฐจ๋ ์์ธ ์ญ์ ์ธ๋ฑ์ค๋ผ๊ณ ์๊ฐํ๋ฉด ์ข๋ ์ดํดํ๊ธฐ ์ฌ์ธ ๊ฒ.
-> ์ธ๋ฑ์ค๋ ํ ์ด๋ธ๊ณผ๋ ๋ณ๊ฐ๋ก ๋ ๋ฆฝ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๋ก ์์ฑ๋จ. ํ์ง๋ง ์ธ๋ฑ์ค๋ง์ผ๋ก๋ ์๋ฌด๋ฐ ์๋ฏธ๊ฐ ์์. ์ธ๋ฑ์ค๋ ํ ์ด๋ธ์ ์์กดํ๋ ๊ฐ์ฒด๋ผ ํ ์ ์์. ๋๋ถ๋ถ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ํ ์ด๋ธ์ ์ญ์ ํ๋ฉด ์ธ๋ฑ์ค๋ ๊ฐ์ด ์ญ์ ๋จ.
- ๊ฒ์์ ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ
-
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ธ๋ฑ์ค์ ์ฐ์ด๋ ๋ํ์ ์ธ ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก๋ '์ด์ง ํธ๋ฆฌ(binary tree)'๊ฐ ์์ผ๋ฉฐ ๊ทธ ๋ค์์ผ๋ก 'ํด์'๊ฐ ์์!
-
ํ ํ ์ด๋ธ ์ค์บ(full table scan)
์ธ๋ฑ์ค๊ฐ ์ง์ ๋์ง ์์ ํ ์ด๋ธ์ ๊ฒ์ํ ๋๋ ํ ํ ์ด๋ธ ์ค์บ์ด๋ผ ๋ถ๋ฆฌ๋ ๊ฒ์๋ฐฉ๋ฒ์ ์ฌ์ฉ. ํ์ด 1,000๊ฑด ์๋ค๋ฉด ์ต๋ 1,000๋ฒ ๊ฐ์ ๋น๊ตํจ -
์ด์ง ํ์(binary search)
์ด์ง ํ์์ ์ฐจ๋ก๋ก ๋์ด๋ ์งํฉ์ ๋ํด ์ ํจํ ๊ฒ์ ๋ฐฉ๋ฒ. ์ฒ์๋ถํฐ ์์๋๋ก ์กฐ์ฌํ๋ ๊ฒ์ด ์๋๊ณ ์งํฉ์ ๋ฐ์ผ๋ก ๋๋์ด ์กฐ์ฌํ๋ ๊ฒ์๋ฐฉ๋ฒ. -
์ด์ง ํธ๋ฆฌ(binary tree)
์ด์ง ํ์์ ๊ณ ์์ผ๋ก ๊ฒ์ํ ์ ์๋ ํ์ ๋ฐฉ๋ฒ์ด์ง๋ง ๋ฐ์ดํฐ๊ฐ ๋ฏธ๋ฆฌ ์ ๋ ฌ๋์ด์์ด์ผ ํจ.
- ์ ์ผ์ฑ
์ด์ง ํธ๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ์ดํผ๋ค ๋ณด๋ฉด, ๊ฐ์ ๊ฐ์ ๊ฐ์ง๋ ๋ ธ๋๊ฐ ์ฌ๋ฌ ๊ฐ ์์ ๋์ ๊ฒฐ๊ณผ์ ๋ํ ์๋ฌธ์ด ์๊ธธ ์๋ ์์. ์ฌ์ค ์ด์ง ํธ๋ฆฌ์์๋ ์งํฉ ๋ด ์ค๋ณตํ๋ ๊ฐ์ ๊ฐ์ง ์ ์์. ์ฆ, ๋ ธ๋์ ๊ฐ์ง๋ ํฐ ์ชฝ๊ณผ ์์ ์ชฝ์ ๋ ๊ฐ์ง๋ก ๋๋๋ฉฐ, ๊ฐ์ ๊ฐ์ ํ์ฉํ๊ธฐ ์ํด์๋ '๊ฐ์'์ด๋ผ๋ ์ 3์ ๊ฐ์ง๋ฅผ ๊ฐ์ง ํ์๊ฐ ์์.
-> ์ด์ง ํธ๋ฆฌ์๋ ์ค๋ณตํ๋ ๊ฐ์ ๋ฑ๋กํ ์ ์์!
๐ 29๊ฐ ์ธ๋ฑ์ค ์์ฑ๊ณผ ์ญ์
- ์ค์ ๋ก ํ ์ด๋ธ์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด์ฅ!
๐ create index
๐ drop index
- ์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด์ ํ๋๋ก DDL์ ์ฌ์ฉํด์ ์์ฑํ๊ฑฐ๋ ์ญ์ ํจ.
- ํ์ค SQL์๋ create index ๋ช ๋ น์ ์์.
- ์ธ๋ฑ์ค ์์ฑ
-
์ธ๋ฑ์ค๋ create index ๋ช ๋ น์ผ๋ก ๋ง๋ ๋น! ์ธ๋ฑ์ค์ ์ด๋ฆ์ ๋ถ์ฌ ๊ด๋ฆฌํ๋๋ฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๊ฐ ๋ ์ง ํ ์ด๋ธ์ ์ด์ฒ๋ผ ์ทจ๊ธ๋ ์ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํ์ ๋ฐ๋ผ ๋ค๋ฆ! SQL Server๋ MySQL์์ ์ธ๋ฑ์ค๋ ํ ์ด๋ธ ๋ด ๊ฐ์ฒด๊ฐ ๋จ. ๊ทธ๋์ ํ ์ด๋ธ ๋ด ์ด๋ฆ์ด ์ค๋ณต๋์ง ์๋๋ก ์ง์ ํด ๊ด๋ฆฌ!
-
์ธ๋ฑ์ค๋ฅผ ์์ฑํ ๋๋ ํด๋น ์ธ๋ฑ์ค๊ฐ ์ด๋ ํ ์ด๋ธ์ ์ด๋ ์ด์ ๊ดํ ๊ฒ์ธ์ง ์ง์ ํ ํ์๊ฐ ์์. ์ด์ ๋ณต์๋ก๋ ์ง์ ๊ฐ๋ฅ.
๐ create index ์ธ๋ฑ์ค๋ช
on ํ
์ด๋ธ๋ช
(์ด๋ช
1, ์ด๋ช
2, ...) ๐
- ์ธ๋ฑ์ค ์ญ์
- ์ธ๋ฑ์ค๋ drop index ๋ช ๋ น์ผ๋ก ์ญ์ ํจ. drop ํ ๋๋ ๋ค๋ฅธ ๊ฐ์ฒด์ ๋์ผํ๊ฒ ์ธ๋ฑ์ค ์ด๋ฆ๋ง ์ง์ ํ๋ฉด ๋จ. ๋ค๋ง ํ ์ด๋ธ ๋ด ๊ฐ์ฒด๋ก์ ์์ฑํ๋ ๊ฒฝ์ฐ์๋ ํ ์ด๋ธ ์ด๋ฆ๋ ์ง์ ํจ.
๐ 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
- ์ธ๋ฑ์ค ์์ฑ์ ํตํด ์ฟผ๋ฆฌ์ ์ฑ๋ฅ ํฅ์์ ๊ธฐ๋ํ ์ ์์ ! ์ค์ ๋ก ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํด ๊ฒ์ํ๋์ง๋ฅผ ํ์ธํ๋ ค๋ฉด EXPLAIN ๋ช ๋ น์ ์ฌ์ฉํจ!
๐ 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 ๋ช ๋ น์ ์ด ์คํ๊ณํ์ ํ์ธํ๋ ๋ช ๋ น.
-
์คํ๊ณํ์์๋ ์ธ๋ฑ์ค์ ์ ๋ฌด๋ฟ๋ง ์๋๋ผ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ ๊ฒ์ธ์ง ์ฌ๋ถ์ ๋ํด์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด๋ถ์ ์ต์ ํ ์ฒ๋ฆฌ๋ฅผ ํตํด ํ๋จ.
๐ 30๊ฐ ๋ทฐ ์์ฑ๊ณผ ์ญ์
- ๋ทฐ๋ ํ ์ด๋ธ๊ณผ ๊ฐ์ ๋ถ๋ฅ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด ์ค ํ๋!
๐ create view ๋ทฐ๋ช
as select๋ช
๋ น
๐ drop view ๋ทฐ๋ช
- from ๊ตฌ์ ๊ธฐ์ ๋ ์๋ธ์ฟผ๋ฆฌ์ ์ด๋ฆ์ ๋ถ์ด๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒดํํ์ฌ ์ฐ๊ธฐ ์ฝ๊ฒ ํ ๊ฒ์ ๋ทฐ๋ผ๊ณ ํจ!
- ๋ทฐ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๋ ํ ์ด๋ธ์ด๋ ์ธ๋ฑ์ค ๋ฑ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ ์ํ๋ ๋ชจ๋ ๊ฒ์ ๋งํจ! ๋ทฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด ์ค ํ๋! <-> ๋ฐ๋ฉด, select ๋ช ๋ น์ ๊ฐ์ฒด๊ฐ ์๋. select ๋ช ๋ น์ ์ด๋ฆ์ ์ง์ ํ ์๋ ์๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฑ๋ก๋์ง๋ ์๊ธฐ ๋๋ฌธ.
- ์ด์ฒ๋ผ ๋ณธ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๋ก ๋ฑ๋กํ ์ ์๋ select ๋ช ๋ น์ ๊ฐ์ฒด๋ก์ ์ด๋ฆ์ ๋ถ์ฌ ๊ด๋ฆฌํ ์ ์๋๋ก ํ ๊ฒ์ด ๋ทฐ.
- select ๋ช ๋ น์ ์คํํ์ ๋ ํ ์ด๋ธ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒฐ๊ด๊ฐ์ผ๋ก ๋ฐํ. ๋ฐ๋ผ์ ๋ทฐ๋ฅผ ์ฐธ์กฐํ๋ฉด ๊ทธ์ ์ ์๋ select ๋ช ๋ น์ ์คํ๊ฒฐ๊ณผ๋ฅผ ํ ์ด๋ธ์ฒ๋ผ ์ฌ์ฉํ ์ ์์!
-> ๋ทฐ๋ select ๋ช ๋ น์ ๊ธฐ๋กํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด!
- from ๊ตฌ์๋ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์์!
๐ select * from (select * from sample634) sq; ๐
-> ์๋ฐ์์ผ๋ก!
- ์์ ์์์ ์๋ธ์ฟผ๋ฆฌ ๋ถ๋ถ์ '๋ทฐ ๊ฐ์ฒด'๋ก ๋ง๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ select ๋ช ๋ น์ด ๋จ.
๐ select * from sample_view_67; ๐
-
์์ฃผ ์ฌ์ฉํ๊ฑฐ๋ ๋ณต์กํ select ๋ช ๋ น์ ๋ทฐ๋ก ๋ง๋ค์ด ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์์!
-
๊ฐ์ ํ ์ด๋ธ: ๋ทฐ๋ ํ ์ด๋ธ์ฒ๋ผ ์ทจ๊ธํ ์ ์์ฐ๋ง, '์ค์ฒด๊ฐ ์กด์ฌํ์ง ์๋๋ค'๋ ์๋ฏธ๋ก '๊ฐ์ ํ ์ด๋ธ'์ด๋ผ ๋ถ๋ฆฌ๊ธฐ๋ ํจ.
-
select ๋ช ๋ น์ผ๋ก ์ด๋ฃจ์ด์ง๋ ๋ทฐ๋ ํ ์ด๋ธ์ฒ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฑฐ๋ ์ง์ธ ์ ์๋ ์ ์ฅ๊ณต๊ฐ์ ๊ฐ์ง์ง ์์. ์ด ๋๋ฌธ์ ํ ์ด๋ธ์ฒ๋ผ ์ทจ๊ธํ ์ ์๋ค๊ณ ๋ ํด๋ 'select ๋ช ๋ น์์๋ง ์ฌ์ฉ'ํ๋ ๊ฒ์ ๊ถ์ฅํจ.
- ๋ทฐ ์์ฑ๊ณผ ์ญ์
-
๋ทฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ DDL๋ก ์์ฑํ๊ฑฐ๋ ์ญ์ .
-
์์ฑ: create view, ์ญ์ : drop view.
-
๋ทฐ ์์ฑ
๐ create view ๋ทฐ๋ช
as select ๋ช
๋ น ๐ # as ์๋ต ๋ถ๊ฐ๋ฅ!
- create view๋ก ๋ทฐ๋ฅผ ์์ฑํ ๋ค select ๋ช ๋ น์ from ๊ตฌ์ ์ง์ ํด ์ฌ์ฉํ ์ ์์. ๋ทฐ๋ ํ์์ ๋ฐ๋ผ ์ด์ ์ง์ ํ ์๋ ์๋๋ฐ, ์ด ๊ฒฝ์ฐ์๋ ์ด๋ฆ ๋ค์ ๊ดํธ๋ก ๋ฌถ์ด ์ด์ ๋์ดํจ.
๐ create view ๋ทฐ๋ช
(์ด๋ช
1, ์ด๋ช
2, ...) as select ๋ช
๋ น ๐
-
๋ทฐ์ ์ด ์ง์ ์ ์๋ตํ ๊ฒฝ์ฐ์๋ select ๋ช ๋ น์ select ๊ตฌ์์ ์ง์ ํ๋ ์ด ์ ๋ณด๊ฐ ์์ง๋์ด ์๋์ ์ผ๋ก ๋ทฐ์ ์ด๋ก ์ง์ ๋จ! ๋ฐ๋๋ก ์ด์ ์ง์ ํ ๊ฒฝ์ฐ์๋ select ๋ช ๋ น์ select ๊ตฌ์ ์ง์ ํ ์ด๋ณด๋ค ์ฐ์ ๋จ.
-
๋ทฐ ์ญ์
๐ drop view sample_view_67; ๐
- ๋ทฐ์ ์ฝ์
- ๋ทฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๋ก์ ์ ์ฅ์ฅ์น์ ์ ์ฅ๋จ. but ํ ์ด๋ธ๊ณผ ๋ฌ๋ฆฌ ๋๋์ ์ ์ฅ๊ณต๊ฐ์ ํ์๋ก ํ์ง ์์! ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋๋ ๊ฒ์ select ๋ช ๋ น๋ฟ์ด๊ธฐ ๋๋ฌธ.
1) ๋จธํฐ๋ฆฌ์ผ๋ผ์ด์ฆ๋ ๋ทฐ
- ๋ทฐ์ ๊ทผ์์ด ๋๋ ํ ์ด๋ธ์ ๋ณด๊ดํ๋ ๋ฐ์ดํฐ์์ด ๋ง์ ๊ฒฝ์ฐ, ์ง๊ณ์ฒ๋ฆฌ๋ฅผ ํ ๋๋ ๋ทฐ๊ฐ ์ฌ์ฉ๋๋ค๋ฉด ์ฒ๋ฆฌ์๋๊ฐ ๋ง์ด ๋จ์ด์ง. -> ์ด๋ฅผ ์ํด ๋จธํฐ๋ฆฌ์ผ๋ผ์ด์ฆ๋ ๋ทฐ๋ฅผ ์ฌ์ฉ!
- ๋จธํฐ๋ฆฌ์ผ๋ผ์ด์ฆ๋ ๋ทฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ผ์์ ์ผ๋ก ์ ์ฅํด ์ฌ์ฉํ๋ ๊ฒ์ด ์๋๋ผ ํ ์ด๋ธ์ฒ๋ผ ์ ์ฅ์ฅ์น์ ์ ์ฅํด๋๊ณ ์ฌ์ฉ! 1. ๋ทฐ๊ฐ ์ฒ์ ์ฐธ์กฐ๋์์ ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ 2. ์ดํ ๋ค์ ์ฐธ์กฐํ ๋ ์ด์ ์ ์ ์ฅํด ๋์๋ ๋ฐ์ดํฐ ๊ทธ๋๋ก ์ฌ์ฉ.
- MySQL์์๋ ๋จธํฐ๋ฆฌ์ผ๋ผ์ด์ฆ๋ ๋ทฐ๋ฅผ ์ฌ์ฉ๋ถ๊ฐ.
2) ํจ์ํ ์ด๋ธ
- ์๋ธ์ฟผ๋ฆฌ์ ๊ฒฝ์ฐ ๋ทฐ์ select ๋ช ๋ น์ผ๋ก ์ฌ์ฉ ๋ถ๊ฐ. -> ํจ์ํ ์ด๋ธ์ ์ฌ์ฉ!
- ํจ์ ํ ์ด๋ธ์ ํ ์ด๋ธ์ ๊ฒฐ๊ด๊ฐ์ผ๋ก ๋ฐํํด์ฃผ๋ ์ฌ์ฉ์์ ์ ํจ์! ํจ์์๋ ์ธ์๋ฅผ ์ง์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ธ์์ ๊ฐ์ ๋ฐ๋ผ where ์กฐ๊ฑด์ ๋ถ์ฌ ๊ฒฐ๊ด๊ฐ์ ๋ฐ๊ฟ ์ ์์ ! ๊ทธ์ ๋ฐ๋ผ ์๊ด ์๋ธ์ฟผ๋ฆฌ์ฒ๋ผ ๋์ํ ์ ์์!
๐ฆ 6์ฅ ์๋ฃ...! ์ด์ง๋ฌ์... ๊ทธ๋ ์ง๋ง ํ ์์ด๋ฐ! ๐ฆ
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(SQL ์๋ฆฌ์ฆ (6์ฅ) ๐ชด), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@majaeh43/SQL-์๋ฆฌ์ฆ-6์ฅ์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค