๐Ÿ“š๋ฐ์ดํ„ฐ ์กฐ์ž‘ ์–ธ์–ด

๋ฐ์ดํ„ฐ ์กฐ์ž‘ ์–ธ์–ด(DML)๋Š” ์Šคํ‚ค๋งˆ ๋‚ด์˜ ๋ฐ์ดํ„ฐ์— ์—ฌ๋Ÿฌ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด์˜ ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. DML์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…, ์‚ญ์ œ, ์ˆ˜์ •, ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์กฐ์ž‘ ์–ธ์–ด๋Š” ๊ธฐ๋Šฅ์— ๋”ฐ๋ผ ๋„ค ๊ฐ€์ง€ ๋ช…๋ น์–ด๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • INSERT: ํ…Œ์ด๋ธ” ์Šคํ‚ค๋งˆ์— ์ƒˆ๋กœ์šด ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…

  • UPDATE: ํ…Œ์ด๋ธ”์—์„œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ํŠน์ • ๋ ˆ์ฝ”๋“œ์˜ ์ปฌ๋Ÿผ ๊ฐ’์„ ์ˆ˜์ •

  • DELETE: ํ…Œ์ด๋ธ”์—์„œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ํŠน์ • ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ญ์ œ

  • SELECT: ํ…Œ์ด๋ธ”์— ์กด์žฌํ•˜๋Š” ๋ ˆ์ฝ”๋“œ ์ค‘ ์ฃผ์–ด์ง„ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ฒ€์ƒ‰


๐Ÿ“„INSERT ๋ฌธ

INSERT๋ฌธ์€ ํ…Œ์ด๋ธ”์— ์ƒˆ๋กœ์šด ๋ ˆ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค. ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ ํ…Œ์ด๋ธ” ๋‚ด์— ์žˆ๋Š” ๋ชจ๋“  ์ปฌ๋Ÿผ๊ฐ’์„ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ ๋ช‡๋ช‡ ์ปฌ๋Ÿผ๋งŒ ์„ ํƒ์ ์œผ๋กœ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปฌ๋Ÿผ์— ๋Œ€ํ•œ ๊ฐ’์˜ ์ˆœ์„œ๋Š” ์ •์˜๋œ ํ…Œ์ด๋ธ” ์Šคํ‚ค๋งˆ์˜ ์ปฌ๋Ÿผ ์ˆœ์„œ์™€ ๋ฐ˜๋“œ์‹œ ์ผ์น˜ํ•ด์•ผ ํ•˜๊ณ  ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ๋งž๋Š” ๊ฐ’์„ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ปฌ๋Ÿผ๊ฐ’์ด ๋ฌธ์ž๋‚˜ ๋‚ ์งœ์ธ ๊ฒฝ์šฐ ์ž‘์€๋”ฐ์˜ดํ‘œ๋ฅผ ๋ถ™์ž…๋‹ˆ๋‹ค.

1
2
3
4
5
6
7
INSERT INTO ํ…Œ์ด๋ธ”์ด๋ฆ„
  VALUES(v1, v2, ... vn)

-- ๋˜๋Š”

INSERT INTO ํ…Œ์ด๋ธ”์ด๋ฆ„(์ปฌ๋Ÿผ1, ์ปฌ๋Ÿผ2, ..., ์ปฌ๋Ÿผm)
  VALUES(v1, v2, ... vm)



๐Ÿ“„UPDATE ๋ฌธ

UPDATE๋ฌธ์€ ํ…Œ์ด๋ธ”์— ์ €์žฅ๋œ ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ปฌ๋Ÿผ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•ด์„œ๋งŒ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋ฉด WHERE์ ˆ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

1
2
3
UPDATE ํ…Œ์ด๋ธ”์ด๋ฆ„
  SET ์ปฌ๋Ÿผ1 = ๊ฐ’1[์ปฌ๋Ÿผ2=๊ฐ’2, ..., ์ปฌ๋Ÿผn=๊ฐ’n]
  [WHERE ์กฐ๊ฑด]


1
2
3
UPDATE ํ•™์ƒ
  SET ๋‚˜์ด = ๋‚˜์ด + 1;
SELECT * FROM ํ•™์ƒ;

WHERE ์ ˆ์ด ์—†๋Š” UPDATE ๋ฌธ์˜ ๊ฒฝ์šฐ ์ „์ฒด ๋ ˆ์ฝ”๋“œ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด๋ผ์„œ MySQL์ด ์‹คํ–‰์„ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค. ๋ถˆ๊ฐ€ํ”ผํ•˜๊ฒŒ WHERE ์กฐ๊ฑด์ด ์—†๋Š” UPDATE ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด SAFE UPDATES ๋ชจ๋“œ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.



๐Ÿ“„DELETE ๋ฌธ

DELETE๋ฌธ์€ ๋ ˆ์ฝ”๋“œ ๋‹จ์œ„๋กœ๋งŒ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ์ปฌ๋Ÿผ์˜ ๊ฐ’๋งŒ ์„ ํƒ์ ์œผ๋กœ ์‚ญ์ œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํŠน์ • ์ปฌ๋Ÿผ ๊ฐ’์„ ์‚ญ์ œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด UPDATE๋ฌธ์„ ์‚ฌ์šฉํ•ด NULL๊ฐ’์œผ๋กœ ๋Œ€์ฒด๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

1
2
DELETE FROM ํ…Œ์ด๋ธ”์ด๋ฆ„
  [WHERE ์กฐ๊ฑด]

UPDATE ๋ฌธ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ WHERE ์ ˆ์ด ์—†๋Š” DELETE ๋ฌธ์€ ์ „์ฒด ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด๋ผ์„œ MySQL์ด ์‹คํ–‰์„ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ถˆ๊ฐ€ํ”ผํ•˜๊ฒŒ WHERE ์กฐ๊ฑด์ด ์—†๋Š” DELETE ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด SAFE UPDATES ๋ชจ๋“œ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.



๐Ÿ“„SELECT ๋ฌธ

SELECT ๋ฌธ์€ ํ•œ ๊ฐœ ๋˜๋Š” ๊ทธ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์–ด๋Š” ๋ณต์žกํ•œ ์—…๋ฌด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋‹ค์–‘ํ•œ ์ ˆ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ SELECT ๋ฌธ์„ ๋ณด๋ฉด SELECT ์ ˆ๋งŒ ํ•„์ˆ˜์ ์ด๊ณ  ๋‚˜๋จธ์ง€ ์ ˆ์€ ๋ชจ๋‘ ์„ ํƒ์ ์œผ๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT [DISTINCT]์ปฌ๋Ÿผ1, ์ปฌ๋Ÿฌ2, ..., ์ปฌ๋Ÿผx
  [FROM ํ…Œ์ด๋ธ” [INNER JOIN|OUTER JOIN|CROSS JOIN
        ํ…Œ์ด๋ธ” INNER JOIN|OUTER JOIN|CROSS JOIN
        ON ์กฐ์ธ ์กฐ๊ฑด์‹1
        ํ…Œ์ด๋ธ” INNER JOIN|OUTER JOIN|CROSS JOIN
        ...
        ํ…Œ์ด๋ธ”m
        ON ์กฐ์ธ ์กฐ๊ฑด์‹]]
  [ON ์กฐ์ธ ์กฐ๊ฑด์‹]
  [WHERE ์กฐ๊ฑด[์ค‘์ฒฉ์งˆ์˜]]
  [GROUP BY ์ปฌ๋Ÿผ1, ์ปฌ๋Ÿผ2, ..., ์ปฌ๋Ÿผy
    [HAVING ์กฐ๊ฑด]]
  [ORDER BY ์ปฌ๋Ÿผ1[ASC|DESC], ..., ์ปฌ๋Ÿผz[ASC|DESC]]
  • SELECT ์ ˆ
    SELECT ์ ˆ์€ ์งˆ์˜ ๊ฒฐ๊ณผ์— ํฌํ•จ๋˜๋Š” ์ปฌ๋Ÿผ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ด€๊ณ„๋Œ€์ˆ˜์—์„œ ํ”„๋กœ์ ์…˜ ์—ฐ์‚ฐ์ž์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์งˆ์˜ ๊ฒฐ๊ณผ ์ค‘๋ณต๋œ ๊ฐ’์ด ์žˆ๋‹ค๋ฉด DISTINCT ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘๋ณต ๊ฐ’๋“ค์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • FROM ์ ˆ
    FROM ์ ˆ์€ ์งˆ์˜๋ฅผ ์ ์šฉํ•  ํ…Œ์ด๋ธ”์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. 2๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์„ ๊ธฐ์ˆ ํ•˜๊ณ  ๊ทธ ์‚ฌ์ด์— CROSS JOIN์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ํ…Œ์ด๋ธ”์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์—ฐ๊ฒฐํ•˜๋Š” ์นดํ‹ฐ์…˜ ํ”„๋กœ๋•ํŠธ๊ฐ€ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. INNER JOIN, OUTER JOIN ๋“ฑ์„ ON ์ ˆ์— ์กฐ๊ฑด๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ๋‚ด/์™ธ๋ถ€ ์กฐ์ธ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ํ…Œ์ด๋ธ”์— ๋ณ„์นญ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ” ์ด๋ฆ„์„ ๊ฐ„๊ฒฐํ•œ ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ON ์ ˆ
    ON ์ ˆ์€ ์กฐ์ธ ์—ฐ์‚ฐ ์‹œ ํ…Œ์ด๋ธ” ๊ฐ„์˜ ์กฐ์ธ ๋ฐฉ๋ฒ•์„ ๊ธฐ์ˆ ํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต ๊ธฐ๋ณธํ‚ค-์™ธ๋ž˜ํ‚ค ์ฐธ์กฐ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด ๊ด€๋ จ ์žˆ๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๋น„๊ต ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋™๋“ฑ์กฐ์ธ์œผ๋กœ๋„ ํ™œ์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • WHERE ์ ˆ
    WHERE ์ ˆ์€ ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•œ ํŠน์ • ๊ฒ€์ƒ‰ ์กฐ๊ฑด์„ ๊ธฐ์ˆ ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์กฐ๊ฑด๋ฌธ์— ์ปฌ๋Ÿผ ์ด๋ฆ„๊ณผ ๊ฐ™์ด ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž, ๋น„๊ต ์—ฐ์‚ฐ์ž, ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž ๋“ฑ์˜ ์—ฐ์‚ฐ์ž๋“ค์ด ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ON ์ ˆ์€ ์กฐ์ธ ์—ฐ์‚ฐ์— ๋Œ€ํ•œ ์กฐ๊ฑด๋งŒ ๋‚˜ํƒ€๋‚ด๊ณ  WHERE ์ ˆ์€ ๋ ˆ์ฝ”๋“œ๋ฅผ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์‚ฌ์šฉ๋œ๋‹ค๋Š” ์ ์—์„œ ON ์ ˆ๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

  • GROUP BY ์ ˆ
    GROUP BY ์ ˆ์€ ํŠน์ • ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ ๋™์ผํ•œ ๊ฐ’๋ผ๋ฆฌ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด ์š”์•ฝ๋œ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ง‘๊ณ„ํ•จ์ˆ˜๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • HAVING ์ ˆ
    GROUP BY์— ์˜ํ•ด ๋ฌถ์ธ ๊ทธ๋ฃน ๋‚ด์—์„œ ์กฐ๊ฑด์„ ์ฃผ์–ด ๊ฒ€์ƒ‰ํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ON ์ ˆ์€ ์กฐ์ธ์— ๋Œ€ํ•œ ์กฐ๊ฑด, WHERE ์ ˆ์€ ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•œ ์กฐ๊ฑด, HAVING ์ ˆ์€ GROUP BY ์ ˆ์— ์˜ํ•œ ๊ทธ๋ฃน์— ๋Œ€ํ•œ ์กฐ๊ฑด๋ฌธ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ORDER BY ์ ˆ
    ORDER BY ์ ˆ์€ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ํŠน์ • ์นผ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ(ASC), ๋‚ด๋ฆผ์ฐจ์ˆœ(DESC)์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ์ถœ๋ ฅํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ“Œ๋‹จ์ˆœ์งˆ์˜๋ฌธ
๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ํ˜•ํƒœ์˜ SELECT ๋ฌธ์ž…๋‹ˆ๋‹ค.

1
2
SELECT ์ปฌ๋Ÿผ1, ์ปฌ๋Ÿผ2, ..., ์ปฌ๋Ÿผn
  FROM ํ…Œ์ด๋ธ”์ด๋ฆ„


ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ์ปฌ๋Ÿผ์„ ์ถœ๋ ฅํ•  ๋•Œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ SELECT ์ ˆ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

1
2
3
-- * ๊ธฐํ˜ธ๋Š” ๋ชจ๋“ (all)์„ ์˜๋ฏธ
SELECT *
  FROM ํ…Œ์ด๋ธ”์ด๋ฆ„


๐Ÿ“Œ์กฐ๊ฑด์งˆ์˜๋ฌธ
ํ…Œ์ด๋ธ”์—์„œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ผ๋ถ€ ๋ ˆ์ฝ”๋“œ๋งŒ ์„ ํƒ์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” SELECT ๋ฌธ์ž…๋‹ˆ๋‹ค.

1
2
3
SELECT ์ปฌ๋Ÿผ1, ์ปฌ๋Ÿผ2, ..., ์ปฌ๋Ÿผn
  FROM ํ…Œ์ด๋ธ”์ด๋ฆ„
  WHERE ๊ฒ€์ƒ‰์กฐ๊ฑด

SELECT ๋ฌธ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์—ฐ์‚ฐ์ž๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž
  • ๋น„๊ต ์—ฐ์‚ฐ์ž
  • ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž



๐Ÿ“„๋ฐ์ดํ„ฐ ์ •๋ ฌ

MySQL์€ ๋ฐ์ดํ„ฐ ์ •๋ ฌ์— ๋Œ€ํ•œ ๋ช…๋ น์ด ์—†๋Š” ๊ฒฝ์šฐ ํ…Œ์ด๋ธ”์— ์ง€์ •๋œ ๊ธฐ๋ณธํ‚ค ๊ฐ’์˜ ์ˆœ์„œ๋Œ€๋กœ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋ ˆ์ฝ”๋“œ์˜ ์ถœ๋ ฅ ์ˆœ์„œ๋ฅผ ๋ฐ”๊พธ๊ณ  ์‹ถ๋‹ค๋ฉด ORDER BY ์ ˆ์—์„œ ์ปฌ๋Ÿผ ๋’ค์— ASC(์˜ค๋ฆ„์ฐจ์ˆœ) ๋˜๋Š” DESC(๋‚ด๋ฆผ์ฐจ์ˆœ) ์ •๋ ฌ์„ ์ง€์ •ํ•˜์—ฌ ๊ฒฐ๊ณผ ์ถœ๋ ฅ ์ˆœ์„œ๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปฌ๋Ÿผ ์ด๋ฆ„๋งŒ ์“ฐ๊ณ  ์ •๋ ฌ ๋ฐฉํ–ฅ์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“ํ•™์ƒ ์ •๋ณด๋ฅผ ์„ฑ๋ณ„ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ, ์ƒ๋…„์›”์ผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฅธ์ฐจ์ˆœ ์ •๋ ฌํ•˜์‹œ์˜ค.

1
2
SELECT * FROM ํ•™์ƒ
  ORDER BY ์„ฑ๋ณ„ DESC, ์ƒ๋…„์›”์ผ ASC;



๐Ÿ“„์ง‘ํ•ฉ ์—ฐ์‚ฐ์ด ํฌํ•จ๋œ SELECT

์ง‘ํ•ฉ ์—ฐ์‚ฐ UNION, INTERSECT, EXCEPT๋Š” ๊ฐ๊ฐ ๊ด€๊ณ„ ๋Œ€์ˆ˜ ํ•ฉ์ง‘ํ•ฉ, ๊ต์ง‘ํ•ฉ, ์ฐจ์ง‘ํ•ฉ์— ๋Œ€์‘ํ•˜๋Š” ์—ฐ์‚ฐ์ž…๋‹ˆ๋‹ค. ์ง‘ํ•ฉ ์—ฐ์‚ฐ ์‚ฌ์šฉ ์‹œ ๋ฐ˜๋“œ์‹œ ๋‘ SELECT ๋ฌธ์˜ ๊ฒฐ๊ณผ ์Šคํ‚ค๋งˆ๊ฐ€ ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. MySQL์—์„œ๋Š” INTERSECT์™€ EXCEPT ์—ฐ์‚ฐ์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. UION ์—ฐ์‚ฐ์€ ์—ฌ๋Ÿฌ SELECT ๋ฌธ์˜ ๊ฒฐ๊ณผ๋ฅผ ํ•ฉํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ ์ค‘๋ณต๋˜๋Š” ๋ ˆ์ฝ”๋“œ๋“ค์€ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜๊ณ  ์‹ถ์œผ๋ฉด UNION ALL์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

1
SELECT ๋ฌธ1 UNION | UNION ALL SELECT ๋ฌธ2


๐Ÿ“๊ณผ๋ชฉ ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์‹œ์Šคํ…œ์„ ๊ฐ•์˜ํ•˜๋Š” ๊ต์ˆ˜์˜ ๊ต์ˆ˜๋ฒˆํ˜ธ์™€ ๋””์ง€ํ„ธ ๋…ผ๋ฆฌํšŒ๋กœ๋ฅผ ๊ฐ•์˜ํ•˜๋Š” ๊ต์ˆ˜์˜ ๊ต์ˆ˜๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

1
2
3
4
5
6
7
(SELECT ๊ต์ˆ˜๋ฒˆํ˜ธ
  FROM ๊ณผ๋ชฉ
  WHERE ๊ณผ๋ชฉ๋ช… = '๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ')
UNION
(SELECT ๊ต์ˆ˜๋ฒˆํ˜ธ
  FROM ๊ณผ๋ชฉ
  WHERE ๊ณผ๋ชฉ๋ช… = '๋””์ง€ํ„ธ ๋…ผ๋ฆฌํšŒ๋กœ')



๐Ÿ“„ํŠน์ˆ˜ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ SELECT

  • ๋ฒ”์œ„์กฐ๊ฑด
    ์ง€์ •ํ•œ ๋ฒ”์œ„์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒฝ์šฐ BETWEEN ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
1
2
3
SELECT ์ปฌ๋Ÿผ1, ์ปฌ๋Ÿผ2, ..., ์ปฌ๋Ÿผn
  FROM ํ…Œ์ด๋ธ”์ด๋ฆ„
  WHERE ์ปฌ๋Ÿผi BETWEEN ๊ฐ’1 AND ๊ฐ’2


  • ํฌํ•จ/๋ถˆํฌํ•จ ์กฐ๊ฑด
    IN๊ณผ NOT IN ์—ฐ์‚ฐ์ž๋Š” ์ปฌ๋Ÿผ ๊ฐ’์ด ์—ฐ์‚ฐ์ž์—์„œ ์ œ์‹œ๋œ ๊ฐ’ ์ค‘ ํ•˜๋‚˜์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ๊ฒ€์‚ฌํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. IN ์—ฐ์‚ฐ์ž๋Š” ๊ธฐ์ˆ ํ•œ ๊ฐ’ ์ค‘ ํ•˜๋‚˜์™€ ์ผ์น˜ํ•˜๋ฉด ์ฐธ์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  NOT IN์€ ๊ฑฐ์ง“์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
1
2
3
SELECT ์ปฌ๋Ÿผ1, ์ปฌ๋Ÿผ2, ..., ์ปฌ๋Ÿผn
  FROM ํ…Œ์ด๋ธ”์ด๋ฆ„
  WHERE ์ปฌ๋Ÿผn IN | NOT IN(๊ฐ’1, ๊ฐ’2, ..., ๊ฐ’m)


  • ๋ถ€๋ถ„ ์ผ์น˜ ๊ฒ€์ƒ‰
    SQL์€ ๋ฌธ์ž์—ด์— ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ์‚ฐ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์™„์ „ ์ผ์น˜ ๊ฒ€์ƒ‰ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ LIKE ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „์ฒด ์ปฌ๋Ÿผ ๊ฐ’ ์ค‘ ์ผ๋ถ€๋ถ„๋งŒ ์ผ์น˜ํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฒ€์ƒ‰์„ ๋ถ€๋ถ„ ์ผ์น˜ ๊ฒ€์ƒ‰์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ถ€๋ถ„ ์ผ์น˜ ๊ฒ€์ƒ‰์€ ์™€์ผ๋“œ ์นด๋“œ๋ผ๋Š” ํŠน์ˆ˜ ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • %: ์–ด๋–ค ๋ฌธ์ž์—ด๊ณผ๋„ ์ผ์น˜
    • _: ์–ด๋–ค ๋ฌธ์ž์™€๋„ ์ผ์น˜
    • โ€˜๊น€%โ€™: โ€˜๊น€โ€™์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์–ด๋–ค ๋ฌธ์ž์—ด๊ณผ๋„ ์ผ์น˜
    • โ€˜%ํ„ฐ%โ€™: โ€˜์ปดํ“จํ„ฐโ€™, โ€˜๋ฐ์ดํ„ฐโ€™์™€ ๊ฐ™์ด โ€˜ํ„ฐโ€™๋ฅผ ํฌํ•จํ•˜๋Š” ์–ด๋–ค ๋ฌธ์ž์—ด๊ณผ๋„ ์ผ์น˜
    • โ€™โ€“โ€™: ๋‘ ๊ฐœ์˜ ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๋ชจ๋“  ๋ฌธ์ž์—ด๊ณผ ์ผ์น˜
    • โ€˜__%โ€™: ์„ธ ๋ฌธ์ž ์ด์ƒ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ชจ๋“  ๋ฌธ์ž์—ด๊ณผ ์ผ์น˜



๐Ÿ“„๊ธฐํƒ€ SELECT

  • ๋ณ„์นญ
    ๋ณ„์นญ์€ SQL ๋ฌธ ๋‚ด๋ถ€์—์„œ ํ…Œ์ด๋ธ”์ด๋‚˜ ์ปฌ๋Ÿผ์˜ ์ด๋ฆ„์„ ์ž„์‹œ๋กœ ๋ณ€๊ฒฝํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
1
๋ณ€๊ฒฝ์ „ ์ด๋ฆ„ [AS] ๋ณ€๊ฒฝํ›„ ์ด๋ฆ„


  • NULL ๊ฐ’
    DBMS๋Š” NULL ๊ฐœ๋…์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. NULL์€ ์•Œ ์ˆ˜ ์—†๋Š” ๊ฐ’, ์ ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๋Š” ํŠน์ˆ˜ ๋ฌธ์ž์ž…๋‹ˆ๋‹ค. NULL ๊ฐ’์„ ๊ฒ€์ƒ‰ํ•˜๋ ค๋ฉด IS NULL์„ ์‚ฌ์šฉํ•˜๊ณ  NULL์ด ์•„๋‹Œ ๊ฐ’์„ ๊ฒ€์ƒ‰ํ•˜๋ ค๋ฉด IS NOT NULL ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“์ด์ˆ˜ํ•™์ ์ด ๋ฏธ์ •์ธ ํ•™์ƒ์„ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

1
2
SELECT * FROM ์ „๊ณต
  WHERE ์ด์ˆ˜ํ•™์  IS NULL


  • ํ•จ์ˆ˜ ํ™œ์šฉ

    • ์ˆซ์ž ๊ด€๋ จ ํ•จ์ˆ˜
    ํ•จ์ˆ˜๋ช… ๊ธฐ๋Šฅ
    ABS(x) x์˜ ์ ˆ๋Œ€๊ฐ’
    CEILING(x) x๋ณด๋‹ค ํฐ ์ •์ˆ˜์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’
    FLOOR(x) x๋ณด๋‹ค ์ž‘์€ ์ •์ˆ˜ ์ค‘ ๊ฐ€์žฅ ํฐ ๊ฐ’
    ROUND(x, y) x์˜ ์†Œ์ˆ˜์  y ์ดํ•˜ ์ž๋ฆฟ์ˆ˜์—์„œ ๋ฐ˜์˜ฌ๋ฆผ์„ ์ ์šฉํ•œ ๊ฐ’
    TRUNCATE(x, y) x์˜ ์†Œ์ˆ˜์  y ์ดํ•˜ ์ž๋ฆฟ์ˆ˜์—์„œ ๋ฒ„๋ฆผ์„ ์ ์šฉํ•œ ๊ฐ’
    POWER(x, y) xy ๊ฐ’
    MOD(x, y) x๋ฅผ y๋กœ ๋‚˜๋ˆˆ ๊ฐ’์˜ ๋‚˜๋จธ์ง€


    • ๋ฌธ์ž ๊ด€๋ จ ํ•จ์ˆ˜
    ํ•จ์ˆ˜๋ช… ๊ธฐ๋Šฅ
    ASCII(s) ๋ฌธ์ž์—ด s์˜ ๋งจ ์™ผ์ชฝ ๋ฌธ์ž์˜ ASCII ์ฝ”๋“œ ๊ฐ’ ๋ฐ˜ํ™˜
    CONCAT(s1, s2, โ€ฆ) ์ž…๋ ฅ๋œ ๋ฌธ์ž์—ด์„ ์—ฐ๊ฒฐํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜
    CHAR_LENGTH(x) ๋ฌธ์ž์—ด s๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฌธ์ž์ˆ˜๋ฅผ ๋ฐ˜ํ™˜
    INSERT(s1, x, y, s2) ๋ฌธ์ž์—ด์˜ s1์˜ x๋ฒˆ์งธ ๋ฌธ์ž๋ถ€ํ„ฐ y๊ธธ์ด๋งŒํผ ๋ฌธ์ž์—ด s2๋กœ ๋Œ€์ฒดํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜
    REPLACE(s1, s2, s3) ๋ฌธ์ž์—ด s1 ๋‚ด์˜ s2๋ฅผ s3๋กœ ๋Œ€์ฒดํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜
    UPPER(s) ๋ฌธ์ž์—ด s์˜ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜
    SUBSTRING(s, x) ๋ฌธ์ž์—ด s์˜ x๋ถ€ํ„ฐ์˜ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜
    STRCMP(s1, s2) s1๊ณผ s2 ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•˜์—ฌ -1, 0, 1 ๋ฐ˜ํ™˜
    s1 < s2์ธ ๊ฒฝ์šฐ -1 ๋ฐ˜ํ™˜
    s1 > s2์ธ ๊ฒฝ์šฐ 1 ๋ฐ˜ํ™˜
    s1 == s2์ธ ๊ฒฝ์šฐ 0 ๋ฐ˜ํ™˜


    • ๋‚ ์งœ ๊ด€๋ จ ํ•จ์ˆ˜
    ํ•จ์ˆ˜๋ช… ๊ธฐ๋Šฅ
    ADDDATE(date, INTERVAL t) ๋‚ ์งœ์— t๋งŒํผ์˜ ์ดˆ, ๋ถ„, ์‹œ, ์ผ, ์›”, ํ˜น์€ ๋…„ ์ˆ˜๋ฅผ ๋”ํ•œ ๋‚ ์งœ๋ฅผ ๋ฐ˜ํ™˜
    SUBDATE(date, INTERVAL t) ๋‚ ์งœ์— t๋งŒํผ์˜ ์ดˆ, ๋ถ„, ์‹œ, ์ผ, ์›”, ํ˜น์€ ๋…„ ์ˆ˜๋ฅผ ๋บ€ ๋‚ ์งœ๋ฅผ ๋ฐ˜ํ™˜
    CURDATE() ํ˜„์žฌ ๋‚ ์งœ์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜
    CURTIME() ํ˜„์žฌ ์‹œ๊ฐ„์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜
    NOW() ํ˜„์žฌ์˜ ๋‚ ์งœ์™€ ์‹œ๊ฐ„ ๊ฐ’์„ ๋ฐ˜ํ™˜
    DATE() DATE TIME ํ˜•ํƒœ๋กœ ์ž…๋ ฅ ๋œ ๊ฐ’์˜ DATE ๋ถ€๋ถ„๋งŒ ๋ฐ˜ํ™˜
    HOUR() TIME ์œ ํ˜•์˜ ๊ฐ’์œผ๋กœ๋ถ€ํ„ฐ HOUR ์ถ”์ถœ
    TIMESTAMPDIFF(type, t1, t2) t2 - t1์˜ ๊ฐ’์„ ์‹œ๊ฐ„ type์— ๋”ฐ๋ผ ๋ณ€ํ™˜
    TO_SECONDS(t) ์ž…๋ ฅ๋œ ์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ t๋ฅผ ์ดˆ๋กœ ๋ณ€ํ™˜



Leave a comment