๐Ÿ’ป [SQL] 3. ๋ฐ์ดํ„ฐ ์กฐ์ž‘ ์–ธ์–ด(DML)

thisk336ยท2023๋…„ 10์›” 2์ผ
0

SQL

๋ชฉ๋ก ๋ณด๊ธฐ
3/17
post-thumbnail

DML

  • DML(Data Manipulation Language)์€ ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ, ์ˆ˜์ •, ์‚ญ์ œ, ์กฐํšŒํ•˜๋Š” ์–ธ์–ด๋กœ, INSERT, UPDATE, DELECT, SELECT๋ฌธ์ด ์žˆ๋‹ค.

SELECT๋ฌธ

  • SELECT๋ฌธ์€ ํ…Œ์ด๋ธ”์— ์ž…๋ ฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉฐ ํŠน์ • ์นผ๋Ÿผ์ด๋‚˜ ํŠน์ • ํ–‰๋งŒ์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ธฐ๋ณธ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
SELECT [์ปฌ๋Ÿผ๋ช…] 
FROM [ํ…Œ์ด๋ธ” ๋ช…]
WHERE [์กฐ๊ฑด๋ฌธ];

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

  • LIKE๋ฌธ์€ ์™€์ผ๋“œ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • LIMIT๋ฌธ์€ ์ปฌ๋Ÿผ์„ ์ถœ๋ ฅํ•  ๋•Œ LIMIT๋ฌธ์— ์ง€์ •๋œ ์ˆซ์ž๋งŒํผ๋งŒ ์ถœ๋ ฅํ•œ๋‹ค.
SELECT model_type FROM mytable;

SELECT * FROM mytable
WHERE model_num LIKE '13400%';
-- %๋Š” ์–ด๋–ค ๋ฌธ์ž๋ฅผ ํฌํ•จํ•œ ๋ชจ๋“  ๊ฒƒ์„ ์กฐํšŒํ•˜๋Š” ๊ฒƒ์ด๋‹ค. (e.g. '13400%'๋Š” 13400K, 13400KF ๋“ฑ์„ ์ถœ๋ ฅํ•œ๋‹ค.)
-- _๋Š” ํ•œ๊ฐœ์ธ ๋‹จ์–ด๋ฅผ ์˜๋ฏธํ•œ๋‹ค. (e.g. '13400_'๋Š” 13400K, 13400F ๋“ฑ์„ ์ถœ๋ ฅํ•œ๋‹ค. 

SELECT * FROM mytable
WHERE name = 'i5';

SELECT * FROM mytable
WHERE model_type = '๋žฉํ„ฐ๋ ˆ์ดํฌ'
LIMIT 1;
  • SELECT๋ฌธ์„ ์‚ฌ์šฉํ•  ๋•Œ ORDER BY๋ฅผ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ ํ˜น์€ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํŠน๋ณ„ํ•œ ์ง€์ •์ด ์—†์œผ๋ฉด ORDER BY๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.
SELECT * FROM mytable
ORDER BY lowest_price DESC;
-- ASC๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์˜ค๋ฆ„์ฐจ์ˆœ, DESC๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ
  • DISTINCT๋ฌธ์€ ์ปฌ๋Ÿผ๋ช… ์•ž์— ์ง€์ •ํ•˜๋ฉฐ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ๋งŒ ์กฐํšŒํ•˜๊ฒŒ ํ•œ๋‹ค.
SELECT DISTINCT model_num FROM mytable;
  • Alias๋Š” ํ…Œ์ด๋ธ”๋ช…์ด๋‚˜ ์ปฌ๋Ÿผ๋ช…์ด ๋„ˆ๋ฌด ๊ธธ์–ด์„œ ๊ฐ„๋žตํ•˜๊ฒŒ ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
SELECT DISTINCT model_num AS '๋ชจ๋ธ๋„˜๋ฒ„' FROM mytable;

์ถœ๋ ฅ๋  ๋•Œ๋„ ์ปฌ๋Ÿผ๋ช…์ด ์ง€์ •ํ•œ ์ด๋ฆ„์œผ๋กœ ์ถœ๋ ฅ๋œ๋‹ค.

  • BETWEEN๋ฌธ์€ WHERE์ ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ง€์ •๋œ ๋ฒ”์œ„์— ์žˆ๋Š” ๊ฐ’์„ ์กฐํšŒํ•œ๋‹ค.
SELECT * FROM mytable
WHERE lowest_price BETWEEN 300000 AND 500000;
  • IN๋ฌธ์€ WHERE์ ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, "OR"์˜ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์ž‡๊ณ  ํ•˜๋‚˜์˜ ์กฐ๊ฑด๋งŒ ๋งŒ์กฑํ•ด๋„ ์กฐํšŒ๊ฐ€ ๋œ๋‹ค.
SELECT * FROM mytable
WHERE model_num IN ('13700K','13700KF');
  • GROUP BY๋Š” ํ…Œ์ด๋ธ”์—์„œ ์†Œ๊ทœ๋ชจ ํ–‰์„ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ ํ•ฉ๊ณ„, ํ‰๊ท , ์ตœ๋Œ“๊ฐ’, ์ตœ์†Ÿ๊ฐ’ ๋“ฑ์„ ๊ณ„์‚ฐํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • HAVING๊ตฌ์— ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•˜๊ณ , ORDER BY๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ •๋ ฌ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
SELECT model_num, AVG(lowest_price) FROM mytable
GROUP BY model_num;
  • GROUP BY์— ์กฐ๊ฑด์ ˆ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด HAVING์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ๋งŒ์•ฝ WHERE์ ˆ์— ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์€ GROUP BY ๋Œ€์ƒ์—์„œ ์ œ์™ธ๋œ๋‹ค.
SELECT model_num, AVG(lowest_price) FROM mytable
WHERE id >= 3
GROUP BY model_num
HAVING AVG(lowest_price) > 300000;
  • COUNT() ํ•จ์ˆ˜๋Š” ํ–‰ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. COUNT(์ปฌ๋Ÿผ๋ช…)์€ NULL ๊ฐ’์„ ์ œ์™ธํ•œ ํ–‰ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋ฉฐ, COUNT(*)์€ NULL ๊ฐ’์„ ํฌํ•จํ•œ ๋ชจ๋“  ํ–‰ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.
SELECT COUNT(lowest_price) FROM mytable;
SELECT COUNT(*) FROM mytable;
  • SELECT๋ฌธ์€ FROM โ†’ WHERE โ†’ GROUP BY โ†’ HAVING โ†’ SELECT โ†’ ORDER BY ์ˆœ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค.

INSERT๋ฌธ

  • INSERT๋ฌธ์€ ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๋Š” DML์ด๋‹ค.
  • ๊ธฐ๋ณธ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
INSERT INTO [ํ…Œ์ด๋ธ”๋ช…]
([์ปฌ๋Ÿผ๋ช… 1], [์ปฌ๋Ÿผ๋ช… 2], ... )
VALUES ([๊ฐ’ 1], [๊ฐ’ 2], ...);
  • ๋งŒ์•ฝ ํŠน์ • ํ…Œ์ด๋ธ”์— ๋ชจ๋“  ์ปฌ๋Ÿผ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ปฌ๋Ÿผ๋ช…์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค.
INSERT INTO mytable
VALUES(5, 'i5', '13400', '๋žฉํ„ฐ๋ ˆ์ดํฌ');
  • SELECT๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•ด์„œ ํ•ด๋‹น ํ…Œ์ด๋ธ”์— ๋ฐ”๋กœ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค.
INSERT INTO mytable_test
SELECT * FROM mytable;

UPDATE๋ฌธ

  • UPDATE๋ฌธ์€ ์ž…๋ ฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” DML์ด๋‹ค.
  • ๊ธฐ๋ณธ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
UPDATE [ํ…Œ์ด๋ธ”๋ช…]
SET [์ปฌ๋Ÿผ๋ช…] = '๋ณ€๊ฒฝํ•  ๊ฐ’'
WHERE [์กฐ๊ฑด๋ฌธ];
  • UPDATE๋ฌธ์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” WHERE๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ์›ํ•˜๋Š” ์กฐ๊ฑด์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•œ ์ˆ˜ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋ฉฐ, ๋งŒ์•ฝ WHERE๋ฌธ์„ ์ž…๋ ฅํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆ˜์ •๋œ๋‹ค.
UPDATE mytable SET model_type = '์—˜๋”๋ ˆ์ดํฌ' 
WHERE id = 2;

-- ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.
UPDATE mytable SET name = 'i3', model_type = '์—˜๋”๋ ˆ์ดํฌ' 
WHERE model_num = '13700F';

DELECT๋ฌธ

  • DELETE๋ฌธ์€ ์›ํ•˜๋Š” ์กฐ๊ฑด์„ ๊ฒ€์ƒ‰ํ•ด์„œ ํ•ด๋‹น๋˜๋Š” ํ–‰์„ ์‚ญ์ œํ•˜๋Š” DML์ด๋‹ค.
  • ๊ธฐ๋ณธ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค
DELECT FROM [ํ…Œ์ด๋ธ”๋ช…]
WHERE [์กฐ๊ฑด๋ฌธ];
  • ๋งŒ์•ฝ WHERE๋ฌธ์„ ์ž…๋ ฅํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋œ๋‹ค.

  • ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๊ณ ์ž ํ•˜๋ฉด DELECT * FROM ํ…Œ์ด๋ธ”๋ช…; ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Š” DDL์—์„œ TRUNCATE TABLE ํ…Œ์ด๋ธ”๋ช…; ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ™์ง€๋งŒ DELECT๋ฌธ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋˜์–ด๋„ ํ…Œ์ด๋ธ”์˜ ์šฉ๋Ÿ‰์€ ๊ฐ์†Œํ•˜์ง€ ์•Š๋Š” ๋ฐ˜๋ฉด, TRUNCATE๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋˜๊ณ  ํ…Œ์ด๋ธ”์˜ ์šฉ๋Ÿ‰๋„ ์ดˆ๊ธฐํ™”๋œ๋‹ค.

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