์ค์ฒฉ ์ง์(nested query)
- SQL๋ฌธ์ ๋ค๋ฅธ SQL๋ฌธ ์์ ์ค์ฒฉํ์ฌ ์ฌ์ฉํ๋ ์ง์
- ๋ณต์กํ ์ง์๋ฅผ ์ฝ๊ฒ ํํํ ์ ์๋ ์๋จ์ ์ ๊ณต
- ๋ด๋ถ์ ํฌํจ๋ SQL๋ฌธ์ ๋ถ-์ง์ ๋๋ ๋ด๋ถ์ง์๋ผ๊ณ ํจ
โ
IN, NOT IN
์) '301ํธ' ๊ฐ์์ค์์ ๊ฐ์ค๋ ๊ฐ์ข์ ๊ณผ๋ชฉ๋ช ์ ์ถ๋ ฅ
select title
from course
where course_id in
( select distinct course_id
from class
where classroom = '301ํธ')
๋ถ-์ง์
โฝ class ํ ์ด๋ธ์์ ๊ฐ์์ค์ด '301ํธ'์ธ ๊ต๊ณผ๋ชฉ ๋ฒํธ๋ฅผ ๊ฒ์
์ธ๋ถ-์ง์
โฝ course ํ ์ด๋ธ์์ course_id ํ๋์ ๊ฐ์ด ๋ถ-์ง์์ ๊ฒ์ ๊ฒฐ๊ณผ์ ํฌํจ๋๋ ๋ ์ฝ๋๋ง ์ ํํ์ฌ ๊ณผ๋ชฉ๋ช ์ถ๋ ฅ
โ
์) 2012๋ 2ํ๊ธฐ์ ๊ฐ์ค๋์ง ์์ ๊ณผ๋ชฉ๋ช ์ ๊ฒ์
select title
from course
where course_id not in
( select distinct course_id
from class
where year = 2012 and semester = 2)
SOME, ALL
=some - ์ง์ ๋ ํ๋์ ๊ฐ์ด ๋ถ-์ง์ ๊ฒ์ ๊ฒฐ๊ณผ์ ์กด์ฌํ๋ ์์์ ๊ฐ๊ณผ ๊ฐ์์ง๋ฅผ ๋ํ๋ผ ๋ ์ฌ์ฉ - in๊ณผ ๊ฐ์ ์๋ฏธ |
<=some - ๋ถ-์ง์์ ๊ฒ์ ๊ฒฐ๊ณผ์ ์กด์ฌํ๋ ์์์ ๊ฐ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์์ง๋ฅผ ๋ํ๋ผ ๋ ์ฌ์ฉ |
=all - ์ง์ ๋ ํ๋์ ๊ฐ์ด ๋ถ-์ง์ ๊ฒ์ ๊ฒฐ๊ณผ์ ํฌํจ๋ ๋ชจ๋ ๊ฐ๊ณผ ๊ฐ์์ง๋ฅผ ํ๋จ |
<=all - ์ง์ ๋ ํ๋์ ๊ฐ์ด ๋ถ-์ง์ ๊ฒ์ ๊ฒฐ๊ณผ์ ํฌํจ๋ ๋ชจ๋ ๊ฐ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์์ง๋ฅผ ํ๋จ |
โ
์) ๊ฐ์ฅ ๋ง์ ์๊ฐ ์ธ์์ ๊ฐ์ง ๊ฐ์ข๋ฅผ ๊ฒ์
select c1.course_id, title, year, semester, prof_id
from class c1, course c2
where c1.course_id = c2.course_id
and enroll >= all (select enroll from class)
EXISTS, NOT EXIST
- ๋ถ-์ง์ ๊ฒ์ ๊ฒฐ๊ณผ์ ์ต์ํ ํ๋ ์ด์์ ๋ ์ฝ๋๊ฐ ์กด์ฌํ๋์ง์ ์ฌ๋ถ๋ฅผ ํํ
โฝ exists: ์ต์ํ ํ ๊ฐ์ ๋ ์ฝ๋๊ฐ ์กด์ฌํ๋ฉด ์ฐธ์ด ๋๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ฑฐ์ง
โฝ not exists: ๋ถ-์ง์์ ๊ฒฐ๊ณผ์ ๋ ์ฝ๋๊ฐ ํ๋๋ ์์ผ๋ฉด ์ฐธ์ด ๋๊ณ ํ๋๋ผ๋ ์กด์ฌํ๋ฉด ๊ฑฐ์ง
โ
์) '301ํธ' ๊ฐ์์ค์์ ๊ฐ์ค๋ ๊ฐ์ข์ ๊ณผ๋ชฉ๋ช ์ ์ถ๋ ฅ
select title
from course
where exists
(select *
from class
where classroom = '301ํธ' and
course.course_id = class.course_id)
์) 2012๋ 2ํ๊ธฐ์ ๊ฐ์ค๋์ง ์์ ๊ณผ๋ชฉ๋ช ์ ๊ฒ์
select title
from course
where not exists
(select *
from class
where year = 2012 and
semester = 2 and
course.course_id = class.course_id)
๋ทฐ (view)
- ๊ธฐ์กด ํ ์ด๋ธ๋ก๋ถํฐ ์์ฑ๋๋ ๊ฐ์์ ํ ์ด๋ธ
- ํ ์ด๋ธ์ฒ๋ผ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์์ฑ๋๋ ๊ฒ์ด ์๋๋ผ ๊ธฐ์กด์ ํ ์ด๋ธ๋ค์ ์กฐํฉํ์ฌ ์ฌ์ฉ์์๊ฒ ์ค์ ๋ก ์กด์ฌํ๋ ํ ์ด๋ธ์ธ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ํจ
- ๊ธฐ๋ฐ ํ ์ด๋ธ๋ค์ ๋ํ ํ์ ์ง์๋ฌธ์ผ๋ก ์ ์๋จ
- ๋ทฐ๋ ๊ธฐ๋ฐ ํ ์ด๋ธ๊ณผ ๋๋ฑํ๊ฒ ์ฌ์ฉ
โ
๊ธฐ๋ฅ
- ํน์ ์ฌ์ฉ์์๊ฒ ํ ์ด๋ธ์ ๋ด์ฉ ์ค ์ผ๋ถ๋ฅผ ์จ๊ธธ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ์ ๋ํ ์ ๊ทผ ์ ํ ๋ฐ ๋ณด์์ฑ์ ๋์ผ ์ ์์
- ์ง์์ ๊ฒฐ๊ณผ๋ฅผ ๋ทฐ๋ก ๋ง๋ค์ด์ ์ฌ์ฉํ๋ฉด ๋ณต์กํ ์ง์๋ฅผ ๊ฐ๋จํ ํํ ๊ฐ๋ฅ
โ
โ ๋ทฐ ์์ฑ
ํ์ : create view <๋ทฐ ์ด๋ฆ> as <select๋ฌธ> ๋๋ create or replace view <๋ทฐ ์ด๋ฆ> as <select๋ฌธ>
โ ๋ทฐ ์์ฑ ๊ถํ
- ๋๋ถ๋ถ์ DBMS์์ ์ผ๋ฐ ์ฌ์ฉ์ ๊ณ์ ์๋ ๋ทฐ ์์ฑ ๊ถํ์ด ๋ถ์ฌ๋์ง ์์
- ์ผ๋ฐ ์ฌ์ฉ์๊ฐ ๋ทฐ๋ฅผ ์์ฑํ๋ ค๋ฉด ๊ด๋ฆฌ์๊ฐ ์ฌ์ฉ์ ๊ณ์ ์ ๋ทฐ ์์ฑ๊ณผ ๊ด๋ จ๋ ๊ถํ์ ๋ถ์ฌํด์ผํจ
ํ์ : grant create view to <์ฌ์ฉ์ ๊ณ์ >
โ
์) takes ํ ์ด๋ธ์์ grade ํ๋๋ฅผ ์ ์ธํ ๋๋จธ์ง ํ๋๋ง์ผ๋ก ๊ตฌ์ ๋ ๋ทฐ๋ฅผ ์์ฑ
create or replace view v_takes as
select stu_id, class_id from takes
โ ๋ทฐ ์ฌ์ฉ
- ๋ทฐ์ ๋ํด insert, update, delete ๋ฌธ์ ์คํ
- ๋ทฐ ์์ฑ์ ์ฌ์ฉ๋ ํ ์ด๋ธ์ ๋ํด ๊ทธ ๊ฒฐ๊ณผ๊ฐ ์ ์ฉ๋จ
โ
โ ๋ทฐ ์ญ์
ํ์ : drop view <๋ทฐ ์ด๋ฆ>
โ