[DB] Relational Database, SQL

seunghyunยท2023๋…„ 3์›” 6์ผ
0

๐Ÿ’ป

๋ชฉ๋ก ๋ณด๊ธฐ
13/16

Intoroduction

  • ํ…Œ์ด๋ธ” ์ธ์Šคํ„ด์Šค๋Š” ๋ ˆ์ฝ”๋“œ๋“ค์˜ ์ง‘ํ•ฉ ์ด๋ฏ€๋กœ

    • ๋ ˆ์ฝ”๋“œ ๊ฐ„์˜ ์ˆœ์„œ, ๋ ˆ์ฝ”๋“œ ๋‚ด ํ•„๋“œ์˜ ์ˆœ์„œ๋Š” ์˜๋ฏธ๊ฐ€ ์—†๋‹ค.
  • ์ฐจ์ˆ˜ (degree) : ํ…Œ์ด๋ธ” ์Šคํ‚ค๋งˆ์— ์ •์˜๋œ ํ•„๋“œ์˜ ์ˆ˜

  • ๋„๋ฉ”์ธ : ๊ฐ ํ•„๋“œ์— ์ž…๋ ฅ ๊ฐ€๋Šฅํ•œ ๊ฐ’๋“ค์˜ ๋ฒ”์œ„, ์ฆ‰ ๊ฐ ํ•„๋“œ๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฐ’๋“ค์˜ ์ง‘ํ•ฉ

  • ๊ธฐ์ˆ˜ (cardinality) : ๋ ˆ์ฝ”๋“œ ์ˆ˜

  • ๋ชจ๋“  ํ•„๋“œ๋Š” ๋” ์ด์ƒ ๋ถ„๋ฆฌ๋˜์ง€ ์•Š๋Š” ๊ฐ’, ์ฆ‰ ์›์ž๊ฐ’ (atomic value) ์„ ๊ฐ€์ง„๋‹ค.

  • 2๊ฐœ ์ด์ƒ์˜ ํ•„๋“œ๋กœ ๊ตฌ์„ฑ๋œ ํ‚ค๋ฅผ ๋ณตํ•ฉํ‚ค๋ผ ํ•œ๋‹ค.

  • ์™ธ๋ž˜ํ‚ค : ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์ฐธ์กฐํ•˜๋Š” ํ•„๋“œ์ง‘ํ•ฉ


๊ด€๊ณ„ ๋Œ€์ˆ˜ (Relational Algebra)

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ์˜ ๋Œ€ํ‘œ์  ์งˆ์˜์–ด

โœ”๏ธ ์ ˆ์ฐจ์  ์–ธ์–ด

โœ”๏ธ ์ˆ˜ํ•™์—์„œ์˜ ์ˆ˜์‹๊ตฌ์กฐ์™€ ์œ ์‚ฌ

  • ํ”ผ์—ฐ์‚ฐ์ž(operand) : ํ…Œ์ด๋ธ”
  • ์—ฐ์‚ฐ์ž(operator)
    • ๋‹จํ•ญ ์—ฐ์‚ฐ์ž(unary operator)
    • ์ดํ•ญ ์—ฐ์‚ฐ์ž(binary operator)

์—ฐ์‚ฐ์˜ ์ข…๋ฅ˜

โœ”๏ธ ๊ธฐ๋ณธ ์—ฐ์‚ฐ

  • ์„ ํƒ ์—ฐ์‚ฐ : ๊ตํ™˜ ๋ฒ•์น™์ด ์„ฑ๋ฆฝํ•œ๋‹ค.
  • ์ถ”์ถœ ์—ฐ์‚ฐ
  • ์žฌ๋ช…๋ช… ์—ฐ์‚ฐ : ํ…Œ์ด๋ธ”์— ์ด๋ฆ„์„ ๋ถ€์—ฌํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•˜๋Š” ์—ฐ์‚ฐ. ๋‹จ, ๋ณธ๋ž˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋œ ํ…Œ์ด๋ธ”๋ช…๊นŒ์ง€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.
  • ์ง‘ํ•ฉ ์—ฐ์‚ฐ : ํ˜ธํ™˜๊ฐ€๋Šฅํ•˜๋ ค๋ฉด (compatible) ๊ฐ™์€ ์ด๋ฆ„์˜ ํ•„๋“œ๋“ค์ด๋ผ ํ•˜๋”๋ผ๋„ ๋„๋ฉ”์ธ์ด ์ผ์น˜ํ•ด์•ผ ํ•œ๋‹ค.
  • ์นดํ‹ฐ์…˜ ํ”„๋กœ๋•ํŠธ : ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์—์„œ ๊ฐ๊ฐ์˜ ๋ ˆ์ฝ”๋“œ๋“ค์„ ์„œ๋กœ ๊ฒฐํ•ฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ๋ ˆ์ฝ”๋“œ๋กœ ๊ตฌ์„ฑํ•˜๋ฉด์„œ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์กฐํ•ฉ์˜ ๋ ˆ์ฝ”๋“œ๋“ค๋กœ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑ

โœ”๏ธ ์ถ”๊ฐ€์—ฐ์‚ฐ

  • ์กฐ์ธ (theta join)

    • ๋‘ ํ…Œ์ด๋ธ”๋กœ ๋ถ€ํ„ฐ ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋“ค์„ ํ•˜๋‚˜์˜ ๋ ˆ์ฝ”๋“œ๋กœ ๊ฒฐํ•ฉํ•˜๋Š” ์—ฐ์‚ฐ
    • ์นดํ‹ฐ์…˜ ํ”„๋กœ๋•ํŠธ๋Š” ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ์กฐํ•ฉ์— ์˜ํ•ด ๋ ˆ์ฝ”๋“œ๋“ค์„ ์ƒ์„ฑํ•˜์ง€๋งŒ ์กฐ์ธ์€ ํŠน์ • ์กฐ๊ฑด์€ ๋งŒ์กฑํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋งŒ์„ ์„ ํƒ
    • ์„ธํƒ€(theta: ฮ˜) ์กฐ์ธ์ด๋ผ๊ณ ๋„ ํ•จ
  • ์ž์—ฐ ์กฐ์ธ (natural join)

  • ์™ธ๋ถ€ ์กฐ์ธ (outer join)

  • ์ง€์ • ์—ฐ์‚ฐ (assignment)

  • (๋‚˜๋ˆ„๊ธฐ ์—ฐ์‚ฐ)


SQL

๐Ÿ’ก Structed Query Language

  • ๊ด€๊ณ„ํ˜• ์งˆ์˜์–ธ์–ด
  • ๊ด€๊ณ„๋Œ€์ˆ˜๋‚˜ ๊ด€๊ณ„ํ•ด์„์€ ํ™•์‹คํ•œ ์ด๋ก ์  ๋ฐฐ๊ฒฝ์„ ์ œ๊ณตํ•˜๋‚˜ ์ƒ์šฉ์œผ๋กœ ์“ฐ์ด๊ธฐ์—๋Š” ์–ด๋ ต๊ณ  ์ ์ ˆ์น˜ ์•Š์Œ
  • SQL์€ ์ž์—ฐ์–ด์™€ ์œ ์‚ฌํ•˜๊ณ  ๋น„์ ˆ์ฐจ์  ์–ธ์–ด์ด๋ฏ€๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์šฉ์ดํ•จ

โœ”๏ธ SQL์€ ํฌ๊ฒŒ DDL๊ณผ DML๋กœ ๊ตฌ์„ฑ๋จ

  • ๋ฐ์ดํ„ฐ ์ •์˜ ์–ธ์–ด (DDL: Data Definition Language)
    • ๋ฐ์ดํ„ฐ ์ €์žฅ ๊ตฌ์กฐ๋ฅผ ๋ช…์‹œํ•˜๋Š” ์–ธ์–ด
    • ํ…Œ์ด๋ธ” ์Šคํ‚ค๋งˆ์˜ ์ •์˜, ์ˆ˜์ •, ์‚ญ์ œ
  • ๋ฐ์ดํ„ฐ ์กฐ์ž‘ ์–ธ์–ด (DML: Data Manipulation Language)
    • ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผํ•˜๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ์–ธ์–ด
    • ๋ ˆ์ฝ”๋“œ์˜ ๊ฒ€์ƒ‰(search), ์‚ฝ์ž…(insert), ์‚ญ์ œ(delete), ์ˆ˜์ •(update)

โœ”๏ธ ๋ฐ์ดํ„ฐ ์ •์˜ ์–ธ์–ด DDL

  • ํ…Œ์ด๋ธ” ์ƒ์„ฑ (create table)
    • ์•„๋ž˜ ์˜ˆ์‹œ ์‚ฌ์ง„ ์ฐธ๊ณ 
  • ๊ธฐ๋ณธํ‚ค, ์™ธ๋ž˜ํ‚ค ์„ค์ •
    • ์•„๋ž˜ ์˜ˆ์‹œ ์‚ฌ์ง„ ์ฐธ๊ณ 
    • โ›”๏ธ ์™ธ๋ž˜ํ‚ค๋ฅผ ํ•„๋“œ๋กœ ๊ฐ–๋Š” ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ๋•Œ ์™ธ๋ž˜ํ‚ค๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ํ…Œ์ด๋ธ”์„ ๋จผ์ € ์ƒ์„ฑํ•ด์•ผํ•จ
    • โ›”๏ธ dept ํ…Œ์ด๋ธ”์„ ์‚ญ์ œํ•˜๋ ค๋ฉด member ํ…Œ์ด๋ธ”์„ ๋จผ์ € ์‚ญ์ œํ•˜๋˜์ง€, ์™ธ๋ž˜ํ‚ค๋ฅผ ํ•ด์ œํ•ด์•ผํ•จ
    • ์™ธ๋ž˜ํ‚ค ํ•ด์ œ๋Š” ์•„๋ž˜์—์„œ ์ž์„ธํžˆ ๋‹ค๋ฃธ
  • ํ…Œ์ด๋ธ” ์‚ญ์ œ (drop table)
    • drop table <ํ…Œ์ด๋ธ”์ด๋ฆ„>
    • โ›”๏ธ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์—์„œ ์™ธ๋ž˜ํ‚ค๋กœ ์ฐธ์กฐ๋˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์‚ญ์ œํ•  ์ˆ˜ ์—†์Œ
      • class ํ…Œ์ด๋ธ”์€ takes ํ…Œ์ด๋ธ”์—์„œ ์™ธ๋ž˜ํ‚ค๋กœ ์ฐธ์กฐ๋จ. takes ํ…Œ์ด๋ธ”์„ ์‚ญ์ œํ•˜๊ธฐ ์ „์—๋Š” class ํ…Œ์ด๋ธ”์„ ์‚ญ์ œํ•  ์ˆ˜ ์—†์Œ
  • ํ…Œ์ด๋ธ” ์ˆ˜์ • (alter table)
    • alter table <ํ…Œ์ด๋ธ”์ด๋ฆ„> add <์ถ”๊ฐ€ํ• ํ•„๋“œ>
    • ex) alter table student add age int;

โœ”๏ธ ํ•„๋“œ์˜ Data type ์ข…๋ฅ˜

โœ”๏ธ ๋ฐ์ดํ„ฐ ์กฐ์ž‘ ์–ธ์–ด DML

  • ๋ ˆ์ฝ”๋“œ ์‚ฝ์ž…
    • insert into <ํ…Œ์ด๋ธ”์ด๋ฆ„> (<ํ•„๋“œ๋ฆฌ์ŠคํŠธ>) values (<๊ฐ’๋ฆฌ์ŠคํŠธ>)
    • ex) insert into department (dept_id, dept_name, office) values ('920', '์ปดํ“จํ„ฐ๊ณตํ•™๊ณผ', '201ํ˜ธ');
    • โ›”๏ธ ์™ธ๋ž˜ํ‚ค๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ•„๋“œ์— ๋Œ€ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ ์ฐธ์กฐํ•˜๋Š” ํ…Œ์ด๋ธ”์˜ ํ•ด๋‹น ํ•„๋“œ์— ๊ทธ ๊ฐ’์„ ๋จผ์ € ์‚ฝ์ž…ํ•ด์•ผํ•จ
  • ๋ ˆ์ฝ”๋“œ ์ˆ˜์ •
    • update <ํ…Œ์ด๋ธ”์ด๋ฆ„> set <์ˆ˜์ •๋‚ด์—ญ> where <์กฐ๊ฑด>
    • ex) update professor set position='๊ต์ˆ˜โ€˜, dept_id='923' where name='๊ณ ํฌ์„โ€˜
    • ex) update student set year = year + 1
    • โ›”๏ธ ์™ธ๋ž˜ํ‚ค๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ•„๋“œ์˜ ๊ฐ’์„ ์ˆ˜์ •ํ•  ๋•Œ ์™ธ๋ž˜ํ‚ค๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ํ…Œ์ด๋ธ”์— ์‚ฝ์ž…๋˜์–ด ์žˆ๋Š” ๊ฐ’์œผ๋กœ๋งŒ ์ˆ˜์ •์ด ๊ฐ€๋Šฅ
  • ๋ ˆ์ฝ”๋“œ ์‚ญ์ œ
    • delete from <ํ…Œ์ด๋ธ”์ด๋ฆ„> where <์กฐ๊ฑด>
    • delete from professor where name='๊น€ํƒœ์„'
    • โ›”๏ธ ์™ธ๋ž˜ํ‚ค๋กœ ์ฐธ์กฐ๋˜๋Š” ํ•„๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ…Œ์ด๋ธ”์—์„œ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ญ์ œํ•  ๊ฒฝ์šฐ์—๋„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ
  • ๋ ˆ์ฝ”๋“œ ๊ฒ€์ƒ‰ ๐ŸŒŸ
    • SQL์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ , ์ค‘์š”ํ•˜๋ฉฐ, ๋ณต์žกํ•จ
    • ์•„๋ž˜์—์„œ ๋””ํ…Œ์ผ์„ ๋‹ค๋ฃธ
    • ์ข…๋ฅ˜
      • ๊ธฐ๋ณธ ๊ตฌ์กฐ
      • ์žฌ๋ช…๋ช… ์—ฐ์‚ฐ
      • LIKE ์—ฐ์‚ฐ์ž
      • ์ง‘ํ•ฉ ์—ฐ์‚ฐ
      • ์™ธ๋ถ€์กฐ์ธ
      • ์ง‘๊ณ„ ํ•จ์ˆ˜
      • ๋„์˜ ์ฒ˜๋ฆฌ
      • ์ค‘์ฒฉ ์งˆ์˜

์˜ˆ์‹œ

โœ”๏ธ ํ…Œ์ด๋ธ” ์ƒ์„ฑ, ๊ธฐ๋ณธํ‚ค, ์™ธ๋ž˜ํ‚ค ์„ค์ •

๋ ˆ์ฝ”๋“œ ๊ฒ€์ƒ‰ ๐ŸŒŸ

๊ธฐ๋ณธ ๊ตฌ์กฐ

  • select <ํ•„๋“œ๋ฆฌ์ŠคํŠธ> from <ํ…Œ์ด๋ธ”๋ฆฌ์ŠคํŠธ> where <์กฐ๊ฑด>
  • from์ ˆ์— ๋‚˜์—ด๋œ department ํ…Œ์ด๋ธ”๊ณผ student ํ…Œ์ด๋ธ”์„ ์นดํ‹ฐ์…˜ ํ”„๋กœ๋•ํŠธ
  • where์ ˆ์— ์ง€์ •๋œ ์กฐ๊ฑด์‹์„ ๋งŒ์กฑํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋งŒ ์„ ํƒ
  • ex)
    select name, dept_name
    from department, student
    where department.dept_id = student.dept_id
  • ์ค‘๋ณต๋œ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•˜๋ ค๋ฉด distinct ๋ฅผ ์‚ฌ์šฉ
  • from ์ ˆ์— ๋‚˜ํƒ€๋‚œ ํ…Œ์ด๋ธ”์—์„œ ๋ชจ๋“  ํ•„๋“œ์˜ ๊ฐ’์„ ์ถ”์ถœํ•  ๊ฒฝ์šฐ์—๋Š” select ์ ˆ์— ๋ชจ๋“  ํ•„๋“œ๋ฅผ ๋ช…์‹œํ•  ํ•„์š” ์—†์ด * ๋ฅผ ์‚ฌ์šฉ
  • ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ์ •๋ ฌํ•˜์—ฌ ์ถœ๋ ฅํ•˜๋Š” ๊ธฐ๋Šฅ
    • select๋ฌธ ๋งจ ๋งˆ์ง€๋ง‰์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ order by ์ ˆ์„ ์ถ”๊ฐ€
    • ์˜ค๋ฆ„์ฐจ์ˆœ์„ ๊ธฐ๋ณธ์œผ๋กœ ํ•˜๋ฉฐ <ํ•„๋“œ๋ฆฌ์ŠคํŠธ>์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ•„๋“œ๋ฅผ ๋‚˜์—ดํ•  ๊ฒฝ์šฐ ๋‚˜์—ด๋œ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ
    • ex) student ํ…Œ์ด๋ธ”์—์„œ 3, 4ํ•™๋…„ ํ•™์ƒ๋“ค์˜ ์ด๋ฆ„๊ณผ ํ•™๋ฒˆ์„ ๊ฒ€์ƒ‰
    • ๋‚ด๋ฆผ์ฐจ์ˆœ์€ ํ•ด๋‹น ํ•„๋“œ ์ด๋ฆ„ ๋’ค์— desc ๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฝ์ž…

์žฌ๋ช…๋ช… ์—ฐ์‚ฐ

์‹ค์ œ ํ…Œ์ด๋ธ” ์ด๋ฆ„์ด ์ˆ˜์ •๋˜๊ฑฐ๋‚˜ ํ•„๋“œ ์ด๋ฆ„์ด ๋ฐ”๋€Œ๋Š” ๊ฒƒ์ด ์•„๋‹˜!
์งˆ์˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ • ๋™์•ˆ๋งŒ ์ผ์‹œ์ ์œผ๋กœ ์‚ฌ์šฉ.
ํ‘œํ˜„์ด ๋‹จ์ˆœํ™”ํ•˜๊ฑฐ๋‚˜, ๋™์ผ ์ด๋ฆ„์ด ์กด์žฌํ•  ๊ฒฝ์šฐ์— ์‚ฌ์šฉ

  • ex) student ํ…Œ์ด๋ธ”์—์„œ โ€˜๊น€๊ด‘์‹โ€™ ํ•™์ƒ๊ณผ ์ฃผ์†Œ๊ฐ€ ๊ฐ™์€ ํ•™์ƒ๋“ค์˜ ์ด๋ฆ„๊ณผ ์ฃผ์†Œ๋ฅผ ๊ฒ€์ƒ‰
    select s2.name
    from student s1, student s2
    where s1.address = s2.address and s1.name = '๊น€๊ด‘์‹'
  • ํ•„๋“œ์˜ ์žฌ๋ช…๋ช…
    • ex) ๊ต์ˆ˜๋“ค์˜ ์ด๋ฆ„๊ณผ ์ง์œ„, ์žฌ์ง์—ฐ์ˆ˜๋ฅผ ์ถœ๋ ฅ

LIKE ์—ฐ์‚ฐ์ž

๋ฌธ์ž์—ด์— ๋Œ€ํ•ด์„œ๋Š” ์ผ๋ถ€๋ถ„๋งŒ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ฐพ์•„์•ผ ํ•  ๋•Œ ์‚ฌ์šฉ.
<ํ•„๋“œ์ด๋ฆ„>์— ์ง€์ •๋œ <๋ฌธ์ž์—ดํŒจํ„ด>์ด ๋“ค์–ด ์žˆ๋Š”์ง€๋ฅผ ํŒ๋‹จ.

  • where <ํ•„๋“œ์ด๋ฆ„> like <๋ฌธ์ž์—ดํŒจํ„ด>

  • = ์—ฐ์‚ฐ์ž ๋Œ€์‹ ์— like ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•จ (= ๋Š” ์ •ํ™•ํžˆ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉ)

  • ๋ฌธ์ž์—ด ํŒจํ„ด์˜ ์ข…๋ฅ˜

  • ex) student ํ…Œ์ด๋ธ”์—์„œ ์—ฌํ•™์ƒ๋“ค๋งŒ์„ ๊ฒ€์ƒ‰

์ง‘ํ•ฉ ์—ฐ์‚ฐ

๊ด€๊ณ„๋Œ€์ˆ˜์˜ ์ง‘ํ•ฉ ์—ฐ์‚ฐ์ธ ํ•ฉ์ง‘ํ•ฉ, ๊ต์ง‘ํ•ฉ, ์ฐจ์ง‘ํ•ฉ์— ํ•ด๋‹นํ•˜๋Š” ์—ฐ์‚ฐ์ž

  • ํ•ฉ์ง‘ํ•ฉ union

    • ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด union ์—ฐ์‚ฐ์ž ๋Œ€์‹  union all ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
    • ex) student ํ…Œ์ด๋ธ”๊ณผ professor ํ…Œ์ด๋ธ”์—์„œ ํ•™๊ณผ๋ฒˆํ˜ธ๋ฅผ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์—ฌ ์ถœ๋ ฅ
  • ๊ต์ง‘ํ•ฉ intersect

    • ex) โ€˜์ปดํ“จํ„ฐ๊ณตํ•™๊ณผโ€™์— ๋‹ค๋‹ˆ๋Š” ํ•™์ƒ๋“ค์˜ ํ•™๋ฒˆ๊ณผ takes ํ…Œ์ด๋ธ”์—์„œ ํ•™์ ์ด 'A+'์ธ ํ•™์ƒ๋“ค์˜ ํ•™๋ฒˆ์˜ ๊ต์ง‘ํ•ฉ
  • ์ฐจ์ง‘ํ•ฉ minus

    • ์‚ฐ์—…๊ณตํ•™๊ณผ ํ•™์ƒ๋“ค ์ค‘์—์„œ ํ•œ๋ฒˆ์ด๋ผ๋„ 'A+'๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ํ•™์ƒ๋“ค์˜ ํ•™๋ฒˆ์„ ๊ฒ€์ƒ‰

์™ธ๋ถ€์กฐ์ธ outer join

๐Ÿ’ญ โ€˜์ด์‚ฐ์ˆ˜ํ•™โ€™, โ€˜๊ฐ์ฒด์ง€ํ–ฅ์–ธ์–ดโ€™ ๊ต๊ณผ๋ชฉ๋“ค์€ class ํ…Œ์ด๋ธ”์— ์ €์žฅ๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์— ํฌํ•จ๋˜์ง€ ๋ชปํ•œ๋‹ค. ์ด๋Ÿด ๋•Œ ์•„๋ž˜์˜ ์กฐ์ธ์„ ํ•ด์ฃผ๋ฉด ๊ฐ๊ฐ ์–ด๋–ค ๊ฒฐ๊ณผ๋“ค์ด ๋‚˜์˜ฌ๊นŒ?

  • ์™ผ์ชฝ ์™ธ๋ถ€์กฐ์ธ left outer join
    • ์—ฐ์‚ฐ์ž์˜ ์™ผ์ชฝ์— ์œ„์น˜ํ•œ ํ…Œ์ด๋ธ”์˜ ๊ฐ ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•ด์„œ ์˜ค๋ฅธ์ชฝ ํ…Œ์ด๋ธ”์— ์กฐ์ธ ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ์—๋„ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์— ํฌํ•จ
    • ์ƒ์„ฑ๋˜๋Š” ๊ฒฐ๊ณผ ๋ ˆ์ฝ”๋“œ์—์„œ ์˜ค๋ฅธ์ชฝ ํ…Œ์ด๋ธ”์˜ ๋‚˜๋จธ์ง€ ํ•„๋“œ์—๋Š” ๋„์ด ์‚ฝ์ž…
  • ์˜ค๋ฅธ์ชฝ ์™ธ๋ถ€์กฐ์ธ right outer join
  • ์™„์ „ ์™ธ๋ถ€์กฐ์ธ full outer join
    • ์–‘์ชฝ ํ…Œ์ด๋ธ”์—์„œ ์„œ๋กœ ์ผ์น˜ํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ, ํ•ด๋‹น ๋ ˆ์ฝ”๋“œ๋“ค๋„ ๊ฒฐ๊ณผ ํ…Œ์ด๋ธ”์— ํฌํ•จ์‹œํ‚ค๋ฉฐ ๋‚˜๋จธ์ง€ ํ•„๋“œ์— ๋Œ€ํ•ด์„œ๋Š” ๋ชจ๋‘ ๋„์„ ์‚ฝ์ž…

์ง‘๊ณ„ ํ•จ์ˆ˜ aggregate function

ํ†ต๊ณ„์—ฐ์‚ฐ ๊ธฐ๋Šฅ ์ œ๊ณต.
SELECT ์ ˆ๊ณผ HAVING ์ ˆ (๋’ค์— ์„ค๋ช…) ์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.
sum, avg๋Š” ์ˆซ์žํ˜• ํ…Œ์ดํ„ฐ ํƒ€์ž…์„ ๊ฐ–๋Š” ํ•„๋“œ์—๋งŒ ์ ์šฉ๊ฐ€๋Šฅ.

  • count : ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.

    • ex) student ํ…Œ์ด๋ธ”์—์„œ 3ํ•™๋…„ ํ•™์ƒ์ด ๋ช‡ ๋ช…์ธ์ง€ ์ถœ๋ ฅ

    • ex) student ํ…Œ์ด๋ธ”์—์„œ dept_id ํ•„๋“œ์— ๊ฐ’์ด ๋ช‡ ๊ฐœ์ธ์ง€๋ฅผ ์ถœ๋ ฅ

    • distinct ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ค‘๋ณต๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์™ธํ•œ ๊ฐœ์ˆ˜๋ฅผ ๋ฆฌํ„ด

      • ex) count(dept_id) ๋Œ€์‹  count(distinct dept_id) ๋ฅผ ์‚ฌ์šฉ
    • ์ปดํ“จํ„ฐ๊ณตํ•™๊ณผ์˜ ํ•™์ƒ ์ˆ˜๋ฅผ ์ถœ๋ ฅ

  • sum : ๋ฐ์ดํ„ฐ์˜ ํ•ฉ์„ ๊ตฌํ•œ๋‹ค.

    • ex) ์ „์ฒด ๊ต์ˆ˜๋“ค์˜ ์žฌ์ง์—ฐ์ˆ˜ ํ•ฉ
  • avg : ๋ฐ์ดํ„ฐ์˜ ํ‰๊ท  ๊ฐ’์„ ๊ตฌํ•œ๋‹ค.

    • ex) ์ „์ฒด ๊ต์ˆ˜์˜ ํ‰๊ท  ์žฌ์ง์—ฐ์ˆ˜๋ฅผ ์ถœ๋ ฅ
  • max : ๋ฐ์ดํ„ฐ์˜ ์ตœ๋Œ€ ๊ฐ’์„ ๊ตฌํ•œ๋‹ค.

  • min : ๋ฐ์ดํ„ฐ์˜ ์ตœ์†Œ ๊ฐ’์„ ๊ตฌํ•œ๋‹ค.

    • ex) ๋ถ€์„œ ์ด๋ฆ„์ด โ€˜ACCOUNTING' ์ธ ์ง์›๋“ค ์ค‘์—์„œ ์ตœ๋Œ€ ๊ธ‰์—ฌ๊ฐ€ ์–ผ๋งˆ์ธ์ง€ ์ถœ๋ ฅ

โœš) Group by

  • โ›”๏ธ select ์ ˆ์— ์ง‘๊ณ„ ํ•จ์ˆ˜๊ฐ€ ์‚ฌ์šฉ๋  ๊ฒฝ์šฐ ๋‹ค๋ฅธ ํ•„๋“œ๋Š” select ์ ˆ์— ์‚ฌ์šฉํ•  ์ˆ˜๊ฐ€ ์—†์Œ.

    • ๊ทธ๋ž˜์„œ ๋‹ค์Œ ์งˆ์˜๋Š” ์˜ค๋ฅ˜
  • ์ง€๊ธˆ๊นŒ์ง€์˜ SQL์€ ์ „์ฒด ๋ ˆ์ฝ”๋“œ๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ํ‰๊ท , ํ•ฉ, ์ตœ๋Œ€๊ฐ’/์ตœ์†Œ๊ฐ’ ๋งŒ์„ ์ถœ๋ ฅ.
    GROUP BY๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ทธ๋ฃน๋ณ„๋กœ ์ง‘๊ณ„ํ•จ์ˆ˜ ์ ์šฉ ๊ฐ€๋Šฅ! (์˜ˆ: ํ•™๊ณผ๋ณ„ํ•™์ƒ์ˆ˜,๋ถ€์„œ๋ณ„์ตœ๋Œ€๊ธ‰โ€™)

    • ex) student ํ…Œ์ด๋ธ”์—์„œ ํ•™๊ณผ๋ฒˆํ˜ธ (dept_id ํ•„๋“œ) ๋ณ„๋กœ ๋ ˆ์ฝ”๋“œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅ
      • group by ์ ˆ์— ์‚ฌ์šฉ๋œ ํ•„๋“œ๋ฅผ select ์ ˆ์— ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
    • ex) ํ•™๊ณผ๋ฒˆํ˜ธ ๋Œ€์‹  department ํ…Œ์ด๋ธ”๊ณผ ์กฐ์ธํ•˜์—ฌ ํ•™๊ณผ ์ด๋ฆ„์ด ์ถœ๋ ฅ๋˜๋„๋ก ์œ„ ์งˆ์˜๋ฅผ ์ˆ˜์ • (ํ•™๊ณผ๋ณ„ํ•™์ƒ์ˆ˜)
    • ex) emp, dept ํ…Œ์ด๋ธ”์—์„œ ๋ถ€์„œ๋ณ„ ์ง์›์ˆ˜, ํ‰๊ท ๊ธ‰์—ฌ, ์ตœ๋Œ€๊ธ‰์—ฌ, ์ตœ์†Œ๊ธ‰์—ฌ ๋ฅผ ์ถœ๋ ฅ
    • ex) ํ•™์‚ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํ•™๊ณผ๋ณ„ ๊ต์ˆ˜ ์ˆซ์ž์™€ ํ‰๊ท  ์žฌ์ง์—ฐ์ˆ˜, ์ตœ๋Œ€ ์žฌ์ง์—ฐ์ˆ˜๋ฅผ ์ถœ๋ ฅ

โœš) Having

  • ๊ทธ๋ฃน์— ๋Œ€ํ•œ ์กฐ๊ฑด์„ ๋ช…์‹œํ•  ๋•Œ ์‚ฌ์šฉ

  • ex) ํ‰๊ท  ์žฌ์ง์—ฐ์ˆ˜๊ฐ€ 10๋…„ ์ด์ƒ์ธ ํ•™๊ณผ์— ๋Œ€ํ•ด์„œ๋งŒ ๊ต์ˆ˜ ์ˆซ์ž์™€ ํ‰๊ท  ์žฌ์ง์—ฐ์ˆ˜, ์ตœ๋Œ€ ์žฌ์ง์—ฐ์ˆ˜๋ฅผ ์ถœ๋ ฅ

  • ๋‹ค์Œ์€ ์˜ค๋ฅ˜ โ›”๏ธ

    • โ›”๏ธ Group ์— ๋Œ€ํ•œ ์กฐ๊ฑด์€ where ์ ˆ์— ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•จ.

    • having ์ ˆ์„ ์ด์šฉํ•ด์•ผ ํ•จ

  • ex) having ์ ˆ์„ ์ด์šฉํ•˜์—ฌ ๋‹ค์‹œ ์ž‘์„ฑ

  • ex) ์ง์› ์ˆซ์ž๊ฐ€ 5๋ช… ์ด์ƒ์ธ ๋ถ€์„œ์— ๋Œ€ํ•ด์„œ ๋ถ€์„œ๋ณ„ ์ง์›์ˆ˜, ํ‰๊ท ๊ธ‰์—ฌ, ์ตœ๋Œ€๊ธ‰์—ฌ, ์ตœ์†Œ๊ธ‰์—ฌ๋ฅผ ์ถœ๋ ฅ

๐Ÿ’ก where ์ ˆ๊ณผ having ์ ˆ, group by ์ ˆ์„ ๋ชจ๋‘ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ
1. where ์ ˆ์— ๋ช…์‹œ๋œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋“ค์„ ๊ฒ€์ƒ‰
2. group by ์ ˆ์— ๋ช…์‹œ๋œ ํ•„๋“œ์˜ ๊ฐ’์ด ์„œ๋กœ ์ผ์น˜ํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋“ค ๋ผ๋ฆฌ ๊ทธ๋ฃน์„ ์ง€์–ด ์ง‘๊ณ„ ํ•จ์ˆ˜๋ฅผ ์ ์šฉ
3. ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ทธ ์ง‘๊ณ„ ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•œ ๊ฒฐ๊ณผ๋“ค ์ค‘์—์„œ having ์ ˆ์„ ๋งŒ์กฑํ•˜๋Š” ๊ฒฐ๊ณผ๋งŒ ๊ณจ๋ผ์„œ ์ถœ๋ ฅ

NULL ์˜ ์ฒ˜๋ฆฌ

๋„์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•

  • <ํ•„๋“œ์ด๋ฆ„> is null
  • <ํ•„๋“œ์ด๋ฆ„> is not null
  • ex) takes ํ…Œ์ด๋ธ”์—์„œ ์•„์ง ํ•™์ ์ด ๋ถ€์—ฌ๋˜์ง€ ์•Š์€ ํ•™์ƒ์˜ ํ•™๋ฒˆ์„ ๊ฒ€์ƒ‰

    • select stu_id
      from takes
      where grade is null
  • ex) takes ํ…Œ์ด๋ธ”์—์„œ ํ•™์ ์ด 'A+'๊ฐ€ ์•„๋‹Œ ํ•™์ƒ๋“ค์˜ ํ•™๋ฒˆ์„ ๊ฒ€์ƒ‰

    • select stu_id
      from takes
      where grade <> 'A+'
    • grade ํ•„๋“œ์˜ ๊ฐ’์ด ๋„์ธ ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•ด์„œ๋Š” ์งˆ์˜ ๊ฒฐ๊ณผ์— ํฌํ•จ๋˜์ง€ ์•Š์Œ
    • ๐Ÿ’ก ํ•˜์ง€๋งŒ count(*) ๋Š” ํŠน์ • ํ•„๋“œ๊ฐ€ ์•„๋‹Œ ๋ ˆ์ฝ”๋“œ ์ „์ฒด์— ๋Œ€ํ•œ ์—ฐ์‚ฐ์ด๋ฏ€๋กœ ๋„์˜ ์กด์žฌ ์—ฌ๋ถ€์™€๋Š” ๋ฌด๊ด€ํ•จ

์ค‘์ฒฉ ์งˆ์˜ nested query

in, not in

  • SQL๋ฌธ์„ ๋‹ค๋ฅธ SQL๋ฌธ ์•ˆ์— ์ค‘์ฒฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ์งˆ์˜

  • ๋ถ€์งˆ์˜๋Š” ์™ธ๋ถ€์งˆ์˜์˜ from ์ ˆ์ด๋‚˜ where ์ ˆ์— ์œ„์น˜

  • ex) '301ํ˜ธ' ๊ฐ•์˜์‹ค์—์„œ ๊ฐœ์„ค๋œ ๊ฐ•์ขŒ์˜ ๊ณผ๋ชฉ๋ช… ์„ ์ถœ๋ ฅ

    • ์œ„ ์งˆ์˜๋Š” ์•„๋ž˜ ์งˆ์˜์™€ ์˜๋ฏธ๊ฐ€ ๊ฐ™๋‹ค.

    • ๋ถ€ ์งˆ์˜ : ํ‚ค์›Œ๋“œ in ๋’ค์— ๋‚˜์˜ค๋Š” SQL๋ฌธ์œผ๋กœ์„œ class ํ…Œ์ด๋ธ”์—์„œ ๊ฐ•์˜์‹ค์ด '301ํ˜ธ'์ธ ๊ต๊ณผ๋ชฉ ๋ฒˆํ˜ธ๋ฅผ
      ๊ฒ€์ƒ‰

    • ์™ธ๋ถ€ ์งˆ์˜ : course ํ…Œ์ด๋ธ”์—์„œ course_id ํ•„๋“œ์˜ ๊ฐ’์ด ๋ถ€ ์งˆ์˜์˜ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์— ํฌํ•จ๋˜๋Š” ๊ฒฝ์šฐ(in)์—๋งŒ ๊ณผ๋ชฉ๋ช…์„ ์ถœ๋ ฅ

  • ex) 2012๋…„ 2ํ•™๊ธฐ์— ๊ฐœ์„ค๋˜์ง€ ์•Š์€ ๊ณผ๋ชฉ๋ช…์„ ๊ฒ€์ƒ‰

some, all

  • some= : ์ง€์ •๋œ ํ•„๋“œ์˜ ๊ฐ’์ด ๋ถ€์งˆ์˜ ๊ฒ€์ƒ‰๊ฒฐ๊ณผ์— ์กด์žฌํ•˜๋Š” ์ž„์˜์˜ ๊ฐ’๊ณผ ๊ฐ™์€์ง€๋ฅผ ๋‚˜ํƒ€๋‚ผ ๋•Œ ์‚ฌ์šฉ (in ๊ณผ ๊ฐ™์€ ์˜๋ฏธ)

  • <=some : ๋ถ€์งˆ์˜์˜ ๊ฒ€์ƒ‰๊ฒฐ๊ณผ์— ์กด์žฌํ•˜๋Š” ์ž„์˜์˜ ๊ฐ’๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€์ง€๋ฅผ ๋‚˜ํƒ€๋‚ผ ๋•Œ ์‚ฌ์šฉ

  • =all : ์ง€์ •๋œ ํ•„๋“œ์˜ ๊ฐ’์ด ๋ถ€์งˆ์˜ ๊ฒ€์ƒ‰๊ฒฐ๊ณผ์— ํฌํ•จ๋œ ๋ชจ๋“  ๊ฐ’๊ณผ ๊ฐ™์€์ง€๋ฅผ ํŒ๋‹จ

  • <=all : ์ง€์ •๋œ ํ•„๋“œ์˜ ๊ฐ’์ด ๋ถ€์งˆ์˜ ๊ฒ€์ƒ‰๊ฒฐ๊ณผ์— ํฌํ•จ๋œ ๋ชจ๋“  ๊ฐ’๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€์ง€๋ฅผ ํŒ๋‹จ

  • ex) ๊ฐ€์žฅ ๋งŽ์€ ์ˆ˜๊ฐ•์ธ์›์„ ๊ฐ€์ง„ ๊ฐ•์ขŒ๋ฅผ ๊ฒ€์ƒ‰

exits, not exists

๋ถ€์งˆ์˜ ๊ฒ€์ƒ‰๊ฒฐ๊ณผ์— ์ตœ์†Œํ•œ ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€์˜ ์—ฌ๋ถ€๋ฅผ ํ‘œํ˜„

  • exits : ์ตœ์†Œํ•œ ํ•œ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•˜๋ฉด ์ฐธ์ด ๋˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ฑฐ์ง“

  • not exits : ๋ถ€์งˆ์˜์˜ ๊ฒฐ๊ณผ์— ๋ ˆ์ฝ”๋“œ๊ฐ€ ํ•˜๋‚˜๋„ ์—†์œผ๋ฉด ์ฐธ์ด ๋˜๊ณ  ํ•˜๋‚˜๋ผ๋„ ์กด์žฌํ•˜๋ฉด ๊ฑฐ์ง“

  • ex) '301ํ˜ธ' ๊ฐ•์˜์‹ค์—์„œ ๊ฐœ์„ค๋œ ๊ฐ•์ขŒ์˜ ๊ณผ๋ชฉ๋ช…์„ ์ถœ๋ ฅ

  • ex) 2012๋…„ 2ํ•™๊ธฐ์— ๊ฐœ์„ค๋˜์ง€ ์•Š์€ ๊ณผ๋ชฉ๋ช…์„ ๊ฒ€์ƒ‰

๋ทฐ View

  • ๊ธฐ์กด ํ…Œ์ด๋ธ”๋“ค๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑ๋˜๋Š” ๊ฐ€์ƒ์˜ ํ…Œ์ด๋ธ”

  • ํ…Œ์ด๋ธ”์ฒ˜๋Ÿผ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๊ธฐ์กด์˜ ํ…Œ์ด๋ธ”๋“ค์„ ์กฐํ•ฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ์‹ค์ œ๋กœ ์กด์žฌํ•˜๋Š” ํ…Œ์ด๋ธ”์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ํ•จ

  • ๐Ÿ’ก ํŠน์ • ์‚ฌ์šฉ์ž์—๊ฒŒ ํ…Œ์ด๋ธ”์˜ ๋‚ด์šฉ ์ค‘ ์ผ๋ถ€๋ฅผ ์ˆจ๊ธธ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ์˜ ํšจ๊ณผ

  • ๐Ÿ’ก ๋ณต์žกํ•œ ์งˆ์˜์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ทฐ๋กœ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์งˆ์˜๋ฅผ ๊ฐ„๋‹จํžˆ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Œ

โœ”๏ธ ๋ทฐ ์ƒ์„ฑ

์ƒ์„ฑ๋œ ๋ทฐ๋Š” ํ…Œ์ด๋ธ”๊ณผ ๋™๋“ฑํ•˜๊ฒŒ ์‚ฌ์šฉ
create or replace view <๋ทฐ์ด๋ฆ„> as <select๋ฌธ>

  • or replace ํ‚ค์›Œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด <๋ทฐ์ด๋ฆ„>๊ณผ ๊ฐ™์€ ๋ทฐ๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ๊ธฐ์กด์˜ ๋ทฐ๋ฅผ ์ง€์šฐ๊ณ  ์ƒˆ๋กœ ์ƒ์„ฑ

  • ๋ทฐ ์ƒ์„ฑ์— ์‚ฌ์šฉ๋  select๋ฌธ

  • ๋Œ€๋ถ€๋ถ„์˜ DBMS ์—์„œ๋Š” ์‚ฌ์šฉ์ž ๊ณ„์ •์—๋Š” ๋ทฐ ์ƒ์„ฑ ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋˜์ง€ ์•Š์Œ

    • ๊ด€๋ฆฌ์ž ๊ณ„์ •์ด ์•„๋‹Œ ์‚ฌ์šฉ์ž ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•˜์—ฌ ๋ทฐ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋ทฐ ์ƒ์„ฑ๊ณผ ๊ด€๋ จ๋œ ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋˜์–ด์•ผ ํ•จ
    • ์˜ค๋ผํด์—์„œ ๋ทฐ ์ƒ์„ฑ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ธฐ ์œ„ํ•œ ํ˜•์‹
      • grant create view to <์‚ฌ์šฉ์ž ๊ณ„์ •>
  • ex) takes ํ…Œ์ด๋ธ”์—์„œ grade ํ•„๋“œ๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ํ•„๋“œ๋งŒ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋ทฐ ๋ฅผ ์ƒ์„ฑ

  • ex) student ํ…Œ์ด๋ธ”์—์„œ ์ปดํ“จํ„ฐ๊ณตํ•™๊ณผ ํ•™์ƒ๋“ค ๋ ˆ์ฝ”๋“œ๋งŒ ์ถ”์ถœํ•˜์—ฌ cs_student ๋ทฐ๋ฅผ ์ƒ์„ฑ

โœ”๏ธ ๋ทฐ ์‚ฌ์šฉ

  • ex) v_takes ๋ทฐ์— ๋Œ€ํ•ด select๋ฌธ์„ ์‹คํ–‰

  • ex) ๋ทฐ์— ๋Œ€ํ•ด์„œ insert, update, delete๋ฌธ์„ ์‹คํ–‰

    • v_takes ๋ทฐ์— ํฌํ•จ๋˜์ง€ ์•Š์€ grade ํ•„๋“œ์—๋Š” ๋„์ด ์‚ฝ์ž…
  • ์ฝ๊ธฐ ์ „์šฉ ๋ทฐ

    • ๋ทฐ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ insert, update, delete๋ฌธ๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ์กฐ์ž‘ ์–ธ์–ด์˜ ์‚ฌ์šฉ์„ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด,
      with read only ํ‚ค์›Œ๋“œ๋ฅผ ์ถ”๊ฐ€

โœ”๏ธ ๋ทฐ ์‚ญ์ œ

  • drop view <๋ทฐ์ด๋ฆ„>

๐Ÿ“š Reference

<๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ดํ•ด> (์ถœํŒ:์ดํ•œ๋ฏธ๋””์–ด) ์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.
์ž˜๋ชป๋œ ๋‚ด์šฉ์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค ๐Ÿ˜Š

profile
๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป๐ŸŽฎ

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