๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Data/MariaDB

DB] DML 2 - SELECT

by bamDal 2022. 4. 28.

DML (Data Manipulation Language) ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด

: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ”์— ๋“ค์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž… / ์ˆ˜์ • / ์‚ญ์ œ / ์กฐํšŒ ํ•˜๋Š” ๋ช…๋ น์–ด

 

INSERT : ๋ฐ์ดํ„ฐ ์‚ฝ์ž…

UPDATE : ๋ฐ์ดํ„ฐ ์ˆ˜์ •

DELETE : ๋ฐ์ดํ„ฐ ์‚ญ์ œ

UPSERT : INSERT or UPDATE

SELECT : ๋ฐ์ดํ„ฐ ์กฐํšŒ

 

SELECT 

: ๋ฐ์ดํ„ฐ ์กฐํšŒ

1. ํŠน์ • ์ปฌ๋Ÿผ ์กฐํšŒ

๊ธฐ๋ณธ์ ์ธ ์กฐํšŒ ์ฟผ๋ฆฌ๋ฌธ. ๋‚˜์ค‘์— ์กฐ๊ฑด๋“ค์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

SELECT * FROM [ํ…Œ์ด๋ธ” ๋ช…];  -- ํŠน์ • ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ์ปฌ๋Ÿผ์„ ์กฐํšŒํ•œ๋‹ค.

 

1) ์‚ฐ์ˆ ํ‘œํ˜„, ๋ณ„์นญ(ALIAS)

  • salary * 12 ๋˜๋Š” salary / 10000 ๋“ฑ๊ณผ ๊ฐ™์ด ์‚ฐ์ˆ ํ‘œํ˜„ ๊ฐ€๋Šฅ
  • ๋ณต์žกํ•œ ์ปฌ๋Ÿผ๋ช…์˜ ๊ฒฝ์šฐ ๋ณ„์นญ์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค.  [๋ณต์žกํ•œ ์ปฌ๋Ÿผ๋ช…] AS [๋ณ„์นญ]

 

2) ๋ฌธ์ž์—ด ํ•ฉ์น˜๊ธฐ (CONCAT)

  • CONCAT(ํ•ฉ์น , ์ปฌ๋Ÿผ, ๋ฌธ์ž์—ด, ์ฝค๋งˆ๋กœ, ๊ตฌ๋ถ„)

select emp_no,family_name, first_name fromemployees;     ํ•ฉ์น˜์ง€ ์•Š๊ณ  ์กฐํšŒ
concat์œผ๋กœ family_name๊ณผ first_name์„ ํ•ฉ์ณ์„œ ์กฐํšŒ

 

 

2. ํŠน์ • ์กฐ๊ฑด์œผ๋กœ ๋ฐ์ดํ„ฐ ์กฐํšŒ (WHERE)

WHERE ์ ˆ์„ ํ†ตํ•ด ์กฐ๊ฑด์„ ๋ช…์‹œํ•ด์ค€๋‹ค.

1) AND ์กฐ๊ฑด

and ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฒ”์œ„๊ฐ€ ์ข์•„์ง„๋‹ค.

2) OR ์กฐ๊ฑด

or ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฒ”์œ„๊ฐ€ ๋„“์–ด์ง„๋‹ค.

3) BETWEEN AND

and ์กฐ๊ฑด๊ณผ ๊ฐ™์ด 100๋งŒ์› ์ด์ƒ 300๋งŒ์› ์ดํ•˜ ๋ฅผ between and ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

3. ์ค‘๋ณต ์ œ๊ฑฐ (DISTINCT) 

: ํ•ด๋‹น ์ปฌ๋Ÿผ์— ์–ด๋–ค ์ข…๋ฅ˜๋“ค์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ ์‚ฌ์šฉ

์ฟผ๋ฆฌ๋ฌธ ์‹คํ–‰ ํ™”๋ฉด

 

 

4. IN 

: OR๋ฅผ ๋‚ดํฌํ•˜๊ณ  ์žˆ๋‹ค.

: ์ฟผ๋ฆฌ๊ฐ€ ๊ฐ„๊ฒฐํ•ด์ง€๊ณ , ์†๋„๋ฉด์—์„œ ์šฐ์›”ํ•˜๋‹ค.

 

 

5. IS NULL / IS NOT NULL

๋ง๊ทธ๋Œ€๋กœ ์ปฌ๋Ÿผ์˜ ๊ฐ’์ด NULL ์ธ ๊ฒฝ์šฐ, NULL์ด ์•„๋‹Œ ๊ฒฝ์šฐ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

 

 

6. LIKE

  • ์ผ๋ถ€๊ฐ€ ๋น„์Šทํ•œ ๋‚ด์šฉ์„ ๊ฒ€์ƒ‰ํ•  ๋•Œ ์‚ฌ์šฉ ( ์†๋„๊ฐ€ ๋Š๋ฆผ )
  • ๋”ฐ๋ผ์„œ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•  ๊ฒฝ์šฐ์—” LIKE๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋ณด๋‹จ ๊ฒ€์ƒ‰์—”์ง„์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • WHERE [์ปฌ๋Ÿผ๋ช…] LIKE '๊ฒ€์ƒ‰์–ด';
  • %๋ฅผ ๊ผญ ๋ถ™์—ฌ์ค˜์•ผ ํ•œ๋‹ค. %๊ฐ€ ์—†์œผ๋ฉด WHERE [์ปฌ๋Ÿผ๋ช…] = '๊ฒ€์ƒ‰์–ด' ์™€ ๋‹ค๋ฅผ ๊ฒƒ์ด ์—†๋‹ค.

 

 

7. ORDER BY

  • ํŠน์ • ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ(ASC), ๋‚ด๋ฆผ์ฐจ์ˆœ(DESC)
  • ORDER BY [์ปฌ๋Ÿผ] [ASC|DESC]
  • ์˜ค๋ฆ„์ฐจ์ˆœ

๊ฐ€๋‚˜๋‹ค์ˆœ , ๋‚ฎ์€ ์ˆซ์ž๋ถ€ํ„ฐ = ์˜ค๋ฆ„์ฐจ์ˆœ = ASC

 

  • ๋‚ด๋ฆผ์ฐจ์ˆœ

๋†’์€ ๊ฒƒ๋ถ€ํ„ฐ = ๋‚ด๋ฆผ์ฐจ์ˆœ = DESC
๋‚ด๋ฆผ์ฐจ์ˆœ ์‹คํ–‰ ๊ฒฐ๊ณผ

  • ORDER BY๋Š” ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœ ํ›„ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

 

8. GROUP BY

  • ํŠน์ •ํ•œ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌถ์–ด์„œ ๊ฐ€์ ธ์˜จ๋‹ค.
  • SELECT [์ปฌ๋Ÿผ, ...] FROM [ํ…Œ์ด๋ธ”๋ช…] GROUP BY [๋ฌถ์„ ์ปฌ๋Ÿผ];

์ฟผ๋ฆฌ๋ฌธ ์‹คํ–‰ ๊ฒฐ๊ณผ

 

๋ถ€์„œ๋ณ„ ๊ธ‰์—ฌ ํ‰๊ท  avg(salary) : salary ํ‰๊ท ์„ ๋‚ด๋Š” ํ•จ์ˆ˜
์ฟผ๋ฆฌ๋ฌธ ์‹คํ–‰ ๊ฒฐ๊ณผ

 

  • SELECT์—๋Š” GROUP BYํ•œ ์ปฌ๋Ÿผ ์™ธ์—, ์—ฐ์‚ฐ๋œ ๋‚ด์šฉ๋งŒ ๋‚˜์™€์•ผ ํ•œ๋‹ค. ****
  • ์›๋ž˜ ์—ฐ์‚ฐ๋œ ์ปฌ๋Ÿผ(SUM,AVG ๋“ฑ) ์™ธ์— ์—ฐ์‚ฐ๋˜์ง€ ์•Š์€ ์ปฌ๋Ÿผ์ด ์˜ค๋ฉด ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค.
  • ํ•˜์ง€๋งŒ ์—๋Ÿฌ ์ƒํ™ฉ์„ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ํ•ด๋‹น ์ปฌ๋Ÿผ์˜ ์ฒซ ๊ฐ’์„ ๋ณด์—ฌ์ฃผ๋Š”๋ฐ ๋ถˆํ•„์š”ํ•œ ๋‚ด์šฉ์ด๋ฏ€๋กœ ์ฟผ๋ฆฌ๋ฌธ ์ž‘์„ฑ์‹œ ์œ ์˜ํ•œ๋‹ค!

 

 

9. HAVING

  • GROUP BY๋กœ ๊ฐ€์ ธ์˜จ ๊ฒฐ๊ณผ๋กœ๋ถ€ํ„ฐ ํŠน์ • ์กฐ๊ฑด์„ ์ถ”์ถœํ•œ๋‹ค.
  • ๋ถ€์„œ๋ณ„ ๊ธ‰์—ฌ ํ•ฉ๊ณ„ <- GROUP BY
  • ๊ทธ ์ค‘์—์„œ ํ•ฉ๊ณ„๊ฐ€ 1500๋งŒ์› ์ด์ƒ์ธ ๋ถ€์„œ <- HAVING

 

๋ถ€์„œ๋ณ„ ๊ธ‰์—ฌ ํ•ฉ๊ณ„ <- GROUP BY ๊นŒ์ง€๋งŒ
๊ทธ ์ค‘์—์„œ ํ•ฉ๊ณ„๊ฐ€ 1500๋งŒ์› ์ด์ƒ์ธ ๋ถ€์„œ <- HAVING ๊นŒ์ง€.

  • HAVING ์—๋Š” ๊ฐ€๊ธ‰์  ๋ณ„์นญ์„ ํ™œ์šฉํ•˜์ง€ ๋ง์ž( ๋ช‡๋ช‡ DB ์—์„œ๋Š” having ์—์„œ ๋ณ„์นญ ์‚ฌ์šฉ์‹œ ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค.)
  • ORDER BY ์—๋Š” ๋ณ„์นญ ์‚ฌ์šฉ ๊ฐ€๋Šฅ