๐Ÿ“‹

3. MySQL-3

(์‹ค์Šต) ์ฃผ์„

์ด์ œ๋ถ€ํ„ฐ ๊ตฌ๋ฌธ์ด ์กฐ๊ธˆ ๋ณต์žกํ•ด์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜ ์ฃผ์„ ๊ตฌ๋ฌธ์€ ์ฟผ๋ฆฌ๋ฅผ ์„ค๋ช…ํ•˜๊ฑฐ๋‚˜ ์ฟผ๋ฆฌ๋ฅผ ์ž ์‹œ ๋ณด๋ฅ˜ํ•˜๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
-- ํ•ด๋‹น ๊ตฌ๋ฌธ์€ ์ „์ฒด ๊ณ ๊ฐ ์ •๋ณด๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค. SELECT * FROM Customers;
-- ํ•ด๋‹น ๊ตฌ๋ฌธ์€ ์ „์ฒด ๊ณ ๊ฐ ์ •๋ณด๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค. SELECT * FROM Customers --WHERE CustomerID > 50;
/* ์—ฌ๋Ÿฌ ์ค„ ์ฃผ์„์ž…๋‹ˆ๋‹ค. SELECT City FROM Customers; */ SELECT * FROM Customers;

(์‹ค์Šต) ์กฐ๊ฑด๋ฌธ

ํ•ด๋‹น ๊ตฌ๋ฌธ์€ ์•„๋ž˜ ํŽ˜์ด์ง€์—์„œ ์‹ค์Šตํ•˜์„ธ์š”. ๋‹ค๋ฅธ Page์—์„œ ์‹ค์Šต์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Oracle์˜ ๊ฒฝ์šฐ์—๋Š” DECODE, CASE WHEN
  • MsSQL์˜ ๊ฒฝ์šฐ์—๋Š” CASE WHEN
  • MySQL์˜ ๊ฒฝ์šฐ์—๋Š” IF, CASE WHEN
  • CASE WHEN ์กฐ๊ฑด THEN ์ฐธ์ผ๊ฒฝ์šฐ_์‹คํ–‰๊ตฌ๋ฌธ ELSE ๊ฑฐ์ง“์ผ๊ฒฝ์šฐ_์‹คํ–‰๊ตฌ๋ฌธ END
SELECT CASE WHEN 'GOOD'='JOB' THEN 'HELLO' ELSE 'WORLD' END;
์ข€ ๋” ์–ด๋ ค์šด ๊ตฌ๋ฌธ์„ ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๊ตฌ๋ฌธ์„ ์‹คํ–‰ํ•ด๋ณด์„ธ์š”.
SELECT CustomerID, City, CASE WHEN CustomerID > 50 THEN '50๋ฒˆ์„ ๋„˜์Œ!' WHEN City='London' THEN '๋„์‹œ๊ฐ€ ๋Ÿฐ๋˜!' ELSE '50๋ฒˆ ์ดํ•˜์ž„!' END AS '์ถœ๋ ฅ ๋ฌธ๊ตฌ' FROM Customers;
๋‹ค์Œ์€ W3School์—์„œ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋Š” ๊ตฌ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ City๋ฐ์ดํ„ฐ๊ฐ€ NULL๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด ์ •๋ ฌ ์ˆœ์„œ๋ฅผ Country ๊ธฐ์ค€์œผ๋กœ, ์•„๋‹ˆ๋ผ๋ฉด City ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๋ผ๋Š” ์ฟผ๋ฆฌ์ž…๋‹ˆ๋‹ค.
SELECT CustomerName, City, Country FROM Customers ORDER BY (CASE WHEN City IS NULL THEN Country ELSE City END);

(์‹ค์Šต) JOIN

๊ธฐ์ค€์„ ๊ฐ€์ง€๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ํ•ฉ์นฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” INNER JOIN๋งŒ ์‚ฌ์šฉํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
-- w3school ๊ธฐ๋ณธ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. -- OrderID๋Š” Orders๋ผ๋Š” table์— ์žˆ์Šต๋‹ˆ๋‹ค. -- CustomerName๋Š” Customers๋ผ๋Š” table์— ์žˆ์Šต๋‹ˆ๋‹ค. -- OrderDate๋Š” Orders๋ผ๋Š” table์— ์žˆ์Šต๋‹ˆ๋‹ค. SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate -- ๊ธฐ์ค€ table์€ Orders์ž…๋‹ˆ๋‹ค. FROM Orders -- INNER JOIN์„ ํ•  table์€ Customers์ž…๋‹ˆ๋‹ค. INNER JOIN Customers -- INNER JOIN์˜ ๊ธฐ์ค€์€ ๋‘ table ๋ชจ๋‘ ์žˆ๋Š” CustomerID์ž…๋‹ˆ๋‹ค. ON Orders.CustomerID=Customers.CustomerID;
๐Ÿ’ก
์ €๋Š” ํƒ๋ฐฐ๋ฅผ ๋ฐฐ๋‹ฌํ•˜๋Š” ํƒ๋ฐฐ๊ธฐ์‚ฌ์ž…๋‹ˆ๋‹ค. CustomerID์™€ CustomerName, Address, OrderDate, City, PostalCode๋ฅผ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น data๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ์„ธ์š”.
์ถœ์ฒ˜ : ์œ„๋‹ˆ๋ธŒ์ถœ์ฒ˜ : ์œ„๋‹ˆ๋ธŒ
์ถœ์ฒ˜ : ์œ„๋‹ˆ๋ธŒ
์ด์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ดํŽด๋ณด์„ธ์š”. W3School์—์„œ INNER JOIN ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ํ•ฉ์ณ๋ณด์„ธ์š”. ์œ„์˜ ๋ฌธ์ œ๋“ค์— ๋Œ€ํ•œ ์—ฐ์Šต๋ฌธ์ œ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด์„ธ์š”. ์ •๋‹ต๋„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์–ด์š”.

(์‹ค์Šต) UNION

๋ฐ์ดํ„ฐ๋ฅผ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค.
SELECT City FROM Customers UNION SELECT City FROM Suppliers ORDER BY City;
JOIN๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ W3School์—์„œ ์ œ๊ณตํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ฉ์ณ๋ณด์„ธ์š”.

(์‹ค์Šต) GROUP BY

ํŠน์ • ์—ด์„ ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ฃนํ™” ํ•˜์—ฌ ๋‹ค๋ฅธ ํŠน์ • ์—ด์— ๋ถ™์ผ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ์—์„œ GROUP BY ์ฝ”๋“œ๋ฅผ ์‚ญ์ œํ•˜๋ฉด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” SELECT ์ ˆ์—์„œ ์ด๋ฏธ ๊ทธ๋ฃน ํ•จ์ˆ˜์™€ ๊ธฐ์ค€์—ด์ด ์“ฐ์˜€๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
SELECT COUNT(CustomerID), Country FROM Customers GROUP BY Country;

(์‹ค์Šต) HAVING

๊ตฌ๋ฃนํ™”๋œ ๋ฐ์ดํ„ฐ์— ์กฐ๊ฑด์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.
SELECT COUNT(CustomerID), Country FROM Customers GROUP BY Country HAVING COUNT(CustomerID) > 5;

(์‹ค์Šต ์•ˆํ•จ) EXIST

์„œ๋ธŒ ์ฟผ๋ฆฌ๊ฐ€ ์ฐธ์ผ ๊ฒฝ์šฐ ์ฐธ์„, ๊ฑฐ์ง“์ผ ๊ฒฝ์šฐ ๊ฑฐ์ง“์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
SELECT SupplierName FROM Suppliers WHERE EXISTS (SELECT ProductName FROM Products WHERE Products.SupplierID = Suppliers.supplierID AND Price < 20);

(์‹ค์Šต ์•ˆํ•จ) ANY

์„œ๋ธŒ ์ฟผ๋ฆฌ๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์ฐธ์ด๋ผ๋ฉด ์ฐธ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
SELECT ProductName FROM Products WHERE ProductID = ANY (SELECT ProductID FROM OrderDetails WHERE Quantity = 10);

(์‹ค์Šต ์•ˆํ•จ) ALL

์„œ๋ธŒ ์ฟผ๋ฆฌ๊ฐ€ ๋ชจ๋‘ ์ฐธ์ด์–ด์•ผ ์ฐธ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
SELECT ProductName FROM Products WHERE ProductID = ALL (SELECT ProductID FROM OrderDetails WHERE Quantity = 10);
ย