๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

DB

7์žฅ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์–ธ์–ด SQL

 

reference: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ๋ก  2ํŒ


01 SQL์˜ ์†Œ๊ฐœ

01-1 ์˜๋ฏธ

  • ๊ด€๊ณ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์œ„ํ•œ ํ‘œ์ค€ ์งˆ์˜์–ด
  • ๋น„์ ˆ์ฐจ์  ๋ฐ์ดํ„ฐ ์–ธ์–ด

01-2 ๋ฐœ์ „ ์—ญ์‚ฌ

  • SEQUEL(Structured English QUEry Language)์—์„œ ์œ ๋ž˜
    • SEQUEL : ์—ฐ๊ตฌ์šฉ ๊ด€๊ณ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ธ SYSTEM R์„ ์œ„ํ•œ ์–ธ์–ด
  • ๋ฏธ๊ตญ ํ‘œ์ค€ ์—ฐ๊ตฌ์†Œ์ธ ANSI์™€ ๊ตญ์ œ ํ‘œ์ค€ํ™” ๊ธฐ๊ตฌ์ธ ISO์—์„œ ํ‘œ์ค€ํ™” ์ž‘์—…์„ ์ง„ํ–‰, ๊ณ„์† ์ˆ˜์ • ๋ฐ ๋ณด์™„๋˜๊ณ  ์žˆ์Œ

01-3 ์‚ฌ์šฉ ๋ฐฉ์‹

  • ๋Œ€ํ™”์‹ SQL : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(DBMS - ์ˆ˜์—…์—์„œ๋Š” mssql)์— ์ง์ ‘ ์ ‘๊ทผํ•ด ์งˆ์˜๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ์‹คํ–‰
  • ์‚ฝ์ž… SQL : ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ์‚ฝ์ž…

01-4. ๋ถ„๋ฅ˜

๋ฐ์ดํ„ฐ ์ •์˜์–ด(DDL): ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๊ณ  ๋ณ€๊ฒฝ, ์ œ๊ฑฐํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณต

๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด(DML): ํ…Œ์ด๋ธ”์— ์ƒˆ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜, ํ…Œ์ด๋ธ”์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •, ์‚ญ์ œ,๊ฒ€์ƒ‰ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณต

๋ฐ์ดํ„ฐ ์ œ์–ด์–ด(DCL): ๋ณด์•ˆ์„ ์œ„ํ•ด ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ ‘๊ทผ ๋ฐ ์‚ฌ์šฉ ๊ถŒํ•œ์„ ์‚ฌ์šฉ์ž๋ณ„๋กœ ๋ถ€์—ฌํ•˜๊ฑฐ๋‚˜ ์ทจ์†Œ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณต

 

02 SQL์„ ์ด์šฉํ•œ ๋ฐ์ดํ„ฐ ์ •์˜

02-1. ํ…Œ์ด๋ธ” ์ƒ์„ฑ

CREATE TABLE ํ…Œ์ด๋ธ”์ด๋ฆ„ (
    โ‘  ์†์„ฑ์ด๋ฆ„ ๋ฐ์ดํ„ฐํƒ€์ž… [NOT NULL] [DEFAULT ๊ธฐ๋ณธ๊ฐ’]
    โ‘ก [PRIMARY KEY (์†์„ฑ๋ฆฌ์ŠคํŠธ)]
    โ‘ข [UNIQUE (์†์„ฑ๋ฆฌ์ŠคํŠธ)]
    โ‘ฃ [FOREIGN KEY (์†์„ฑ๋ฆฌ์ŠคํŠธ) REFERENCES ํ…Œ์ด๋ธ”์ด๋ฆ„(์†์„ฑ๋ฆฌ์ŠคํŠธ)] [ON DELETE ์˜ต์…ฅ] [ON UPDATE ์˜ต์…˜]
    โ‘ค [CONSTRAIN ์ด๋ฆ„] [CHECK(์กฐ๊ฑด)]
)

CREATE TABLE ๋ฌธ

  • [ ]์˜ ๋‚ด์šฉ์€ ์ƒ๋žต์ด ๊ฐ€๋Šฅ
  • SQL ์งˆ์˜๋ฌธ์€ ์„ธ๋ฏธ์ฝœ๋ก (;)์œผ๋กœ ๋ฌธ์žฅ์˜ ๋์„ ํ‘œ์‹œ
  • SQL ์งˆ์˜๋ฌธ์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Œ
  • โ‘  : ํ…Œ์ด๋ธ”์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ ์†์„ฑ์˜ ์ด๋ฆ„, ๋ฐ์ดํ„ฐ ํƒ€์ž…, ๊ธฐ๋ณธ ์ œ์•ฝ ์‚ฌํ•ญ ์ •์˜
  • โ‘ก : ๊ธฐ๋ณธํ‚ค ์ •์˜
  • โ‘ข : ๋Œ€์ฒดํ‚ค ์ •์˜
  • โ‘ฃ : ์™ธ๋ž˜ํ‚ค ์ •์˜
  • โ‘ค : ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ์œ„ํ•œ ์ œ์•ฝ์กฐ๊ฑด ์ •์˜

์†์„ฑ์˜ ์ •์˜

  • ํ…Œ์ด๋ธ”์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ ์†์„ฑ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์„ ํƒํ•œ ๋‹ค์Œ ๋„ ๊ฐ’ ํ—ˆ์šฉ ์—ฌ๋ถ€์™€ ๊ธฐ๋ณธ ๊ฐ’ ํ•„์š” ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •
  • NOT NULL
    • ์†์„ฑ์ด ๋„ ๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•˜๋Š” ํ‚ค์›Œ๋“œ
    • ์˜ˆ) ๊ณ ๊ฐ์•„์ด๋”” VARCHAR(20) NOT NULL
  • DEFAULT
    • ์†์„ฑ์˜ ๊ธฐ๋ณธ ๊ฐ’์„ ์ง€์ •ํ•˜๋Š” ํ‚ค์›Œ๋“œ
    • ์˜ˆ) ์ ๋ฆฝ๊ธˆ INT DEFAULT 0
    • ์˜ˆ) ๋‹ด๋‹น์ž VARCHAR(10) DEFAULT '๋ฐฉ๊ฒฝ์•„'
    • ๋ฌธ์ž์—ด์ด๋‚˜ ๋‚ ์งœ ๋ฐ์ดํ„ฐ๋Š” ์ž‘์€ ๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์–ด์„œ ํ‘œํ˜„ (์ž‘์€ ๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์—ฌ์ง„ ๋ฌธ์ž์—ด์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•จ)

์†์„ฑ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…

ํ‚ค์˜ ์ •์˜

  • PRIMARY KEY
    • ๊ธฐ๋ณธํ‚ค๋ฅผ ์ง€์ •ํ•˜๋Š” ํ‚ค์›Œ๋“œ
    • ์˜ˆ) PRIMARY KEY(๊ณ ๊ฐ์•„์ด๋””)
    • ์˜ˆ) PRIMARY KEY(์ฃผ๋ฌธ๊ณ ๊ฐ, ์ฃผ๋ฌธ์ œํ’ˆ)
  • UNIQUE
    • ๋Œ€์ฒดํ‚ค๋ฅผ ์ง€์ •ํ•˜๋Š” ํ‚ค์›Œ๋“œ
    • ๋Œ€์ฒดํ‚ค๋กœ ์ง€์ •๋˜๋Š” ์†์„ฑ์˜ ๊ฐ’์€ ์œ ์ผ์„ฑ์„ ๊ฐ€์ง€๋ฉฐ ๊ธฐ๋ณธํ‚ค์™€ ๋‹ฌ๋ฆฌ ๋„ ๊ฐ’์ด ํ—ˆ์šฉ๋จ
    • ์˜ˆ) UNIQUE(๊ณ ๊ฐ์ด๋ฆ„)
  • FOREIGN KEY
    • ์™ธ๋ž˜ํ‚ค๋ฅผ ์ง€์ •ํ•˜๋Š” ํ‚ค์›Œ๋“œ
    • ์™ธ๋ž˜ํ‚ค๊ฐ€ ์–ด๋–ค ํ…Œ์ด๋ธ”์˜ ๋ฌด์Šจ ์†์„ฑ์„ ์ฐธ์กฐํ•˜๋Š”์ง€ REFERENCES ํ‚ค์›Œ๋“œ ๋‹ค์Œ์— ์ œ์‹œ
    • ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด ์œ ์ง€๋ฅผ ์œ„ํ•ด ์ฐธ์กฐ๋˜๋Š” ํ…Œ์ด๋ธ”์—์„œ ํˆฌํ”Œ ์‚ญ์ œ ์‹œ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ์ง€์ •ํ•˜๋Š” ์˜ต์…˜
      • ON DELETE CASCADE: ๊ด€๋ จ ํˆฌํ”Œ์„ ํ•จ๊ป˜ ์‚ญ์ œํ•จ
      • ON DELETE SET DEFAULT: ๊ด€๋ จ ํˆฌํ”Œ์˜ ์™ธ๋ž˜ํ‚ค ๊ฐ’์„ ๋ฏธ๋ฆฌ ์ง€์ •ํ•œ ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•จ
      • ON DELETE SET NULL: ๊ด€๋ จ ํˆฌํ”Œ์˜ ์™ธ๋ž˜ํ‚ค ๊ฐ’์„ NULL๋กœ ๋ณ€๊ฒฝํ•จ
      • ON DELETE NO ACTION: ํˆฌํ”Œ์„ ์‚ญ์ œํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•จ
    • ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด ์œ ์ง€๋ฅผ ์œ„ํ•ด ์ฐธ์กฐ๋˜๋Š” ํ…Œ์ด๋ธ”์—์„œ ํˆฌํ”Œ ๋ณ€๊ฒฝ ์‹œ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ์ง€์ •ํ•˜๋Š” ์˜ต์…˜
      • ON UPDATE CASCADE : ๊ด€๋ จ ํˆฌํ”Œ์—์„œ ์™ธ๋ž˜ํ‚ค ๊ฐ’์„ ํ•จ๊ป˜ ๋ณ€๊ฒฝํ•จ
      • ON UPDATE SET DEFAULT : ๊ด€๋ จ ํˆฌํ”Œ์˜ ์™ธ๋ž˜ํ‚ค ๊ฐ’์„ ๋ฏธ๋ฆฌ ์ง€์ •ํ•œ ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•จ
      • ON UPDATE SET NULL : ๊ด€๋ จ ํˆฌํ”Œ์˜ ์™ธ๋ž˜ํ‚ค ๊ฐ’์„ NULL๋กœ ๋ณ€๊ฒฝํ•จ
      • ON UPDATE NO ACTION: ํˆฌํ”Œ์„ ๋ณ€๊ฒฝํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•จ
    • ์˜ˆ) FOREIGN KEY(์†Œ์†๋ถ€์„œ) REFERENCES ๋ถ€์„œ(๋ถ€์„œ๋ฒˆํ˜ธ) ON DELETE CASCADE ON UPDATE CASCADE
    • ์˜ˆ) FOREIGN KEY(์†Œ์†๋ถ€์„œ) REFERENCES ๋ถ€์„œ(๋ถ€์„œ๋ฒˆํ˜ธ)

๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด์˜ ์ •์˜

  • CHECK
    • ํ…Œ์ด๋ธ”์— ์ •ํ™•ํ•˜๊ณ  ์œ ํšจํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ • ์†์„ฑ์— ๋Œ€ํ•œ ์ œ์•ฝ์กฐ๊ฑด์„ ์ง€์ •
    • CONSTRAINT ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ๊ณ ์œ ์˜ ์ด๋ฆ„์„ ๋ถ€์—ฌํ•  ์ˆ˜๋„ ์žˆ์Œ
    • ์˜ˆ) CHECK(์žฌ๊ณ ๋Ÿ‰ >= 0 AND ์žฌ๊ณ ๋Ÿ‰ <= 10000)
    • ์˜ˆ) CONSTRAINT CHK_CPY CHECK(์ œ์กฐ์—…์ฒด = โ€˜ํ•œ๋น›์ œ๊ณผโ€™)

02-2. ํ…Œ์ด๋ธ” ๋ณ€๊ฒฝ

์ƒˆ๋กœ์šด ์†์„ฑ ์ถ”๊ฐ€

ALTER TABLE table_name
ADD ์†์„ฑ์ด๋ฆ„ ๋ฐ์ดํ„ฐํƒ€์ž… [NOT NULL] [DEFAULT ๊ธฐ๋ณธ๊ฐ’];
์˜ˆ์ œ: 'customer' ํ…Œ์ด๋ธ”์— '๊ฐ€์ž…๋‚ ์งœ' ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ด๋ณด์ž
ALTER TABLE customer 
ADD ๊ฐ€์ž…๋‚ ์งœ DATE;

๊ธฐ์กด ์†์„ฑ ์‚ญ์ œ

ALTER TABLE table_name
DROP COLUMN ์†์„ฑ์ด๋ฆ„;

๋งŒ์•ฝ ์‚ญ์ œํ•  ์†์„ฑ๊ณผ ๊ด€๋ จ๋œ ์ œ์•ฝ ์กฐ๊ฑด์ด ์กด์žฌํ•œ๋‹ค๋ฉด?

  • ์†์„ฑ ์‚ญ์ œ๊ฐ€ ์ˆ˜ํ–‰๋˜์ง€ ์•Š์Œ
  • ๊ด€๋ จ๋œ ์ œ์•ฝ ์กฐ๊ฑด์„ ๋จผ์ € ์‚ญ์ œํ•ด์•ผ ํ•จ
์˜ˆ์ œ: 'customer' ํ…Œ์ด๋ธ”์— '๊ฐ€์ž…๋‚ ์งœ' ์†์„ฑ์„ ์‚ญ์ œํ•ด๋ณด์ž
ALTER TABLE customer 
DROP COLUMN ๊ฐ€์ž…๋‚ ์งœ;

์ƒˆ๋กœ์šด ์ œ์•ฝ ์กฐ๊ฑด์˜ ์ถ”๊ฐ€

ALTER TABLE table_name
ADD CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด์ด๋ฆ„ ์ œ์•ฝ์กฐ๊ฑด๋‚ด์šฉ;
์˜ˆ์ œ: 'customer' ํ…Œ์ด๋ธ”์— `20์„ธ ์ด์ƒ์˜ ๊ณ ๊ฐ๋งŒ ๊ฐ€์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค`๋Š” ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•ด๋ณด์ž
ALTER TABLE customer
ADD CONSTRAINT check_age CHECK(20<=age);

๊ธฐ์กด ์ œ์•ฝ ์กฐ๊ฑด์˜ ์‚ญ์ œ

ALTER TABLE table_name
DROP CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด์ด๋ฆ„;
์˜ˆ์ œ: 'customer' ํ…Œ์ด๋ธ”์—์„œ ์œ„์—์„œ ์ถ”๊ฐ€ํ–ˆ๋˜ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด์„ ์‚ญ์ œํ•ด๋ณด์ž
ALTER TABLE customer
DROP CONSTRAINT check_age;

02-3. ํ…Œ์ด๋ธ” ์‚ญ์ œ

DROP TABLE ํ…Œ์ด๋ธ”์ด๋ฆ„;

๋งŒ์•ฝ ์‚ญ์ œํ•  ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐํ•˜๋Š” ํ…Œ์ด๋ธ”์ด ์žˆ๋‹ค๋ฉด?

  • ํ…Œ์ด๋ธ” ์‚ญ์ œ๊ฐ€ ์ˆ˜ํ–‰๋˜์ง€ ์•Š์Œ.
  • ๊ด€๋ จ๋œ ์™ธ๋ž˜ํ‚ค ์ œ์•ฝ์กฐ๊ฑด์„ ๋จผ์ € ์‚ญ์ œํ•ด์•ผ ํ•จ.

์˜ˆ์ œ: 'customer' ํ…Œ์ด๋ธ”์„ ์‚ญ์ œํ•ด๋ณด์ž 

DROP TABLE customer;

03 SQL์„ ์ด์šฉํ•œ ๋ฐ์ดํ„ฐ ์กฐ์ž‘

03-1 ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰

๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋Š” ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜๋œ๋‹ค.

SELECT [ ALL | DISTINCT ] ์†์„ฑ๋ฆฌ์ŠคํŠธ
FROM ํ…Œ์ด๋ธ”๋ฆฌ์ŠคํŠธ
[ WHERE ์กฐ๊ฑด ]
[ GROUP BY ์†์„ฑ๋ฆฌ์ŠคํŠธ [ HAVING ์กฐ๊ฑด ] ]
[ ORDER BY ์†์„ฑ๋ฆฌ์ŠคํŠธ [ ASC | DESC ] ];

ALL | DISTINCT

  • ALL: ๊ฒฐ๊ณผ ํ…Œ์ด๋ธ”์ด ํˆฌํ”Œ์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜๋„๋ก ์ง€์ •, ์ƒ๋žต ๊ฐ€๋Šฅ 
  • DISTINCT: ๊ฒฐ๊ณผ ํ…Œ์ด๋ธ”์ด ํˆฌํ”Œ์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋„๋ก ์ง€์ •
    • SELECT DISTINCT ์ œ์กฐ์—…์ฒด FROM ์ œํ’ˆ
  • ๋ชจ๋“  ์†์„ฑ์„ ๊ฒ€์ƒ‰ํ•  ๋•Œ๋Š” ๋ชจ๋“  ์†์„ฑ์˜ ์ด๋ฆ„์„ ๋‚˜์—ดํ•˜์ง€ ์•Š๊ณ  * ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    • SELECT * FROM ์ œํ’ˆ

AS

AS ํ‚ค์›Œ๋“œ๋Š” ์ƒ๋žต ๊ฐ€๋Šฅ

  • ์ƒˆ๋กœ์šด ์ด๋ฆ„์— ๊ณต๋ฐฑ์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด ํฐ๋”ฐ์˜ดํ‘œ๋‚˜ ์ž‘์€๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์–ด์ฃผ์–ด์•ผ ํ•จ
  • ์˜ค๋ผํด์—์„œ๋Š” ํฐ๋”ฐ์˜ดํ‘œ, MS SQL ์„œ๋ฒ„์—์„œ๋Š” ์ž‘์€๋”ฐ์˜ดํ‘œ ์‚ฌ์šฉ
  • AS ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด ๊ฒฐ๊ณผ ํ…Œ์ด๋ธ”์—์„œ ์†์„ฑ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ์–ด ์ถœ๋ ฅ ๊ฐ€๋Šฅ
  • SELECT ์ œํ’ˆ๋ช…, ๋‹จ๊ฐ€ AS ๊ฐ€๊ฒฉ FROM ์ œํ’ˆ

์‚ฐ์ˆ ์‹ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

  • ์‚ฐ์ˆ ์‹: ์†์„ฑ์˜ ์ด๋ฆ„๊ณผ +, -, *, / ๋“ฑ์˜ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž์™€ ์ƒ์ˆ˜๋กœ ๊ตฌ์„ฑ
  • ์†์„ฑ์˜ ๊ฐ’์ด ์‹ค์ œ๋กœ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ณ  ๊ฒฐ๊ณผ ํ…Œ์ด๋ธ”์—์„œ๋งŒ ๊ณ„์‚ฐ๋œ ๊ฒฐ๊ณผ ๊ฐ’์ด ์ถœ๋ ฅ๋จ
  • SELECT ์ œํ’ˆ๋ช…, ๋‹จ๊ฐ€ + 500 AS "์กฐ์ • ๋‹จ๊ฐ€" FROM ์ œํ’ˆ

WHERE ์กฐ๊ฑด ๊ฒ€์ƒ‰

  • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ๊ฒ€์ƒ‰
  • WHERE ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ๋น„๊ต ์—ฐ์‚ฐ์ž์™€ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•œ ๊ฒ€์ƒ‰ ์กฐ๊ฑด ์ œ์‹œ
      • ์ˆซ์ž๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฌธ์ž๋‚˜ ๋‚ ์งœ ๊ฐ’์„ ๋น„๊ตํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅ
        • ์˜ˆ) 'A' < 'C'
        • ์˜ˆ) '2019-12-01' < '2019-12-02'
      • ์กฐ๊ฑด์—์„œ ๋ฌธ์ž๋‚˜ ๋‚ ์งœ ๊ฐ’์€ ์ž‘์€๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์–ด์„œ ํ‘œํ˜„
      • ๋น„๊ต ์—ฐ์‚ฐ์ž
      •  
    • ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž
    • LIKE
    • NULL
      • IS NULL ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด ํŠน์ • ์†์„ฑ์˜ ๊ฐ’์ด ๋„ ๊ฐ’์ธ์ง€๋ฅผ ๋น„๊ต
      • IS NOT NULL ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด ํŠน์ • ์†์„ฑ์˜ ๊ฐ’์ด ๋„ ๊ฐ’์ด ์•„๋‹Œ์ง€๋ฅผ ๋น„๊ต
      • ๊ฒ€์ƒ‰ ์กฐ๊ฑด์—์„œ ๋„ ๊ฐ’์€ ๋‹ค๋ฅธ ๊ฐ’๊ณผ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•˜๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ๋ชจ๋‘ ๊ฑฐ์ง“์ด ๋จ
  • SELECT ์ œํ’ˆ๋ช…, ์žฌ๊ณ ๋Ÿ‰, ๋‹จ๊ฐ€
    FROM ์ œํ’ˆ
    WHERE ์ œ์กฐ์—…์ฒด = 'ํ•œ๋น›์ œ๊ณผ';
    
    SELECT ์ฃผ๋ฌธ์ œํ’ˆ, ์ˆ˜๋Ÿ‰, ์ฃผ๋ฌธ์ผ์ž
    FROM ์ฃผ๋ฌธ
    WHERE ์ฃผ๋ฌธ๊ณ ๊ฐ = 'apple' AND ์ˆ˜๋Ÿ‰ >= 15;
    
    SELECT ๊ณ ๊ฐ์ด๋ฆ„, ๋‚˜์ด, ๋“ฑ๊ธ‰, ์ ๋ฆฝ๊ธˆ
    FROM ๊ณ ๊ฐ
    WHERE ๊ณ ๊ฐ์ด๋ฆ„ LIKE '๊น€%';
    WHERE ๊ณ ๊ฐ์ด๋ฆ„ LIKE '_____';
    
    SELECT ๊ณ ๊ฐ์ด๋ฆ„
    FROM ๊ณ ๊ฐ
    WHERE ๋‚˜์ด IS NULL;
    WHERE ๋‚˜์ด IS NOT NULL;

ORDER BY ์ •๋ ฌ ๊ฒ€์ƒ‰

  • ORDER BY ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด ๊ฒฐ๊ณผ ํ…Œ์ด๋ธ” ๋‚ด์šฉ์„ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ์ˆœ์„œ๋กœ ์ถœ๋ ฅ
  • ORDER BY ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ์ •๋ ฌ ๊ธฐ์ค€์ด ๋˜๋Š” ์†์„ฑ๊ณผ ์ •๋ ฌ ๋ฐฉ์‹์„ ์ง€์ •
    • ์˜ค๋ฆ„์ฐจ์ˆœ(๊ธฐ๋ณธ): ASC / ๋‚ด๋ฆผ์ฐจ์ˆœ: DESC
    • ๋„ ๊ฐ’์€ ์˜ค๋ฆ„์ฐจ์ˆœ์—์„œ๋Š” ๋งจ ๋งˆ์ง€๋ง‰์— ์ถœ๋ ฅ๋˜๊ณ , ๋‚ด๋ฆผ์ฐจ์ˆœ์—์„œ๋Š” ๋งจ ๋จผ์ € ์ถœ๋ ฅ๋จ
    • ์—ฌ๋Ÿฌ ๊ธฐ์ค€์— ๋”ฐ๋ผ ์ •๋ ฌํ•˜๋ ค๋ฉด ์ •๋ ฌ ๊ธฐ์ค€์ด ๋˜๋Š” ์†์„ฑ์„ ์ฐจ๋ก€๋Œ€๋กœ ์ œ์‹œ
  • SELECT ๊ณ ๊ฐ์ด๋ฆ„, ๋“ฑ๊ธ‰, ๋‚˜์ด FROM ๊ณ ๊ฐ ORDER BY ๋‚˜์ด DESC;

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

  • ํŠน์ • ์†์„ฑ ๊ฐ’์„ ํ†ต๊ณ„์ ์œผ๋กœ ๊ณ„์‚ฐํ•œ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด ์ง‘๊ณ„ ํ•จ์ˆ˜๋ฅผ ์ด์šฉ
    • ์ง‘๊ณ„ ํ•จ์ˆ˜: ์—ด ํ•จ์ˆ˜(column function)๋ผ๊ณ ๋„ ํ•จ. ๊ฐœ์ˆ˜, ํ•ฉ๊ณ„, ํ‰๊ท , ์ตœ๋Œ“๊ฐ’, ์ตœ์†Ÿ๊ฐ’์˜ ๊ณ„์‚ฐ ๊ธฐ๋Šฅ์„ ์ œ๊ณต
  • ์ง‘๊ณ„ ํ•จ์ˆ˜ ์‚ฌ์šฉ ์‹œ ์ฃผ์˜ ์‚ฌํ•ญ
    • ์ง‘๊ณ„ ํ•จ์ˆ˜๋Š” ๋„์ธ ์†์„ฑ ๊ฐ’์€ ์ œ์™ธํ•˜๊ณ  ๊ณ„์‚ฐํ•จ
    • ์ง‘๊ณ„ ํ•จ์ˆ˜๋Š” WHERE ์ ˆ์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ณ , SELECT ์ ˆ์ด๋‚˜ HAVING ์ ˆ์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

  • SELECT COUNT(๋‚˜์ด) AS ๊ณ ๊ฐ์ˆ˜ FROM ๊ณ ๊ฐ;
    SELECT COUNT(*) AS ๊ณ ๊ฐ์ˆ˜ FROM ๊ณ ๊ฐ; 
    -- ์ •ํ™•ํ•œ ๊ฐœ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ณดํ†ต ๊ธฐ๋ณธํ‚ค ์†์„ฑ์ด๋‚˜ *๋ฅผ ์ฃผ๋กœ ์ด์šฉ
    SELECT COUNT(DISTINCT ์ œ์กฐ์—…์ฒด) AS "์ œ์กฐ์—…์ฒด ์ˆ˜" FROM ์ œํ’ˆ;
    -- DISTINCT ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด ์ค‘๋ณต์„ ์—†์• ๊ณ  ์„œ๋กœ ๋‹ค๋ฅธ ์ œ์กฐ์—…์ฒด์˜ ๊ฐœ์ˆ˜๋งŒ ๊ณ„์‚ฐ

GROUP BY ๊ทธ๋ฃน๋ณ„ ๊ฒ€์ƒ‰

  • GROUP BY ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด ํŠน์ • ์†์„ฑ์˜ ๊ฐ’์ด ๊ฐ™์€ ํˆฌํ”Œ์„ ๋ชจ์•„ ๊ทธ๋ฃน์„ ๋งŒ๋“ค๊ณ , ๊ทธ๋ฃน๋ณ„๋กœ ๊ฒ€์ƒ‰
    • GROUP BY ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ๊ทธ๋ฃน์„ ๋‚˜๋ˆ„๋Š” ๊ธฐ์ค€์ด ๋˜๋Š” ์†์„ฑ์„ ์ง€์ •
  • HAVING ํ‚ค์›Œ๋“œ๋ฅผ ํ•จ๊ป˜ ์ด์šฉํ•ด ๊ทธ๋ฃน์— ๋Œ€ํ•œ ์กฐ๊ฑด์„ ์ž‘์„ฑ
  • ๊ทธ๋ฃน์„ ๋‚˜๋ˆ„๋Š” ๊ธฐ์ค€์ด ๋˜๋Š” ์†์„ฑ์„ SELECT ์ ˆ์—๋„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ
  • ์ง‘๊ณ„ ํ•จ์ˆ˜๋‚˜ GROUP BY ์ ˆ์— ๋ช…์‹œ๋œ ์†์„ฑ ์™ธ์˜ ์†์„ฑ์€ SELECT ์ ˆ์— ์ž‘์„ฑ ๋ถˆ๊ฐ€
  • Q. ์ œํ’ˆ ํ…Œ์ด๋ธ”์—์„œ ์ œํ’ˆ์„ 3๊ฐœ ์ด์ƒ ์ œ์กฐํ•œ ์ œ์กฐ์—…์ฒด๋ณ„๋กœ ์ œํ’ˆ์˜ ๊ฐœ์ˆ˜์™€, ์ œํ’ˆ ์ค‘ ๊ฐ€์žฅ ๋น„์‹ผ ๋‹จ๊ฐ€๋ฅผ ๊ฒ€์ƒ‰
    
    SELECT ์ œ์กฐ์—…์ฒด, COUNT(*) AS ์ œํ’ˆ์ˆ˜, MAX(๋‹จ๊ฐ€) AS ์ตœ๊ณ ๊ฐ€
    FROM ์ œํ’ˆ
    GROUP BY ์ œ์กฐ์—…์ฒด HAVING COUNT(*) >= 3;
    -- ์ง‘๊ณ„ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ ์กฐ๊ฑด์€ WHERE ์ ˆ์—๋Š” ์ž‘์„ฑํ•  ์ˆ˜ ์—†๊ณ  HAVING ์ ˆ์—์„œ ์ž‘์„ฑ

์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์กฐ์ธ ๊ฒ€์ƒ‰

  • ์กฐ์ธ ๊ฒ€์ƒ‰: ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ
  • ์กฐ์ธ ์†์„ฑ: ์กฐ์ธ ๊ฒ€์ƒ‰์„ ์œ„ํ•ด ํ…Œ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ์†์„ฑ
    • ์—ฐ๊ฒฐํ•˜๋ ค๋Š” ํ…Œ์ด๋ธ” ๊ฐ„์— ์กฐ์ธ ์†์„ฑ์˜ ์ด๋ฆ„์€ ๋‹ฌ๋ผ๋„ ๋˜์ง€๋งŒ ๋„๋ฉ”์ธ์€ ๊ฐ™์•„์•ผ ํ•จ
    • ์ผ๋ฐ˜์ ์œผ๋กœ ์™ธ๋ž˜ํ‚ค๋ฅผ ์กฐ์ธ ์†์„ฑ์œผ๋กœ ์ด์šฉํ•จ
  • FROM ์ ˆ์— ๊ฒ€์ƒ‰์— ํ•„์š”ํ•œ ๋ชจ๋“  ํ…Œ์ด๋ธ”์„ ๋‚˜์—ด
  • WHERE ์ ˆ์— ์กฐ์ธ ์†์„ฑ์˜ ๊ฐ’์ด ๊ฐ™์•„์•ผ ํ•จ์„ ์˜๋ฏธํ•˜๋Š” ์กฐ์ธ ์กฐ๊ฑด์„ ์ œ์‹œ
  • ๊ฐ™์€ ์ด๋ฆ„์˜ ์†์„ฑ์ด ์„œ๋กœ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์— ์กด์žฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์†์„ฑ ์ด๋ฆ„ ์•ž์— ํ•ด๋‹น ์†์„ฑ์ด ์†Œ์†๋œ ํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„์„ ํ‘œ์‹œ ์˜ˆ) ์ฃผ๋ฌธ.์ฃผ๋ฌธ๊ณ ๊ฐ
SELECT ์ฃผ๋ฌธ์ œํ’ˆ, ์ฃผ๋ฌธ์ผ์ž -- ์ด๋ฆ„์ด ๊ฐ™์€ ์†์„ฑ์ด ์—†๋‹ค๋ฉด ํ…Œ์ด๋ธ” ์ด๋ฆ„ ์—†์ด ์†์„ฑ ์ด๋ฆ„์œผ๋กœ๋งŒ ์ž‘์„ฑํ•ด๋„ ๋จ
FROM ์ œํ’ˆ p , ์ฃผ๋ฌธ o
WHERE o.์ฃผ๋ฌธ๊ณ ๊ฐœ = 'banana' AND o.์ œํ’ˆ๋ฒˆํ˜ธ = p.์ฃผ๋ฌธ์ œํ’ˆ;
-- ํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„์„ ๋Œ€์‹ ํ•˜๋Š” ๋‹จ์ˆœํ•œ ๋ณ„๋ช…์„ ์ œ์‹œํ•˜์—ฌ ์งˆ์˜๋ฌธ์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ๋„ ์ข‹๋‹ค.

-- ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์กฐ์ธ ๊ฒ€์ƒ‰
SELECT ์ œํ’ˆ, ์ œํ’ˆ๋ช…
FROM ๊ณ ๊ฐ, ์ œํ’ˆ , ์ฃผ๋ฌธ
WHERE ๊ณ ๊ฐ.๊ณ ๊ฐ์ด๋ฆ„ = '๊ณ ๋ช…์„' AND ๊ณ ๊ฐ.๊ณ ๊ฐ์•„์ด๋”” = ์ฃผ๋ฌธ.์ฃผ๋ฌธ๊ณ ๊ฐ AND ์ œํ’ˆ.์ œํ’ˆ๋ฒˆํ˜ธ = ์ฃผ๋ฌธ.์ฃผ๋ฌธ์ œํ’ˆ;

๋ถ€์† ์งˆ์˜๋ฌธ์„ ์ด์šฉํ•œ ๊ฒ€์ƒ‰

  • SELECT ๋ฌธ ์•ˆ์— ๋˜ ๋‹ค๋ฅธ SELECT ๋ฌธ์„ ํฌํ•จํ•˜๋Š” ์งˆ์˜
    • ์ƒ์œ„ ์งˆ์˜๋ฌธ(์ฃผ ์งˆ์˜๋ฌธ): ๋‹ค๋ฅธ SELECT ๋ฌธ์„ ํฌํ•จํ•˜๋Š” SELECT ๋ฌธ
    • ๋ถ€์† ์งˆ์˜๋ฌธ(์„œ๋ธŒ ์งˆ์˜๋ฌธ): ๋‹ค๋ฅธ SELECT ๋ฌธ ์•ˆ์— ๋“ค์–ด ์žˆ๋Š” SELECT ๋ฌธ
      • ๊ด„ํ˜ธ๋กœ ๋ฌถ์–ด์„œ ์ž‘์„ฑ, ORDER BY ์ ˆ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ
      • ๋‹จ์ผ ํ–‰ ๋ถ€์† ์งˆ์˜๋ฌธ: ํ•˜๋‚˜์˜ ํ–‰์„ ๊ฒฐ๊ณผ๋กœ ๋ฐ˜ํ™˜
      • ๋‹ค์ค‘ ํ–‰ ๋ถ€์† ์งˆ์˜๋ฌธ: ํ•˜๋‚˜ ์ด์ƒ์˜ ํ–‰์„ ๊ฒฐ๊ณผ๋กœ ๋ฐ˜ํ™˜
  • ๋ถ€์† ์งˆ์˜๋ฌธ์„ ๋จผ์ € ์ˆ˜ํ–‰ํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ด์šฉํ•ด ์ƒ์œ„ ์งˆ์˜๋ฌธ์„ ์ˆ˜ํ–‰
  • ๋ถ€์† ์งˆ์˜๋ฌธ๊ณผ ์ƒ์œ„ ์งˆ์˜๋ฌธ์„ ์—ฐ๊ฒฐํ•˜๋Š” ์—ฐ์‚ฐ์ž๊ฐ€ ํ•„์š”
    • ๋‹จ์ผ ํ–‰ ๋ถ€์† ์งˆ์˜๋ฌธ์€ ๋น„๊ต ์—ฐ์‚ฐ์ž(=, <>, >, >=, <, <=) ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    • ๋‹ค์ค‘ ํ–‰ ๋ถ€์† ์งˆ์˜๋ฌธ์€ ๋น„๊ต ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ ๋ถˆ๊ฐ€, ๋‹ค์ค‘ ํ–‰ ๋ถ€์† ์งˆ์˜๋ฌธ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์—ฐ์‚ฐ์ž
  • -- ์ตœ๋Œ€ ์ ๋ฆฝ๊ธˆ์€ ๋‹จ์ผ ๊ฐ’์ด๋ฏ€๋กœ ๋‹จ์ผ ํ–‰ ๋ถ€์† ์งˆ์˜๋ฌธ (๋น„๊ต ์—ฐ์‚ฐ์ž = ๋ฅผ ์ด์šฉ)
    SELECT ๊ณ ๊ฐ์ด๋ฆ„, ์ ๋ฆฝ๊ธˆ
    FROM ๊ณ ๊ฐ
    WHERE ์ ๋ฆฝ๊ธˆ = (SELECT MAX(์ ๋ฆฝ๊ธˆ) FROM ๊ณ ๊ฐ);
    
    -- 'banana' ๊ณ ๊ฐ์ด ์ฃผ๋ฌธํ•œ ์ œํ’ˆ์€ ์—ฌ๋Ÿฌ ๊ฐœ์ด๋ฏ€๋กœ ๋‹ค์ค‘ ํ–‰ ๋ถ€์† ์งˆ์˜๋ฌธ (IN ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉ)
    SELECT ์ œํ’ˆ๋ช…, ์ œ์กฐ์—…์ฒด
    FROM ์ œํ’ˆ
    WHERE ์ œํ’ˆ๋ฒˆํ˜ธ IN (SELECT ์ฃผ๋ฌธ๋ฒˆํ˜ธ FROM ์ฃผ๋ฌธ WHERE ์ฃผ๋ฌธ๊ณ ๊ฐ = 'banana');
  • 1. ์กฐ์ธ ์งˆ์˜๋ฅผ ์ด์šฉํ•œ select ๋ฌธ
    SELECT ์ œํ’ˆ.์ œํ’ˆ๋ช…, ์ œํ’ˆ.์ œ์กฐ์—…์ฒด
    FROM ์ œํ’ˆ, ์ฃผ๋ฌธ
    WHERE ์ œํ’ˆ.์ œํ’ˆ๋ฒˆํ˜ธ = ์ฃผ๋ฌธ.์ฃผ๋ฌธ์ œํ’ˆ AND ์ฃผ๋ฌธ.์ฃผ๋ฌธ๊ณ ๊ฐ = 'banana';
    
    2. EXISTS ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•œ SELECT ๋ฌธ -- ์—ฌ๊ธฐ์„œ exists๋Š” ๋ถ€์† ์งˆ์˜๋ฌธ์—์„œ table์„ ํ•˜๋‚˜๋งŒ ์”€.
    SELECT ์ œํ’ˆ๋ช…, ์ œ์กฐ์—…์ฒด
    FROM ์ œํ’ˆ
    WHERE EXISTS (SELECT * FROM ์ฃผ๋ฌธ WHERE ์ œํ’ˆ.์ œํ’ˆ๋ฒˆํ˜ธ = ์ฃผ๋ฌธ.์ฃผ๋ฌธ์ œํ’ˆ AND ์ฃผ๋ฌธ.์ฃผ๋ฌธ๊ณ ๊ฐ = 'banana');
    
    3. IN ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•œ SELECT ๋ฌธ
    SELECT ์ œํ’ˆ๋ช…, ์ œ์กฐ์—…์ฒด
    FROM ์ œํ’ˆ
    WHERE ์ œํ’ˆ๋ฒˆํ˜ธ IN (SELECT ์ฃผ๋ฌธ์ œํ’ˆ FROM ์ฃผ๋ฌธ WHERE ์ฃผ๋ฌธ๊ณ ๊ฐ = 'banana');

03-2 ๋ฐ์ดํ„ฐ ์‚ฝ์ž…

1. ๋ฐ์ดํ„ฐ ์ง์ ‘ ์‚ฝ์ž…

INSERT
INTO ํ…Œ์ด๋ธ”์ด๋ฆ„ [(์†์„ฑ๋ฆฌ์ŠคํŠธ)]
VALUES (์†์„ฑ๊ฐ’๋ฆฌ์ŠคํŠธ);
  • INTO ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ํˆฌํ”Œ์„ ์‚ฝ์ž…ํ•  ํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„๊ณผ ์†์„ฑ์˜ ์ด๋ฆ„์„ ๋‚˜์—ด
    • ์†์„ฑ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ๋žตํ•˜๋ฉด ํ…Œ์ด๋ธ”์„ ์ •์˜ํ•  ๋•Œ ์ง€์ •ํ•œ ์†์„ฑ์˜ ์ˆœ์„œ๋Œ€๋กœ ๊ฐ’์ด ์‚ฝ์ž…๋จ
  • VALUES ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ์‚ฝ์ž…ํ•  ์†์„ฑ ๊ฐ’๋“ค์„ ๋‚˜์—ด
  • INTO ์ ˆ์˜ ์†์„ฑ ์ด๋ฆ„๊ณผ VALUES ์ ˆ์˜ ์†์„ฑ ๊ฐ’์€ ์ˆœ์„œ๋Œ€๋กœ ์ผ๋Œ€์ผ ๋Œ€์‘๋˜์–ด์•ผ ํ•จ
INSERT
INTO ๊ณ ๊ฐ(๊ณ ๊ฐ์•„์ด๋””, ๊ณ ๊ฐ์ด๋ฆ„, ๋‚˜์ด, ๋“ฑ๊ธ‰, ์ง์—…, ์ ๋ฆฝ๊ธˆ)
VALUES ('strawberry', '์ตœ์œ ๊ฒฝ', 30, 'vip', '๊ณต๋ฌด์›', 100)

INSERT -- ์œ„์˜ ์ฟผ๋ฆฌ์™€ ๋™์ผํ•จ.
INTO ๊ณ ๊ฐ
VALUES ('strawberry', '์ตœ์œ ๊ฒฝ', 30, 'vip', '๊ณต๋ฌด์›', 100)


INSERT -- ๋“ฑ๊ธ‰์—๋Š” null ์ €์žฅ๋จ
INTO ๊ณ ๊ฐ(๊ณ ๊ฐ์•„์ด๋””, ๊ณ ๊ฐ์ด๋ฆ„, ๋‚˜์ด, ์ง์—…, ์ ๋ฆฝ๊ธˆ)
VALUES ('strawberry', '์ตœ์œ ๊ฒฝ', 30, '๊ณต๋ฌด์›', 100)

INSERT -- ๋“ฑ๊ธ‰์—๋Š” null ์ €์žฅ๋จ
INTO ๊ณ ๊ฐ
VALUES ('strawberry', '์ตœ์œ ๊ฒฝ', 30, NULL, '๊ณต๋ฌด์›', 100)

2. ๋ถ€์† ์งˆ์˜๋ฌธ์„ ์ด์šฉํ•œ ๋ฐ์ดํ„ฐ ์‚ฝ์ž…

SELECT ๋ฌธ์„ ์ด์šฉํ•ด ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์—์„œ ๊ฒ€์ƒ‰ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…

INSERT
INTO ํ…Œ์ด๋ธ”์ด๋ฆ„[(์†์„ฑ๋ฆฌ์ŠคํŠธ)]
SELECT ๋ฌธ;
Q. ํ•œ๋น›์ œ๊ณผ์—์„œ ์ œ์กฐํ•œ ์ œํ’ˆ์˜ ์ œํ’ˆ๋ช…, ์žฌ๊ณ ๋Ÿ‰, ๋‹จ๊ฐ€๋ฅผ ์ œํ’ˆ ํ…Œ์ด๋ธ”์—์„œ ๊ฒ€์ƒ‰ํ•˜์—ฌ ํ•œ๋น›์ œํ’ˆ ํ…Œ์ด๋ธ”์— ์‚ฝ์ž…
A.
INSERT
INTO ํ•œ๋น›์ œํ’ˆ(์ œํ’ˆ๋ช…, ์žฌ๊ณ ๋Ÿ‰, ๋‹จ๊ฐ€)
SELECT ์ œํ’ˆ๋ช…, ์žฌ๊ณ ๋Ÿ‰, ๋‹จ๊ฐ€ FROM ์ œํ’ˆ WHERE ์ œ์กฐ์—…์ฒด='ํ•œ๋น›์ œ๊ณผ'

03-3 ๋ฐ์ดํ„ฐ ์ˆ˜์ •

ํ…Œ์ด๋ธ”์— ์ €์žฅ๋œ ํˆฌํ”Œ์—์„œ ํŠน์ • ์†์„ฑ์˜ ๊ฐ’์„ ์ˆ˜์ •

UPDATE ํ…Œ์ด๋ธ”์ด๋ฆ„
SET ์†์„ฑ์ด๋ฆ„1=๊ฐ’1, ์†์„ฑ์ด๋ฆ„2=๊ฐ’2, ...
[ WHERE ์กฐ๊ฑด ]
  • SET ํ‚ค์›Œ๋“œ ๋‹ค์Œ์— ์†์„ฑ ๊ฐ’์„ ์–ด๋–ป๊ฒŒ ์ˆ˜์ •ํ•  ๊ฒƒ์ธ์ง€๋ฅผ ์ง€์ •
  • WHERE ์ ˆ์— ์ œ์‹œ๋œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ํˆฌํ”Œ์— ๋Œ€ํ•ด์„œ๋งŒ ์†์„ฑ ๊ฐ’์„ ์ˆ˜์ •
    • WHERE ์ ˆ์„ ์ƒ๋žตํ•˜๋ฉด ํ…Œ์ด๋ธ”์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ํˆฌํ”Œ์„ ๋Œ€์ƒ์œผ๋กœ ์ˆ˜์ •
-- Q. ์ œํ’ˆ ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๋ชจ๋“  ์ œํ’ˆ์˜ ๋‹จ๊ฐ€๋ฅผ 10% ์ธ์ƒ
UPDATE ์ œํ’ˆ 
SET ๋‹จ๊ฐ€ = ๋‹จ๊ฐ€ * 1.1

-- Q. ์ •์†Œํ™” ๊ณ ๊ฐ์ด ์ฃผ๋ฌธํ•œ ์ œํ’ˆ์˜ ์ฃผ๋ฌธ์ˆ˜๋Ÿ‰์„ 5๊ฐœ๋กœ ์ˆ˜์ • (๋ถ€์† ์งˆ์˜๋ฌธ ์‚ฌ์šฉ)
UPDATE ์ œํ’ˆ
SET ์ˆ˜๋Ÿ‰ = 5
WHERE ์ฃผ๋ฌธ๊ณ ๊ฐ IN (SLECT ๊ณ ๊ฐ์•„์ด๋”” FROM ๊ณ ๊ฐ WHERE ๊ณ ๊ฐ์ด๋ฆ„='์ •์†Œํ™”');

03-4 ๋ฐ์ดํ„ฐ ์‚ญ์ œ

ํ…Œ์ด๋ธ”์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œ

DELETE
FROM ํ…Œ์ด๋ธ”์ด๋ฆ„
[ WHERE ์กฐ๊ฑด ]
  • WHERE ์ ˆ์— ์ œ์‹œํ•œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ํˆฌํ”Œ๋งŒ ์‚ญ์ œ
    • WHERE ์ ˆ์„ ์ƒ๋žตํ•˜๋ฉด ํ…Œ์ด๋ธ”์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ํˆฌํ”Œ์„ ์‚ญ์ œํ•ด ๋นˆ ํ…Œ์ด๋ธ”์ด ๋จ ๋นˆ ํ…Œ์ด๋ธ”์ด ๋‚จ์Œ, DROP TABLE๊ณผ๋Š” ๋‹ค๋ฆ„
-- ๋ถ€์† ์งˆ์˜๋ฌธ์„ ์ด์šฉํ•œ DELETE ๋ฌธ
DELETE
FROM ์ฃผ๋ฌธ
WHERE ์ฃผ๋ฌธ๊ณ ๊ฐ IN (SELECT ๊ณ ๊ฐ์•„์ด๋”” FROM ๊ณ ๊ฐ WHERE ๊ณ ๊ฐ์ด๋ฆ„='์ •์†Œํ™”');

04 ๋ทฐ

04-1 ๋ทฐ๋ž€?

  • ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๊ฐ€์ƒ ํ…Œ์ด๋ธ”
  • ๋ทฐ๋Š” ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์„ ๋“ค์—ฌ๋‹ค ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ฐฝ์˜ ์—ญํ• ์„ ๋‹ด๋‹น
  • ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์ œ๋กœ ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ๋…ผ๋ฆฌ์ ์œผ๋กœ๋งŒ ์กด์žฌํ•˜๋Š” ํ…Œ์ด๋ธ”์ด์ง€๋งŒ, ์ผ๋ฐ˜ ํ…Œ์ด๋ธ”๊ณผ ๋™์ผํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉ
    • ๋‹ค๋ฅธ ๋ทฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ์šด ๋ทฐ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•จ
  • ๋ทฐ๋ฅผ ํ†ตํ•ด ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์˜ ๋‚ด์šฉ์„ ์‰ฝ๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์˜ ๋‚ด์šฉ์„ ๋ณ€ํ™”์‹œํ‚ค๋Š” ์ž‘์—…์€ ์ œํ•œ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง
    • ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”: ๋ทฐ๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” ๋ฌผ๋ฆฌ์ ์ธ ํ…Œ์ด๋ธ”

04-2 ๋ทฐ ๊ฒ€์ƒ‰: CREATE VIEW ๋ฌธ

CREATE VIEW ๋ทฐ์ด๋ฆ„[(์†์„ฑ๋ฆฌ์ŠคํŠธ)]
AS SELECT ๋ฌธ
[ WITH CEHCK OPTION ]
  • CREATE VIEW ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ์ƒ์„ฑํ•  ๋ทฐ์˜ ์ด๋ฆ„๊ณผ ๋ทฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์†์„ฑ์˜ ์ด๋ฆ„์„ ๋‚˜์—ด
    • ์†์„ฑ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ๋žตํ•˜๋ฉด SELECT ์ ˆ์— ๋‚˜์—ด๋œ ์†์„ฑ์˜ ์ด๋ฆ„์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ
  • AS ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ SELECT ๋ฌธ ์ž‘์„ฑ
    • SELECT ๋ฌธ์€ ์ƒ์„ฑํ•˜๋ ค๋Š” ๋ทฐ์˜ ์ •์˜๋ฅผ ํ‘œํ˜„ํ•˜๋ฉฐ ORDER BY๋Š” ์‚ฌ์šฉ ๋ถˆ๊ฐ€
  • WITH CHECK OPTION
    • ๋ทฐ์— ์‚ฝ์ž…์ด๋‚˜ ์ˆ˜์ • ์—ฐ์‚ฐ์„ ํ•  ๋•Œ SELECT ๋ฌธ์—์„œ ์ œ์‹œํ•œ ๋ทฐ์˜ ์ •์˜ ์กฐ๊ฑด์„ ์œ„๋ฐ˜ํ•˜๋ฉด ์ˆ˜ํ–‰๋˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ์ œ์•ฝ์กฐ๊ฑด์„ ์ง€์ •
    Q. ๊ณ ๊ฐ ํ…Œ์ด๋ธ”์—์„œ ๋“ฑ๊ธ‰์ด vip์ธ ๊ณ ๊ฐ์˜ ๊ณ ๊ฐ์•„์ด๋””, ๊ณ ๊ฐ์ด๋ฆ„, ๋‚˜์ด๋กœ ๊ตฌ์„ฑ๋œ ๋ทฐ๋ฅผ ์šฐ์ˆ˜๊ณ ๊ฐ์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ƒ์„ฑํ•ด๋ณด์ž. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์šฐ์ˆ˜๊ณ ๊ฐ ๋ทฐ์˜ ๋ชจ๋“  ๋‚ด์šฉ์„ ๊ฒ€์ƒ‰ํ•ด๋ณด์ž.
    CREATE VIEW ์šฐ์ˆ˜๊ณ ๊ฐ(๊ณ ๊ฐ์•„์ด๋””, ๊ณ ๊ฐ์ด๋ฆ„, ๋‚˜์ด)
    AS SELECT ๊ณ ๊ฐ์•„์ด๋””, ๊ณ ๊ฐ์ด๋ฆ„, ๋‚˜์ด
    	FROM ๊ณ ๊ฐ
    WHERE ๋“ฑ๊ธ‰ = 'vip'
    WITH CHECK OPTION; -- ์—ญํ• : ๋“ฑ๊ธ‰์ด ์—†์Œ. ์‚ฝ์ž… ์‹œ ๋“ฑ๊ธ‰์ด null๋กœ ๋“ค์–ด๊ฐ€์„œ ์•ˆ๋˜๊ฒŒ ๋ง‰์Œ.
    
    select * from ์šฐ์ˆ˜๊ณ ๊ฐ;
    
    -- ๋งŒ์•ฝ ์ด๋ ‡๊ฒŒ ์ƒ์„ฑ์ด ๋˜์—ˆ์„ ์‹œ, 
    CREATE VIEW ์šฐ์ˆ˜๊ณ ๊ฐ(๊ณ ๊ฐ์•„์ด๋””, ๊ณ ๊ฐ์ด๋ฆ„, ๋‚˜์ด, ๋“ฑ๊ธ‰)
    AS SELECT ๊ณ ๊ฐ์•„์ด๋””, ๊ณ ๊ฐ์ด๋ฆ„, ๋‚˜์ด, ๋“ฑ๊ธ‰
    	FROM ๊ณ ๊ฐ
    	WHERE ๋“ฑ๊ธ‰ = 'vip'
    WITH CHECK OPTION; -- ์—ญํ• : ๋“ฑ๊ธ‰์ด vip๊ฐ€ ์•„๋‹ˆ๋ฉด ์‚ฝ์ž…์ด ์•ˆ๋˜๋„๋ก ๋ง‰์Œ.
    
    Q. ์ œํ’ˆ ํ…Œ์ด๋ธ”์—์„œ ์ œ์กฐ์—…์ฒด๋ณ„ ์ œํ’ˆ์ˆ˜๋กœ ๊ตฌ์„ฑ๋œ ๋ทฐ๋ฅผ ์—…์ฒด๋ณ„์ œํ’ˆ์ˆ˜๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ƒ์„ฑํ•ด๋ณด์ž
    CREATE VIEW ์—…์ฒด๋ณ„์ œํ’ˆ์ˆ˜(์ œ์กฐ์—…์ฒด, ์ œํ’ˆ์ˆ˜)
    AS SELECT ์ œ์กฐ์—…์ฒด, COUNT(*)
    	FROM ์ œํ’ˆ
    	GROUP BY ์ œ์กฐ์—…์ฒด
    WITH CHECK OPTION;โ€‹

04-3 ๋ทฐ ํ™œ์šฉ: SELECT ๋ฌธ

  • ๋ทฐ๋Š” ์ผ๋ฐ˜ ํ…Œ์ด๋ธ”๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Œ
    • ๋ทฐ์— ๋Œ€ํ•œ SELECT ๋ฌธ์ด ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ SELECT ๋ฌธ์œผ๋กœ ๋ณ€ํ™˜๋˜์–ด ์ˆ˜ํ–‰
  • ๊ฒ€์ƒ‰ ์—ฐ์‚ฐ์€ ๋ชจ๋“  ๋ทฐ์— ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ

04-4 ๋ทฐ ํ™œ์šฉ : INSERT, UPDATE, DELETE ๋ฌธ

  • ๋ทฐ์— ๋Œ€ํ•œ ์‚ฝ์ž…, ์ˆ˜์ •, ์‚ญ์ œ ์—ฐ์‚ฐ์€ ์‹ค์ œ๋กœ ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์— ์ˆ˜ํ–‰๋˜๋ฏ€๋กœ ๊ฒฐ๊ณผ์ ์œผ๋กœ๋Š” ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์ด ๋ณ€๊ฒฝ๋จ
  • ๋ทฐ์— ๋Œ€ํ•œ ์‚ฝ์ž…, ์ˆ˜์ •, ์‚ญ์ œ ์—ฐ์‚ฐ์€ ์ œํ•œ์ ์œผ๋กœ ์ˆ˜ํ–‰๋จ
    • ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ๋ทฐ vs ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ทฐ
  • ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ทฐ์˜ ํŠน์ง•
    • ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์†์„ฑ์ด ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์€ ๋ทฐ
    • ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์— ์žˆ๋˜ ๋‚ด์šฉ์ด ์•„๋‹Œ ์ง‘๊ณ„ ํ•จ์ˆ˜๋กœ ์ƒˆ๋กœ ๊ณ„์‚ฐ๋œ ๋‚ด์šฉ์„ ํฌํ•จํ•˜๋Š” ๋ทฐ
    • DISTINCT ํ‚ค์›Œ๋“œ๋ฅผ ํฌํ•จํ•˜์—ฌ ์ •์˜ํ•œ ๋ทฐ
    • GROUP BY ์ ˆ์„ ํฌํ•จํ•˜์—ฌ ์ •์˜ํ•œ ๋ทฐ
    • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•˜์—ฌ ์ •์˜ํ•œ ๋ทฐ๋Š” ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ
  • โ†’ ์ œํ’ˆ 1๋ทฐ๋Š” ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ๋ทฐ์ธ๊ฐ€? O
  • โ†’ ์ œํ’ˆ 2๋ทฐ๋Š” ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ๋ทฐ์ธ๊ฐ€? X ๊ธฐ๋ณธํ‚ค๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Œ.

04-5 ๋ทฐ์˜ ์žฅ์ 

  • ์งˆ์˜๋ฌธ์„ ์ข€ ๋” ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
    • GROUP BY, ์ง‘๊ณ„ ํ•จ์ˆ˜, ์กฐ์ธ ๋“ฑ์„ ์ด์šฉํ•ด ๋ทฐ๋ฅผ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋†“์œผ๋ฉด, ๋ณต์žกํ•œ SQL ๋ฌธ์„ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ SELECT ์ ˆ๊ณผ FROM ์ ˆ๋งŒ์œผ๋กœ๋„ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅ
  • ๋ฐ์ดํ„ฐ์˜ ๋ณด์•ˆ ์œ ์ง€์— ๋„์›€์ด ๋œ๋‹ค.
    • ์ž์‹ ์—๊ฒŒ ์ œ๊ณต๋œ ๋ทฐ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋„๋ก ๊ถŒํ•œ ์„ค์ •์ด ๊ฐ€๋Šฅ
  • ๋ฐ์ดํ„ฐ๋ฅผ ์ข€ ๋” ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ œ๊ณต๋œ ๋ทฐ์™€ ๊ด€๋ จ์ด ์—†๋Š” ๋‹ค๋ฅธ ๋‚ด์šฉ์— ๋Œ€ํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์‹ ๊ฒฝ ์“ธ ํ•„์š”๊ฐ€ ์—†์Œ

04-6 ๋ทฐ ์‚ญ์ œ : DROP VIEW ๋ฌธ

DROP VIEW ๋ทฐ์ด๋ฆ„;
  • ๋ทฐ๋ฅผ ์‚ญ์ œํ•ด๋„ ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์€ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Œ
  • ๋งŒ์•ฝ, ์‚ญ์ œํ•  ๋ทฐ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์ œ์•ฝ์กฐ๊ฑด์ด ์กด์žฌํ•œ๋‹ค๋ฉด?
    • ์˜ˆ) ์‚ญ์ œํ•  ๋ทฐ๋ฅผ ์ด์šฉํ•ด ๋งŒ๋“ค์–ด์ง„ ๋‹ค๋ฅธ ๋ทฐ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ
    • ๋ทฐ ์‚ญ์ œ๊ฐ€ ์ˆ˜ํ–‰๋˜์ง€ ์•Š์Œ
    • ๊ด€๋ จ๋œ ์ œ์•ฝ์กฐ๊ฑด์„ ๋จผ์ € ์‚ญ์ œํ•ด์•ผ ํ•จ