[Chapter 10] VIEW / Sequence / Index

๊น€์•„๋žŒยท2023๋…„ 7์›” 26์ผ

๐Ÿ“Œ 1. ๋ทฐ(VIEW)

  • ํ•˜๋‚˜์˜ ๊ฐ€์ƒ ํ…Œ์ด๋ธ”์ด๋ผ๊ณ  ์ƒ๊ฐ
  • ์ž์ฃผ ์กฐํšŒํ•˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์กฐํšŒํ•˜๊ธฐ ํŽธํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ โ†’ ์ฟผ๋ฆฌ๋กœ ๋ทฐ๋ฅผ ๋งŒ๋“ค์–ด ๋†“๊ณ  ์‚ฌ์šฉ
  • ๋ทฐ๋Š” ๋ณด์•ˆ์— ์œ ๋ฆฌ
  • ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ๋…ธ์ถœ์‹œํ‚ค๊ณ  ์‹ถ์ง€ ์•Š์„๋•Œ, ๋ทฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด์—ฌ์ค„ ํ…Œ์ดํ„ฐ ์ œ๊ณต

๐Ÿ“ข ํŠน์ง•
- ์›์ฒœ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด view ๋ฐ์ดํ„ฐ๋„ ์ž๋™ ๋ณ€๊ฒฝ
- ๋ทฐ์˜ ๊ฒ€์ƒ‰์€ ์ž์œ ๋กœ์šฐ๋‚˜, ์‚ฝ์ž…, ์ˆ˜์ •, ์‚ญ์ œ๋Š” ์ œ์•ฝ์ด ์žˆ๋‹ค.
- ๋ทฐ์ƒ์„ฑ ์ฟผ๋ฆฌ์— ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ˜๋“œ์‹œ alias๋ฅผ ์ง€์ •
- view๋Š” table๊ณผ ์œ ์‚ฌํ•˜๋ฉฐ, ํ…Œ์ด๋ธ”์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•œ๋‹ค.
- ํ…Œ์ด๋ธ”๊ณผ๋Š” ๋‹ฌ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฌผ๋ฆฌ์ ์ธ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฐ€์ƒ ํ…Œ์ด๋ธ”์ด๋‹ค.
- ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๊ฐ–์ง€ ์•Š์ง€๋งŒ, ๋…ผ๋ฆฌ์ ์ธ ์ง‘ํ•ฉ์„ ๊ฐ–๋Š”๋‹ค.
- ํ…Œ์ด๋ธ”๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ select, insert, update, delete๋ช…๋ น์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

โ™ฃ view ์ƒ์„ฑ

		CREATE VIEW v_emp(emp_id,first_name,job_id,hiredate,dept_id)
		AS
		SELECT 	EMPLOYEE_ID , FIRST_NAME , 	JOB_ID , HIRE_DATE , DEPARTMENT_ID 
		FROM 	EMPLOYEES e 
		WHERE 	JOB_ID = 'ST_CLERK';

โ™ฃ view ๋Œ€์ฒด(์ˆ˜์ •)

		CREATE OR REPLACE VIEW v_emp(
			emp_id, first_name, job_id, hiredate, dept_id) 
        AS 
		SELECT 	NVL(EMPLOYEE_ID, ''), NVL(FIRST_NAME, '')  , JOB_ID ,	HIRE_DATE , DEPARTMENT_ID 		//null๊ฐ’ ๋ณ€๊ฒฝ: NVL
		FROM 	EMPLOYEES e ;

โ™ฃ ERROR [ํ•จ์ˆ˜๋กœ ์ž‘์„ฑ๋œ ๋ถ€๋ถ„์€ ์ˆ˜์ • ๋ถˆ๊ฐ€]

		UPDATE V_EMP SET FIRST_NAME = 'kim' 
		WHERE FIRST_NAME = 'Lex';

ใ…‹

๐Ÿ“Œ 2. ์‹œํ€€์Šค(Sequence)

: ์ž๋™์œผ๋กœ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ๋ฒˆ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด
ใ…‹(๋ณดํ†ต PK๊ฐ’์— ์ค‘๋ณต๊ฐ’์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ)

๐Ÿ“ ์‹œํ€€์Šค ์ƒ์„ฑ

		 create sequence ์‹œํ€€์Šค์ด๋ฆ„
					increment by n	 //์ฆ๊ฐ€๊ฐ’ ์„ค์ •, 2 -> 2์”ฉ ์ฆ๊ฐ€
					start with n	//์‹œ์ž‘๊ฐ’ ์„ค์ •	
					maxvalue n		//์ตœ๋Œ€๊ฐ’(nomaxvalue)
					minvalue n		//์ตœ์†Œ๊ฐ’(nominvalue, cycle ์˜ต์…˜์ผ ๊ฒฝ์šฐ)
					cycle			//์‹œํ€€์Šค๋ฅผ ์ˆœ ์‚ฌ์šฉํ• ์ง€๋ฅผ ์„ค์ •(nocycle)
					cache n 		//์‹œํ€€์Šค์˜ ์†๋„๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์บ์‹ฑ์—ฌ๋ถ€ ์ง€์ •(nocache)

ใ…‹

๐Ÿ“Œ 3. Index

: ์กฐํšŒ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฒ€์ƒ‰ ๊ธฐ์ˆ 
โ†’ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•ด ์คŒ์œผ๋กœ์จ ์กฐํšŒ ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“ index์ƒ์„ฑ์ด ๋ถˆํ•„์š”ํ•œ ๊ฒฝ์šฐ

  • ๋ฐ์ดํ„ฐ๊ฐ€ ์ ์€ (์ˆ˜์ฒœ๊ฑด ๋ฏธ๋งŒ)๊ฒฝ์šฐ์—๋Š” ์ธ๋ฑ์Šค๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š๋Š”๊ฒŒ ์˜คํžˆ๋ ค ์„ฑ๋Šฅ์ด ์ข‹๋‹ค
  • ์กฐํšŒ๋ณด๋‹ค ์‚ฝ์ž…, ์ˆ˜์ •, ์‚ญ์ œ ์ฒ˜๋ฆฌ๊ฐ€ ๋งŽ์€ ํ…Œ์ด๋ธ”

๐Ÿ“ index์˜ ์ทจ์•ฝ์ 

  • insert : index table์—๋„ insert๊ฐ€ ๋œ๋‹ค
  • delete : index table์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์šฐ์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ์œผ๋กœ ํ‘œ์‹œํ•˜๊ฒŒ ๋œ๋‹ค.
  • update : index table์—์„œ delete๋ฅผ ํ•œ ํ›„ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ insert ์ž‘์—…

๐Ÿ“ index ์ƒ์„ฑ

  • unique ์ธ๋ฑ์Šค : ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•œ ์ปฌ๋Ÿผ์˜ ์ค‘๋ณต๊ฐ’๋“ค์„ ํฌํ•จํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ 
		create unique index ์ธ๋ฑ์Šค๋ช…
		on ํ…Œ์ด๋ธ”(์ปฌ๋Ÿผ);
  • non-unique ์ธ๋ฑ์Šค: ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•œ ์ปค๋Ÿผ์— ์ค‘๋ณต ๋ฐ์ดํ„ฐ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค
		create index ์ธ๋ฑ์Šค๋ช…
		on ํ…Œ์ด๋ธ”(์ปฌ๋Ÿผ);

0๊ฐœ์˜ ๋Œ“๊ธ€