λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ’š 개발/λ°μ΄ν„°λ² μ΄μŠ€

[λ°μ΄ν„°λ² μ΄μŠ€] λ·° (View) - 1

by devshin.kr 2021. 7. 13.
728x90
λ‹€μŒ μ±…μœΌλ‘œ κ³΅λΆ€ν•œ λ‚΄μš©μ„ μ •λ¦¬ν–ˆλ‹€.


제λͺ© : λ°μ΄ν„°λ² μ΄μŠ€μ‹œμŠ€ν…œ (Database System Concepts) - 6th Edition
μΆœνŒμ‚¬ : McGraw-Hill Korea
http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788960552036&orderClick=LAG&Kc=

 

Chapter 4. 쀑급 SQL

4.2. λ·°

- λͺ¨λ“  μ‚¬μš©μžκ°€ 전체 논리적 λͺ¨λΈμ„ λ³΄λŠ” 것은 λ°”λžŒμ§ν•˜μ§€ μ•Šλ‹€. λ”κ΅¬λ‚˜, λ³΄μ•ˆμƒ νŠΉμ • μ •λ³΄λŠ” μ‚¬μš©μžμ—κ²Œ μˆ¨κ²¨μ•Ό ν•  ν•„μš”κ°€ μžˆλ‹€.

- 예λ₯Ό λ“€μ–΄, ꡐ수의 ID, 이름, ν•™κ³Ό 이름은 사무원이 μ•Œμ•„λ„ 상관이 μ—†μ§€λ§Œ ꡐ수의 연봉에 λŒ€ν•΄μ„œλŠ” λ³Ό 수 μžˆλŠ” κΆŒν•œμ„ κ°€μ Έμ„œλŠ” μ•ˆ λœλ‹€κ³ ν•˜μž. 이 μ‚¬λžŒμ€ λ‹€μŒκ³Ό 같은 SQL 둜 ν‘œν˜„λœ λ¦΄λ ˆμ΄μ…˜μ„ 봐야 ν•œλ‹€.

select ID, name, dept_name
from instructor;

 

 

- λ³΄μ•ˆ μš”μΈ 이외에도 λ…Όλ¦¬μ  λͺ¨λΈλ³΄λ‹€ νŠΉμ • μ‚¬μš©μžμ˜ 인식에 더 잘 λΆ€ν•©ν•˜λŠ” 개인적인 λ¦΄λ ˆμ΄μ…˜λ“€μ˜ λͺ¨μž„을 생성할 ν•„μš”κ°€ μžˆλ‹€.

- 예λ₯Ό λ“€μ–΄, 2009λ…„ 가을 학기에 λ¬Όλ¦¬ν•™κ³Όμ—μ„œ μ œκ³΅ν•œ λͺ¨λ“  μˆ˜μ—…μ˜ 정보와 μˆ˜μ—…μ΄ 이루어진 건물과 κ°•μ˜μ‹€ 번호λ₯Ό μ•Œκ³  μ‹Άλ‹€κ³  ν•˜μž.

select course.course_id, sec_id, building, room_number
from course, section
where course.course_id = section.course_id
	and course.dept_name = 'Physics'
   	and section.semester = 'Fall'
    	and section.year = '2009';

- μœ„ 질의λ₯Ό μˆ˜ν–‰ν•œ 후에 κ·Έ κ²°κ³Όλ₯Ό μ €μž₯ν•˜κ³  λ‚˜μ„œ μ‚¬μš©μžλ“€μ—κ²Œ μ €μž₯된 μ§ˆμ˜μ–΄ κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μ„ μ œκ³΅ν•  수 μžˆλ‹€.

 

- ν•˜μ§€λ§Œ κ·Έλ ‡κ²Œ ν•œλ‹€λ©΄ instructor, course, section λ¦΄λ ˆμ΄μ…˜μ— κ°±μ‹ μ΄ 일어날 λ•Œλ§ˆλ‹€ μ €μž₯된 μ§ˆμ˜μ–΄ κ²°κ³Όκ°€ instructor, course, section λ¦΄λ ˆμ΄μ…˜λ“€κ³Ό μΌμΉ˜ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— 질의처리λ₯Ό λ‹€μ‹œ μˆ˜ν–‰ν•΄μ•Ό ν•œλ‹€.

 

- λŒ€μ‹  SQL 은 μ§ˆμ˜μ— μ˜ν•΄μ„œ μ •μ˜λ˜λŠ” "가상 λ¦΄λ ˆμ΄μ…˜" μ„ μ œκ³΅ν•œλ‹€. 논리적 λͺ¨λΈμ˜ μΌλΆ€λ‘œμ„œκ°€ μ•„λ‹ˆλΌ 가상적인 λ¦΄λ ˆμ΄μ…˜(virtual relation) μœΌλ‘œμ„œ μ‚¬μš©μžμ—κ²Œ λ³΄μ΄λŠ” λ¦΄λ ˆμ΄μ…˜μ„ λ·°(view) λΌκ³  ν•œλ‹€.

- 주어진 μ‹€μ œ λ¦΄λ ˆμ΄μ…˜λ“€ μœ„μ— λ§Žμ€ 수의 λ·°λ₯Ό μ§€μ›ν•˜λŠ” 것은 κ°€λŠ₯ν•˜λ‹€.

- μ΄λŸ¬ν•œ 가상 λ¦΄λ ˆμ΄μ…˜, λ·°λŠ” 질의의 κ²°κ³Όλ₯Ό κ°œλ…μ μœΌλ‘œ ν¬ν•¨ν•˜κ³  μžˆλ‹€.

- λ·°λŠ” 미리 κ³„μ‚°λ˜μ–΄μ„œ μ €μž₯λ˜λŠ” 것이 μ•„λ‹ˆλΌ, λ·°κ°€ μ‚¬μš©λ  λ•Œλ§ˆλ‹€ 질의λ₯Ό μˆ˜ν–‰ν•΄μ„œ κ²°κ³Όλ₯Ό μ–»μ–΄λ‚Έλ‹€.

 

 

4.2.1. λ·° μ •μ˜

- λ·°λŠ” create view λͺ…령을 μ‚¬μš©ν•˜μ—¬ μ •μ˜ν•œλ‹€.

- λ·°λ₯Ό μ •μ˜ν•˜κΈ° μœ„ν•΄μ„œ, λ·° 이름과 κ·Έ λ·°λ₯Ό κ³„μ‚°ν•˜λŠ” 질의λ₯Ό κΈ°μˆ ν•΄μ•Ό ν•œλ‹€. create view λͺ…λ Ήμ˜ ν˜•νƒœλŠ” λ‹€μŒκ³Ό κ°™λ‹€.

create view v as <query expression>;
-- μ—¬κΈ°μ„œ <query expression> 은 μ λ²•ν•œ 질의 ν‘œν˜„μ‹μ΄λ‹€. 뷰의 이름은 v둜 λ‚˜νƒ€λ‚΄μ—ˆλ‹€.

 

- μœ„μ˜ μ˜ˆμ™€ 같이, 사무원이 instructor λ¦΄λ ˆμ΄μ…˜μ—μ„œ salary λ₯Ό μ œμ™Έν•œ 정보λ₯Ό μ ‘κ·Όν•˜λ €κ³  ν•œλ‹€κ³  ν•˜μž. 이 사무원이 직접 instructor λ¦΄λ ˆμ΄μ…˜μ— μ ‘κ·Όν•΄μ„œλŠ” μ•ˆ λœλ‹€. λŒ€μ‹  λ‹€μŒ μ •μ˜μ™€ 같이 faculty λΌλŠ” λ·° λ¦΄λ ˆμ΄μ…˜μ„ μƒμ„±ν•΄μ„œ μ‚¬λ¬΄μ›μ—κ²Œ μ œκ³΅ν•΄μ•Ό ν•œλ‹€.

create view faculty as
select ID, name, dept_name
from instructor;

 

 

- λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œμ΄ λ·° λ¦΄λ ˆμ΄μ…˜κ³Ό κ΄€λ ¨λœ 질의 식을 μ €μž₯ν•˜κ³  μžˆλ‹€.

- λ·° λ¦΄λ ˆμ΄μ…˜μ΄ 접근될 λ•Œλ§ˆλ‹€, 질의 κ²°κ³Όλ₯Ό κ³„μ‚°ν•¨μœΌλ‘œμ¨ νˆ¬ν”Œμ΄ μƒμ„±λœλ‹€. 이처럼 λ·° λ¦΄λ ˆμ΄μ…˜μ€ ν•„μš”ν•  λ•Œλ§ˆλ‹€ μƒμ„±λœλ‹€.

 

- 2009λ…„ 가을 학기에 λ¬Όλ¦¬ν•™κ³Όμ—μ„œ μ œκ³΅ν•œ λͺ¨λ“  μˆ˜μ—…μ˜ 정보와 μˆ˜μ—…μ΄ 이루어진 건물과 κ°•μ˜μ‹€ 번호의 λͺ©λ‘μ„ 가지고 μžˆλŠ” λ·°λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ‹€μŒκ³Ό 같이 질의λ₯Ό μž‘μ„±ν•  수 μžˆλ‹€.

-- physics_fall_2009 λŠ” view table의 이름이 λœλ‹€. -> μ‚¬μš©μ‹œ from μ ˆμ—μ„œ μ‚¬μš©λœλ‹€.
create view physics_fall_2009 as
	select course.course_id, sec_id, building, room_number
    from course, section
    where course.course_id = section.course_id
    	and course.dept_name = 'Physics'
        and section.semester = 'Fall'
        and section.year = '2009';

 

 

 

λŒ“κΈ€