#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;
๋ค์๊ณผ ๊ฐ์ด ์ฌ๋ฌ ์นผ๋ผ์ ํ๋๋ก ๋ง๋ค ์๋ ์๋ค.
๋์ค์ ๋ฐฐ์ฐ๊ฒ ์ง๋ง, ์ฌ๋ฌ ํ ์ด๋ธ์ ์กฐ์ธํ ๋ ํ ์ด๋ธ ๋ณ๋ช ์ ์ด์ฉํ๋ฉด ํธํ๋ค.
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;
..์์ฑ์ค์ธ ๊ธ์ ๋๋ค.
'๐ฑโ๐ป์ ๊ณต ๊ณต๋ถ > ๋ฐ์ดํฐ๋ฒ ์ด์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
#2 ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค (0) | 2021.06.24 |
---|---|
#1 ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ์ด (0) | 2021.06.23 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
JiwonDev
JiwonDev