Select

[Database] SQL ๋ฐ์ดํ„ฐ ์กฐํšŒํ•˜๊ธฐ(SELECT)

SELECT ๋ฌธ๋ฒ•

  • SELECT attribute(s) FROM table_name(s) WHERE condition(s);

  • attribute(s) : projection attributes

  • condition(s) : selection_condition

  • id๊ฐ€ 9์ธ ์ข…์‚ฌ์ž์˜ ์ด๋ฆ„๊ณผ ๋ถ€์„œ๋ฅผ ์•Œ๊ณ  ์‹ถ์Œ : SELECT name, position FROM employee WHERE id = 9;

  • WHERE ์ ˆ์„ ํ†ตํ•ด ์ฐพ์„ ์กฐ๊ฑด์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, WHERE๊ฐ€ ์—†๋‹ค๋ฉด ๋ชจ๋“  tuple์„ ๊ฒฐ๊ณผ๋กœ ๊ฐ€์ ธ์˜ด

๋‘๊ฐœ์˜ ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐํ•˜๋Š” SELECT

SELECT employee.id, employee.name position
FROM project, employee
WHERE project.id = 2002 and project.leader_id = employee.id;
  • project.leader_id = employee.id ๋ฅผ join condition์ด๋ผ ํ•จ

  • project.id = 2002 ๋ฅผ selection condition์ด๋ผ๊ณ  ํ•จ

  • employee.id, employee.name position๋ฅผ projection attributes๋ผ๊ณ  ํ•จ

AS ์‚ฌ์šฉํ•˜๊ธฐ

๊ธฐ๋Šฅ

  • ํ…Œ์ด๋ธ”์ด๋‚˜ attribute์— ๋ณ„์นญ(alias)์„ ๋ถ™์ผ ๋•Œ ์‚ฌ์šฉ

  • ์ƒ๋žต ๊ฐ€๋Šฅํ•จ

์‚ฌ์šฉ

  • a AB b -> a๋ฅผ b๋ผ๋Š” ๋ณ„์นญ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ

  • table๊ณผ attribute ๋ชจ๋‘ AS๋กœ ๋ณ„์นญ ์ง€์ • ๊ฐ€๋Šฅ

  • table : FROM employee AS E๋ผ๊ณ  ์“ฐ๋ฉด, ๋’ค์˜ WHERE ์ ˆ์—์„œ E.id ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

  • attribute : SELECT E.id AS leader_id๋ผ๊ณ  ์“ฐ๋ฉด, ๊ฒฐ๊ณผ๋ฌผ์–ด id ๋Œ€์‹  leader_id๋ผ๊ณ  ํ‘œ๊ธฐ๋จ

  • AS๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Œ. ์œ„ SQL ๋ฌธ์„ ์•„๋ž˜์ฒ˜๋Ÿผ ์จ๋„ ๋™์ผํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ด

DISTINCT ์‚ฌ์šฉํ•˜๊ธฐ

๊ธฐ๋Šฅ

  • SELECT ๊ฒฐ๊ณผ์—์„œ ์ค‘๋ณต๋˜๋Š” tuples์€ ์ œ์™ธํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•จ

  • SELECT ํ‚ค์›Œ๋“œ ๋’ค์— ์จ์คŒ

  • ์˜ˆ์‹œ)

LIKE ์‚ฌ์šฉํ•˜๊ธฐ

๊ธฐ๋Šฅ

  • WHERE ์กฐ๊ฑด์ ˆ์—์„œ ๋ฌธ์ž์—ด pattern matchin์— ์‚ฌ์šฉ๋จ

  • reserved character

    • % : 0๊ฐœ ์ด์ƒ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ฐ–๋Š” ๋ฌธ์ž์—ด

    • _ : ํ•˜๋‚˜์˜ ๋ฌธ์ž๋ฅผ ์˜๋ฏธ ๊ธ€์ž ์ž๋ฆฌ. ํ•œ ๊ธ€์ž๋‹น ํ•œ ๊ธ€์ž๋ฅผ ์˜๋ฏธํ•จ

  • escape character

    • \ : reserved character๋ฅผ ๋ณธ๋ฉด์˜ ๋ฌธ์ž๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ

์‚ฌ์šฉ ์˜ˆ์‹œ

  • ์ด๋ฆ„์ด N์œผ๋กœ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ N์œผ๋กœ ๋๋‚˜๋Š” ์‚ฌ๋žŒ์„ ์ฐพ์Œ

  • ์ด๋ฆ„์ด NG๊ฐ€ ํฌํ•จ๋œ ์‚ฌ๋žŒ์„ ์ฐพ์Œ

  • ์ด๋ฆ„์ด J๋กœ ์‹œ์ž‘ํ•˜๊ณ  ์ด 4๊ธ€์ž์˜ ์ด๋ฆ„์„ ๊ฐ€์ง€๋Š” ์‚ฌ๋žŒ์„ ์ฐพ์Œ

escape ๋ฌธ์ž์™€ ํ•จ๊ป˜ LIKE ์‚ฌ์šฉํ•˜๊ธฐ

  • %๋กœ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ _๋กœ ๋๋‚˜๋Š” ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์„ ์ฐพ๊ณ  ์‹ถ๋‹ค๋ฉด?

    • %์™€ _ ๊ฐ€ ํŠน๋ณ„ ๊ธฐํ˜ธ๋กœ ์“ฐ์ด๊ณ  ์žˆ๋Š”๋ฐ, ๋‹จ์ˆœ ๋ฌธ์ž๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด?

    • ๋ฌธ์ž ์•ž์— \๋ฅผ ๋ถ™์ž„

asterisk (*) ์‚ฌ์šฉํ•˜๊ธฐ

๊ธฐ๋Šฅ

  • ์„ ํƒ๋œ tuples์˜ ๋ชจ๋“  attributes๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์„ ๋–„ ์‚ฌ์šฉํ•จ

  • FROM์— table์„ ์—ฌ๋Ÿฌ๊ฐœ ์„ค์ •ํ–ˆ์„ ๋•, ํ•ด๋‹น ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  attributes๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ์ถœ๋ ฅ๋จ

์‚ฌ์šฉ ์˜ˆ์‹œ

  • ID๊ฐ€ 9์ธ ์ž„์ง์›์˜ ๋ชจ๋“  attributes๋ฅผ ์•Œ๊ณ  ์‹ถ๋‹ค

์ฃผ์˜์‚ฌํ•ญ

  1. index

    • SELECT๋กœ ์กฐํšŒํ•  ๋•Œ ์กฐ๊ฑด๋“ค์„ ํฌํ•จํ•ด์„œ ์กฐํšŒํ•œ๋‹ค๋ฉด, ์กฐ๊ฑด๊ณผ ๊ด€๋ จ๋œ attribtes์— index๊ฐ€ ๊ฑธ๋ ค์žˆ์–ด์•ผํ•จ. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ์กฐํšŒ ์†๋„๊ฐ€ ๋А๋ ค์ง

    • index์— ๋Œ€ํ•ด์„œ๋Š” ๋’ค์—์„œ ๊ธฐ์ˆ 

  2. ์œ„ ๋‚ด์šฉ์€ MySQL ๊ธฐ์ค€์œผ๋กœ, ๋‹ค๋ฅธ RDBMS์˜ SQL๋ฌธ๋ฒ•๊ณผ๋Š” ๋‹ค๋ฆ„

  3. SELECT์™€ ๊ด€๋ จํ•ด์„œ๋Š” ์ด ์™ธ์—๋„ ๋‹ค์–‘ํ•œ ์กฐํšŒ ๊ธฐ๋Šฅ๋“ค๊ณผ ์„ธ๋ถ€ ์‚ฌํ•ญ์ด ์žˆ์Œ

์ฐธ๊ณ 

Last updated