JiwonDev

#3 SQL

by JiwonDev

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ SQL์„ ์‚ฌ์šฉํ•˜๋ฉด

  • ๋ฐ์ดํ„ฐ ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œ์ฒ˜๋Ÿผ ์กฐ์ž‘(DML, Data Manipulation)ํ•˜๊ฑฐ๋‚˜,
  • ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ๋ฅผ ์ •์˜(DDL, Data Definition)ํ•˜๊ฑฐ๋‚˜,
  • ๋ฐ์ดํ„ฐ ์ ‘๊ทผ๊ถŒํ•œ๋“ฑ์„ ์„ค์ •(DCL, Data Control)ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ตญ์ œ ํ‘œ์ค€ ํ˜‘ํšŒ(ANSI)์—์„œ ๋งŒ๋“  SQL ํ‘œ์ค€๋ฌธ๋ฒ•์ด ์กด์žฌํ•ด์„œ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋งˆ๋‹ค ์‚ฌ์šฉ๋ฒ•์€ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋งŒ ํŠน์ • DB์— ํŠนํ™”๋œ ๊ธฐ๋Šฅ๋“ค์€ ํ‘œ์ค€๋ฌธ๋ฒ•์— ์—†์–ด์„œ ํ˜ธํ™˜์ด ์•ˆ๋˜๋Š”๋ฐ, ์ด๋ฅผ DB ๋ฐฉ์–ธ (Database Dialect)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

# ํ›‘์–ด๋ณด๊ธฐ

์กฐํšŒ๋Š” ์ด๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

SELECT col1, col2, col3, ...  -- ์กฐํšŒํ•  ์นผ๋Ÿผ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
FROM table1                   -- ํ…Œ์ด๋ธ”์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
WHERE col4 = 1 AND col5 = 2   -- ๋ฐ์ดํ„ฐ ์กฐ๊ฑด์„ ๊ฒ๋‹ˆ๋‹ค.
GROUP BY …                    -- ํŠน์ • ์นผ๋Ÿผ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ, ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์Šต๋‹ˆ๋‹ค.
HAVING count(*) > 1           -- GROUP BY์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ง‘๊ณ„ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ์กฐ๊ฑด์„ ๊ฒ๋‹ˆ๋‹ค.
ORDER BY col2                 -- ์„ ํƒํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.
-- ๋ถ€์„œ๋ณ„ ์‚ฌ์›์ˆ˜ ์กฐํšŒ
SELECT '2005๋…„' year,  deptno ๋ถ€์„œ๋ฒˆํ˜ธ,  COUNT(*) ์‚ฌ์›์ˆ˜
 FROM emp                -- ํ…Œ์ด๋ธ”๋ช… emp
 GROUP BY deptno         -- deptno๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ฃนํ•‘
 ORDER BY COUNT(*) DESC; -- ์ •๋ ฌ
 
/* 
YEAR     ๋ถ€์„œ๋ฒˆํ˜ธ     ์‚ฌ์›์ˆ˜
------ ---------- ----------
2005๋…„         30          6
2005๋…„         20          5
2005๋…„         10          3
*/
SELECT deptno, COUNT(*), ROUND(AVG(sal)) "๊ธ‰์—ฌํ‰๊ท ", ROUND(SUM(sal)) "๊ธ‰์—ฌํ•ฉ๊ณ„"
FROM emp
GROUP BY deptno;
 
  DEPTNO   COUNT(*)    ๊ธ‰์—ฌํ‰๊ท     ๊ธ‰์—ฌํ•ฉ๊ณ„
-------- ---------- ---------- ----------
      30          6       1567       9400
      20          5       2175      10875
      10          3       2917       8750

 

๋ฐ์ดํ„ฐ๋Š” ์ด๋ ‡๊ฒŒ ์ถ”๊ฐ€ํ•œ๋‹ค.

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
 
-- Value์˜ ๊ฐœ์ˆ˜๊ฐ€ ํ…Œ์ด๋ธ” ์นผ๋Ÿผ ๊ฐœ์ˆ˜์™€ ๊ฐ™๋‹ค๋ฉด ์ƒ๋žตํ•ด๋„ ์ƒ๊ด€์—†๋‹ค. ์ˆœ์„œ๋Œ€๋กœ ๋“ค์–ด๊ฐ„๋‹ค
INSERT INTO table_name -- N ๊ฐœ์˜ ์นผ๋Ÿผ์„ ๊ฐ€์ง„ ํ…Œ์ด๋ธ”
VALUES (value1, value2, value3, ... valueN);
INSERT INTO Customers (CustomerName, City, Country)
VALUES ('Cardinal', 'Stavanger', 'Norway');
 
INSERT INTO Customers ( Address, City, PostalCode, Country)
VALUES ('Skagen 21', 'Stavanger', '4006', 'Norway');
-- ๊ฐœํ–‰์€ ์ƒ๊ด€์—†๋‹ค.
INSERT INTO table1
       (id, first_name, last_name)
VALUES (1, 'Rebel', 'Labs');

-- ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์—์„œ ์กฐํšŒํ•œ ๋‚ด์šฉ์„ ์‚ฝ์ž…ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
INSERT INTO table1 (id, first_name, last_name)
  SELECT id, last_name, first_name FROM table2

 

์‚ญ์ œ์™€ ์ˆ˜์ •์€ ์ด๋ ‡๊ฒŒ ํ•œ๋‹ค.

์ฐธ๊ณ ๋กœ ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š” ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•œ๋‹ค. ํ•˜๋‚˜๋งŒ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๊ณ ์œ ํ•œ ID๋ฅผ ์ด์šฉํ•˜์ž.

UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1;
DELETE 
FROM Customers 
WHERE CustomerName='Alfreds Futterkiste';
-- Customers ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ์ „๋ถ€ ์‚ญ์ œ
DELETE FROM Customers;
-- ์ฐธ๊ณ ๋กœ AS๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฒฐ๊ณผ๋กœ ๋ฐ›์„ ์นผ๋Ÿผ ์ด๋ฆ„์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค
-- ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋ ˆ์ฝ”๋“œ ๊ฐ’์€ 0์œผ๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค.
SELECT MIN(Column) AS NewColumnName
FROM Table;
 
SELECT MAX(Price) AS LargestPrice
FROM Products;
 
SELECT COUNT(ProductID)
FROM Products;
 
SELECT AVG(Price)
FROM Products;
 
SELECT SUM(Quantity)
FROM OrderDetails;

 

# 0. AS ( ๋ณ„๋ช… ์ง“๊ธฐ )

-- ๊ฒฐ๊ณผ๋กœ ๋ฐ›์•„์˜ฌ ์นผ๋Ÿผ์ด๋‚˜ ํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.
SELECT column_name AS alias_name
FROM table_name;

-- ํ…Œ์ด๋ธ”์— ๋ณ„๋ช…์„ ์ง€์„ ์ˆ˜๋„ ์žˆ๋‹ค.
SELECT MyTable.column1, MyTable.column2
FROM table_name AS MyTable;

-- ์—ฌ๋Ÿฌ๊ฐœ๋Š” , ๋กœ ๊ตฌ๋ถ„
SELECT CustomerID AS ID, CustomerName AS Customer
FROM Customers;

-- ์นผ๋Ÿผ์ด๋ฆ„์— ๊ณต๋ฐฑ์ด ์žˆ๋‹ค๋ฉด [~] ๋‚˜ "~" ๋กœ ๊ฐ์‹ธ์•ผํ•œ๋‹ค.
SELECT ContactName AS [Contact Person]
FROM Customers;

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์—ฌ๋Ÿฌ ์นผ๋Ÿผ์„ ํ•˜๋‚˜๋กœ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค.

์—ฌ๋Ÿฌ ์นผ๋Ÿผ์ด Address๋กœ ํ•ฉ์ณ์ง„ ๋ชจ์Šต

๋‚˜์ค‘์— ๋ฐฐ์šฐ๊ฒ ์ง€๋งŒ, ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ• ๋•Œ ํ…Œ์ด๋ธ” ๋ณ„๋ช…์„ ์ด์šฉํ•˜๋ฉด ํŽธํ•˜๋‹ค.

SELECT o.OrderID, o.OrderDate, c.CustomerName -- ๊ฐ๊ฐ์˜ ํ…Œ์ด๋ธ”์—์„œ ํ•„์š”ํ•œ ์นผ๋Ÿผ์„ ์ถ”์ถœํ•œ๋‹ค.
FROM Customers AS c, Orders AS o -- ํ…Œ์ด๋ธ”์— c, o ๋ผ๋Š” ๋ณ„๋ช…์„ ์ง€์–ด์ฃผ์—ˆ๋‹ค.
WHERE c.CustomerName='Around the Horn' AND c.CustomerID=o.CustomerID; -- ์กฐ๊ฑด

 


# 1. Select

/*  Select ์—ด์ด๋ฆ„ From ํ…Œ์ด๋ธ” ์ด๋ฆ„ */
SELECT column1, column2, ...
FROM table_name;

/* ํ•œ์ค„๋กœ ์ ์–ด๋„ ๋œ๋‹ค. ๋ชจ๋“  ์—ด์„ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์œผ๋ฉด * ์„ ์‚ฌ์šฉํ•œ๋‹ค. */
SELECT * FROM table_name;
-- Customers ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๋ชจ๋“  ์—ด์„ ๊ฐ€์ ธ์˜จ๋‹ค.
SELECT * FROM Customers;

# 1-1. Select Distinct

Select ๋ฌธ์— Distinct๋ฅผ ๋ถ™์ด๋ฉด ์ค‘๋ณต์„ ์ œ๊ฑฐํ•œ ํ…Œ์ด๋ธ”์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. ์ฐธ๊ณ ๋กœ ๋ ˆ์ฝ”๋“œ ์ค‘๋ณต ์ œ๊ฑฐ์ด๋‹ค. (ํ•œ ํ–‰์˜ ๋ชจ๋“  ๊ฐ’์ด ๊ฐ™์€ ๊ฒฝ์šฐ ์ค‘๋ณต์œผ๋กœ ํŒ๋‹จ)

SELECT DISTINCT Country FROM Customers;

-- ๋ ˆ์ฝ”๋“œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์–ป๊ณ ์‹ถ๋‹ค๋ฉด COUNT ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์ž.
SELECT COUNT(DISTINCT Country) FROM Customers;

-- ๋ณดํ†ต์€ ๊ธฐ๋ณธ๊ฐ’์ด๋ผ ์ƒ๋žตํ•˜์ง€๋งŒ, Select ALL ์ด๋ผ๊ณ  ์ ์–ด๋„ ๋™์ž‘ํ•˜๊ธด ํ•œ๋‹ค.
SELECT ALL Country FROM Customers; -- ์ผ๋ฐ˜ Select ๋ฌธ
SELECT DISTINCT Country FROM Customers; -- ์ค‘๋ณต์ œ๊ฑฐ Select ๋ฌธ

 

# 1-2 ์ƒ์œ„ n๊ฐœ Select

ํ…Œ์ด๋ธ”์˜ ์ƒ์œ„ ๋ ˆ์ฝ”๋“œ ์ผ๋ถ€๋งŒ ๋ณด๊ณ ์‹ถ์œผ๋ฉด ๋ณดํ†ต LIMIT๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋งˆ๋‹ค ๋ช…๋ น์–ด๊ฐ€ ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅด๋‹ค.

-- MYSQL
SELECT column_name(s)
FROM table_name
WHERE condition --> ์ƒ๋žต๊ฐ€๋Šฅ
LIMIT ๊ฐœ์ˆ˜;

-- Orcale v12 (์˜›๋‚ ์—๋Š” Fetch ๋Œ€์‹  Where ROWNUM <= ๊ฐœ์ˆ˜ ์‚ฌ์šฉ)
SELECT column_name(s)
FROM table_name
ORDER BY column_name(s) --> ์ƒ๋žต๊ฐ€๋Šฅ
FETCH FIRST ๊ฐœ์ˆ˜ ROWS ONLY;

# 2. Where

Select, Update, Delete ๋“ฑ์„ ์‚ฌ์šฉํ•  ๋•Œ ์ ์šฉํ•  ํ…Œ์ด๋ธ”์˜ ์กฐ๊ฑด์„ ์ง€์ • ํ•  ์ˆ˜ ์žˆ๋‹ค.

SELECT * FROM Customers
WHERE CustomerID=1;

-- ํ…์ŠคํŠธ๋Š” ์ž‘์€ ๋”ฐ์Œํ‘œ('~') ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ž…๋ ฅํ•œ๋‹ค.
SELECT * FROM Customers
WHERE Country='Mexico';

SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;

Where์— ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ์—ฐ์‚ฐ์ž๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ์กฐ๊ฑด๋“ค์€ AND OR NOT ๋“ฑ์˜ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์œผ๋กœ ๋ฌถ์„ ์ˆ˜ ์žˆ๋‹ค.

-- BETWEEN a AND b์€ ์—ฐ์†์ ์ธ ์ˆซ์ž๋ฅผ ๋‚˜ํƒ€๋‚ผ ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค (a <= ๊ฐ’ <= b)
SELECT * FROM USER WHERE height >=180 AND height <=185 ;
SELECT * FROM USER BETWEEN 180 AND 185;

-- ํ…์ŠคํŠธ๋กœ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•ด ํ…Œ์ด๋ธ”์—์„œ ์—ฐ์†๋œ ๋ ˆ์ฝ”๋“œ ๊ฐ’๋“ค์„ ๊ฐ€์ ธ์˜ฌ์ˆ˜๋„์žˆ๋‹ค.
SELECT * FROM Products
WHERE ProductName BETWEEN 'Boston Crab Meat' AND 'Longlife Tofu'
ORDER BY ProductName;

-- #1999/09/09# ์„ ์ด์šฉํ•˜๋ฉด ๋‚ ์งœ๋„ ์ž…๋ ฅ๊ฐ€๋Šฅ
SELECT * FROM Orders
WHERE OrderDate BETWEEN #07/01/1996# AND #07/31/1996#;

-- ์—ฐ์†์ ์ด์ง€ ์•Š๋‹ค๋ฉด IN์„ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค. (A, B, C)
SELECT * FROM USER WHERE address ='A' OR address ='B' OR address ='C';
SELECT * FROM USER WHERE address IN ('A', 'B', 'C');

 

--- ๊ฐ€๊ฒฉ์ด 10~20 ์ด๊ณ  CategoryID๊ฐ€ (1,2,3)์ด ์•„๋‹Œ ๋ ˆ์ฝ”๋“œ.
SELECT * FROM Products
WHERE Price BETWEEN 10 AND 20
AND CategoryID NOT IN (1,2,3);

# 2-1 LIKE (๋ฌธ์ž ํŒจํ„ด๋งค์นญ)

์ฐธ๊ณ ๋กœ ํŒจํ„ด๋งค์นญ์— ์‚ฌ์šฉ๋˜๋Š” ์™€์ผ๋“œ์นด๋“œ๋Š” DB๋งˆ๋‹ค ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅด๋‹ค.

-- ๋ฌธ์ž์—ด์„ ์ •๊ทœํ‘œํ˜„์‹์ฒ˜๋Ÿผ ๊ฒ€์ƒ‰ํ•˜๊ณ ์‹ถ์„ ๋•Œ LIKE๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 
-- [%] ์™€ [_] ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ •๊ทœํ‘œํ˜„์‹์œผ๋กœ ๊ฐ™์€ ์˜๋ฏธ์ธ [*] ์™€ [?]๋ฅผ ๊ฐ™์ด ์ง€์›ํ•ด์ฃผ๊ธฐ๋„ ํ•œ๋‹ค.

--> [??] ์ด๋ฆ„์ด 2๊ธ€์ž์ธ ๋‹จ์–ด ์ฐพ๊ธฐ
SELECT * FROM USER WHERE name = '__';
SELECT * FROM USER WHERE name LIKE '__';

--> [๊น€*] ๊น€์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ชจ๋“  ๋‹จ์–ด
SELECT * FROM USER WHERE name = '๊น€%'; 
SELECT * FROM USER WHERE name LIKE '๊น€%'; 
 
--> [.๊น€*] 2๋ฒˆ์งธ ๊ธ€์ž๊ฐ€ ๊น€์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ชจ๋“  ๋‹จ์–ด ์ฐพ๊ธฐ 
SELECT * FROM USER WHERE name = '_๊น€%';
SELECT * FROM USER WHERE name LIKE '_๊น€%';
 
--> [..๊น€*] 3๋ฒˆ์งธ ๊ธ€์ž๊ฐ€ ๊น€์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ชจ๋“  ๋‹จ์–ด ์ฐพ๊ธฐ 
SELECT * FROM USER WHERE name = '__๊น€%';
SELECT * FROM USER WHERE name LIKE '__๊น€%';
 
--> [*๊น€*] a์ด๋ผ๋Š” ๊ธ€์ž๊ฐ€ ํฌํ•จ๋œ ๋ชจ๋“  ๋‹จ์–ด ์ฐพ๊ธฐ 
SELECT * FROM USER WHERE name = '%a%';
SELECT * FROM USER WHERE name LIKE '%a%';

 

# 2-2 IS NULL

์ฐธ๊ณ ๋กœ Where์ ˆ์— NULL ๊ฐ’ ์—ฌ๋ถ€๋ฅผ ํŒ๋ณ„ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

SELECT CustomerName, ContactName, Address
FROM Customers
WHERE Address IS NULL;

SELECT CustomerName, ContactName, Address
FROM Customers
WHERE Address IS NOT NULL;

# 3. Order By

๋ฐ์ดํ„ฐ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ(Ascending)์ด๋‚˜ ๋‚ด๋ฆผ์ฐจ์ˆœ(Descending)์œผ๋กœ ์ •๋ ฌ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ ์˜ค๋ฆ„์ฐจ์ˆœ์ด๋ฉฐ ์ •๋ ฌ ๊ธฐ์ค€์ด ์—ฌ๋Ÿฌ๊ฐœ์ธ ๊ฒฝ์šฐ ๋จผ์ € ์ ์€ ์—ด๋ถ€ํ„ฐ ์ ์šฉํ•œ๋‹ค. (๊ฐ’์ด ๋™์ผํ•˜๋ฉด ๋‹ค์Œ์— ์ ์€ ์—ด ์ ์šฉ)

SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;

-- ASC, DESC๋Š” ์ „์ฒด ์ ์šฉ์ด ์•„๋‹ˆ๋ผ ์—ด(column)๋งˆ๋‹ค ์ ์šฉ๋œ๋‹ค.
SELECT * FROM Customers
ORDER BY Country DESC, Address DESC;

# 4. Insert Into

ํ…Œ์ด๋ธ”์— ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. ๋‚˜์ค‘์— ๋ฐฐ์šฐ๊ฒ ์ง€๋งŒ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค ๋•Œ AUTO_INCREMENT ํ•„๋“œ๋ฅผ ์ง€์ •ํ•ด๋†“์œผ๋ฉด, ๋”ฐ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š์•„๋„ ์ƒˆ๋กœ์šด ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด์˜ฌ ๋•Œ ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ๋‹ค์Œ ๋ฒˆํ˜ธ๊ฐ€ ๋ถ€์—ฌ๋˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜๋„์žˆ๋‹ค.

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

-- Value์˜ ๊ฐœ์ˆ˜๊ฐ€ ํ…Œ์ด๋ธ” ์นผ๋Ÿผ ๊ฐœ์ˆ˜์™€ ๊ฐ™๋‹ค๋ฉด ์ƒ๋žตํ•ด๋„ ์ƒ๊ด€์—†๋‹ค. ์ˆœ์„œ๋Œ€๋กœ ๋“ค์–ด๊ฐ„๋‹ค
INSERT INTO table_name -- N ๊ฐœ์˜ ์นผ๋Ÿผ์„ ๊ฐ€์ง„ ํ…Œ์ด๋ธ”
VALUES (value1, value2, value3, ... valueN);
INSERT INTO Customers (CustomerName, City, Country)
VALUES ('Cardinal', 'Stavanger', 'Norway');

INSERT INTO Customers ( Address, City, PostalCode, Country)
VALUES ('Skagen 21', 'Stavanger', '4006', 'Norway');

 

# 5. Update & Delete

Where ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š” ๋ ˆ์ฝ”๋“œ์˜ ๊ฐ’์„ ๋ฐ”๊พผ๋‹ค. ๋™์ผํ•œ ๊ฐ’์ด ์—ฌ๋Ÿฌ๊ฐœ๋ผ๋ฉด ๋ชจ๋‘ ์ ์šฉ๋œ๋‹ค.

UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1;
DELETE FROM Customers 
WHERE CustomerName='Alfreds Futterkiste';

์ฐธ๊ณ ๋กœ ์กฐ๊ฑด์ด ์—†์œผ๋ฉด ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ญ์ œ(=ํ…Œ์ด๋ธ” ์‚ญ์ œ)ํ•œ๋‹ค.

-- Customers ํ…Œ์ด๋ธ” ์‚ญ์ œ
DELETE FROM Customers;

 

# 6. ์‚ฐ์ˆ ์—ฐ์‚ฐ (Min, Max, Count, Avg, Sum)

-- ์ฐธ๊ณ ๋กœ AS๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฒฐ๊ณผ๋กœ ๋ฐ›์„ ์นผ๋Ÿผ ์ด๋ฆ„์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค
-- ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋ ˆ์ฝ”๋“œ ๊ฐ’์€ 0์œผ๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค.
SELECT MIN(Column) AS NewColumnName
FROM Table;

SELECT MAX(Price) AS LargestPrice
FROM Products;

SELECT COUNT(ProductID)
FROM Products;

SELECT AVG(Price)
FROM Products;

SELECT SUM(Quantity)
FROM OrderDetails;

# 7. IN์„ ์ด์šฉํ•œ ์„œ๋ธŒ์ฟผ๋ฆฌ

Where IN ์—์„œ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์ด์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

-- ์กฐ๊ฑด์„ ์ง์ ‘ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•
SELECT * FROM Customers
WHERE Country IN ('Germany', 'France', 'UK');

-- ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์ด์šฉํ•ด ์กฐ๊ฑด์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•
SELECT * FROM Customers
WHERE Country IN (SELECT Country FROM Suppliers);

# 8. Join

์—ฐ๊ด€๋œ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ ํ•˜๋‚˜๋กœ ๊ฒฐํ•ฉํ•  ๋•Œ ์กฐ์ธ์„ ์‚ฌ์šฉํ•œ๋‹ค.

- Inner Join

ํ…Œ์ด๋ธ”์˜ ๊ณตํ†ต๋œ ์š”์†Œ๋ฅผ ํ†ตํ•ด ๊ฒฐํ•ฉํ•œ๋‹ค. ๊ณตํ†ต์š”์†Œ๊ฐ€ ์—†์œผ๋ฉด ๊ฐ’์ด ์—†์–ด์ง€๋ฉฐ ์นผ๋Ÿผ ๊ธฐ์ค€์€ ON ์„ ์ด์šฉํ•ด์„œ ์ •ํ•œ๋‹ค.

SELECT table1.col1, table1.col2, ..., table2.col1, table2.col2, ...
FROM table1 [table1์˜ ๋ณ„์นญ]
JOIN table2 [table2์˜ ๋ณ„์นญ] ON table1.col1 = table2.col2

 


- Left Join (Left Outer ์กฐ์ธ)

์™ผ์ชฝ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋ถ€ ์‚ด๋ฆฌ๊ณ , ์™ผ์ชฝ์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฅธ์ชฝ ํ…Œ์ด๋ธ”์„ ๊ฒฐํ•ฉํ•œ๋‹ค.

์ฐธ๊ณ ๋กœ outer ์กฐ์ธ์„ ํ•˜๋ฉด null ๊ฐ’์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค. (์˜ค๋ฅธ์ชฝ ํ…Œ์ด๋ธ” table2์—๋Š” ์—†๋Š” ์นผ๋Ÿผ์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋‹ˆ๊นŒ)

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;

- Right Join (Right Outer ์กฐ์ธ)

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;

- Full Join (Full Outer ์กฐ์ธ)

๋‘ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์‚ด๋ฆฌ๋Š” ๋ฐฉ๋ฒ•.

SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name = table2.column_name
WHERE condition;

- Self Join

๊ธฐ์กด์˜ ํ…Œ์ด๋ธ”์„ ๋‹ค๋ฅธํ˜•ํƒœ๋กœ ๋ฐ”๊ฟ€ ๋•Œ (ex ํ•™์ƒ๋ณ„ ์ˆ˜๊ฐ•์‹ ์ฒญ ์ •๋ณด -> ๊ณผ๋ชฉ๋ณ„ ํ•™์ƒ์ •๋ณด) ์‚ฌ์šฉํ•œ๋‹ค.

SELECT A.CustomerName AS CustomerName1, B.CustomerName AS CustomerName2, A.City
FROM Customers A, Customers B
WHERE A.CustomerID <> B.CustomerID
AND A.City = B.City 
ORDER BY A.City;

 

 

..์ž‘์„ฑ์ค‘์ธ ๊ธ€์ž…๋‹ˆ๋‹ค.

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

JiwonDev

JiwonDev

ํ™œ๋™ํ•˜๊ธฐ