Skip to content

Latest commit

ย 

History

History
454 lines (312 loc) ยท 11.8 KB

File metadata and controls

454 lines (312 loc) ยท 11.8 KB

SQL

SQL ์ž์Šต์„œ
https://www.w3schools.com/sql/default.asp

SQL์ด๋ž€

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์•ก์„ธ์Šคํ•˜๊ณ  ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ํ‘œ์ค€์–ธ์–ด

RDB

RDB(Relational Database)๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์— ๊ธฐ์ดˆ๋ฅผ ๋‘” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋‹ค. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์ด๋ž‘ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ 2์ฐจ์›์˜ ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•ด์ค€๋‹ค.

RDBMS

RDBMS(Relational Database Management System)์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ˆ˜์ •ํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด์ด๋‹ค.

SQL ๊ตฌ๋ฌธ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์กฐ์น˜๋Š” SQL ๋ฌธ์œผ๋กœ ์ˆ˜ํ–‰๋˜์–ด์ง„๋‹ค. ์•„๋ž˜๋Š” SELECT๋ฌธ์˜ ์˜ˆ์ œ์ด๋‹ค.

#Customers ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ•„๋“œ๋ฅผ ์„ ํƒํ•  ๋•Œ

SELECT * FROM Customers;

๊ตฌ๋ฌธ์€ ํ•ญ์ƒ ; ํ‘œ์‹œ๋กœ ๋์ด๋‚˜๊ณ 
SQL ํ‚ค์›Œ๋“œ๋Š” ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Œ.

์ž์ฃผ ์“ฐ์ด๋Š” ๋ช…๋ น

SELECT - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•œ๋‹ค.
UPDATE - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.
DELETE - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•œ๋‹ค.
INSERT INTO - ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์‚ฝ์ž…ํ•œ๋‹ค.
CREATE DATABASE - ์ƒˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“ ๋‹ค.
ALTER DATABASE - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค.
CREATE TABLE - ์ƒˆ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ ๋‹ค.
ALTER TABLE - ํ…Œ์ด๋ธ”์„ ์ˆ˜์ •ํ•œ๋‹ค.
DROP TABLE - ํ…Œ์ด๋ธ”์„ ์‚ญ์ œํ•œ๋‹ค.
CREATE INDEX - ์ƒ‰์ธ(๊ฒ€์ƒ‰ ํ‚ค)๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.
DROP INDEX - ์ƒ‰์ธ์„ ์‚ญ์ œํ•œ๋‹ค.

SELECT

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์–ด์ง„๋‹ค.

SELECT๋ฌธ์˜ ์˜ˆ์ œ๋Š” ์œ„์—์„œ ๋‹ค๋ฃจ์—ˆ์œผ๋ฏ€๋กœ ์•„๋ž˜์—์„œ๋Š” SELECT๋ฌธ์˜ ์˜ต์…˜๋“ค์— ๋Œ€ํ•ด์„œ ์‚ดํŽด๋ณธ๋‹ค.

SELECT DISTINCT

์ค‘๋ณต ๊ฐ’์„ ์ œ์™ธํ•œ ๊ฐ’๋“ค๋งŒ ๋‚˜์—ดํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

#ex)Customer ํ…Œ์ด๋ธ”์˜ Country์—ด์—์„œ ์ค‘๋ณต์ด ์ œ๊ฑฐ๋˜์–ด์ง„ ๊ฐ’์„ ๋‚˜์—ด
SELECT DISTINCT Country
FROM Customer;

#ex)Country์—ด์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜์—ด
SELECT COUNT(DISTINCT Country)
FROM Customers;

SELECT TOP

๋ฆฌํ„ด ํ•  ๋ ˆ์ฝ”๋“œ ์ˆ˜๋ฅผ ์ •ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜์–ด์ง„๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋งˆ๋‹ค ๋ฌธ๋ฒ•์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ƒ๋‹จ์˜ ํ™ˆํŽ˜์ด์ง€ ๋งํฌ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ํ™•์ธํ•œ๋‹ค.

SELECT INTO

ํ•œ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒˆ ํ…Œ์ด๋ธ”๋กœ ๋ณต์‚ฌํ•œ๋‹ค.

SELECT column1, column2, column3, ...
INTO newtable IN externaldb
FROM oldtable
WHERE condition;

์œ„์˜ IN๊ตฌ๋ฌธ์€ ์˜ต์…˜์ด๋‹ค. ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ํ…Œ์ด๋ธ”์„ ๋ณต์‚ฌํ•  ๋•Œ ์‚ฌ์šฉ๋˜์–ด์ง„๋‹ค.


WHERE

WHERE ์ ˆ์€ ์ง€์ •๋œ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋งŒ ์ถ”์ถœํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

#ex)Customers ํ…Œ์ด๋ธ”์—์„œ Country๊ฐ€ Mexico์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•  ๋•Œ
SELECT * FROM Customers
WHERE Country='Mexico';

WHERE ์ ˆ์— ์žˆ๋Š” ์—ฐ์‚ฐ์ž

Operator Description
= Equal
<> Not equal. Note: In some versions of SQL this operator may be written as !=
> Greater than
< Less than
>= Greater than or equal
<= Less than or equal
BETWEEN Between an inclusive range
LIKE Search for a pattern
IN To specify multiple possible values for a column

AND OR NOT

WHERE ์ ˆ์€ AND, OR, NOT ์—ฐ์‚ฐ์ž์™€์˜ ๊ฒฐํ•ฉ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

IN

IN ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ WHERE ์ ˆ์— ์—ฌ๋Ÿฌ ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
IN ์—ฐ์‚ฐ์ž๋Š” ์—ฌ๋Ÿฌ OR ์กฐ๊ฑด์˜ ์†๊ธฐ๋ฒ•์ด๋‹ค.

#ex)Customersํ…Œ์ด๋ธ”์˜ Countryํ•„๋“œ๊ฐ€ 'Germany' ๋˜๋Š” 'France' ๋˜๋Š” 'UK' ์ธ ๋ชจ๋“  ๊ฐ’
SELECT * FROM Customers
WHERE Country IN ('Germany', 'France', 'UK');

BETWEEN

์ฃผ์–ด์ง„ ๋ฒ”์œ„ ๋‚ด์˜ ๊ฐ’์„ ์„ ํƒํ•œ๋‹ค. ๊ฐ’์€ ์ˆซ์ž, ํ…์ŠคํŠธ ๋˜๋Š” ๋‚ ์งœ ๋“ฑ์ด ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์‹œ์ž‘๊ฐ’๊ณผ ๋๊ฐ’์ด ํฌํ•จ๋˜์–ด์ง„๋‹ค.

SELECT column_name
FROM table_name
WHERE column_name BETWEEN value1 AND value2;

ORDER BY

ORDER BY ๋ฌธ์€ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์„ ์˜ค๋ฆ„์ฐจ์ˆœ ๋˜๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.

์˜ค๋ฆ„์ฐจ์ˆœ : ASC(์˜ต์…˜ ์•ˆ์ฃผ์—ˆ์„ ์‹œ ๊ธฐ๋ณธ๊ฐ’)
๋‚ด๋ฆผ์ฐจ์ˆœ : DESC

#ex)Customer ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ Country์—ด๋กœ ์ •๋ ฌ ์„ ํƒ
SELECT * FROM Customers
ORDER BY Country;

#๋‹ค์Œ ์˜ˆ์ œ๋Š” ์œ„์˜ ๊ฒฐ๊ณผ์™€ ๋™์ผํ•˜๋‹ค(์˜ค๋ฆ„์ฐจ์ˆœ)
SELECT * FROM Customers
ORDER BY Country ASC;

#ex)Customersํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ Country์—ด๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ ์„ ํƒ
SELECT * FROM Customers
ORDER BY Country DESC;

#ex)Customers ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ Country์—ด๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ ํ›„ CustomerName์—ด๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ ์„ ํƒ
SELECT * FORM Customers
ORDER BY Country ASC, CustomerName DESC;

INSERT INTO

INSERT INTO๋ฌธ์€ ํ…Œ์ด๋ธ”์— ์ƒˆ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

#ex)Customers ํ…Œ์ด๋ธ”์˜ ์ง€์ •๋œ ํ•„๋“œ์—๋งŒ ๋ฐ์ดํ„ฐ ์‚ฝ์ž…
INSERT INTO Customers (CustomerName, City, Country)
VALUES ('Cardinal', 'Stavanger', 'Norway');

INSERT INTO SELECT

ํ•œ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์— ์‚ฝ์ž…ํ•  ๋•Œ ์‚ฌ์šฉ๋˜์–ด์ง„๋‹ค.

์†Œ์Šค ๋ฐ ๋ชฉํ‘œ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ ์œ ํ˜•์ด ์ผ์น˜ํ•˜์—ฌ์•ผ ํ•œ๋‹ค.

INSERT INTO table2 (column1, column2, column3,...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;

NULL

NULL์€ ๊ฐ’์ด ์—†๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์ด ๊ฒƒ์€ 0์ด๋‚˜ ๊ณต๋ฐฑ๊ฐ’์ด ์žˆ๋Š” ๊ฒƒ๊ณผ๋Š” ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ๊ฐ’์ด ์•„์˜ˆ ์ง€์ •์ด ๋˜์–ด์žˆ์ง€ ์•Š์€ ๊ฒƒ์ด๋‹ค.

NULL๊ฐ’์€ <์ด๋‚˜ =๊ฐ™์€ ๋น„๊ต ์—ฐ์‚ฐ์ž๋กœ ๋น„๊ตํ•  ์ˆ˜ ์—†๊ณ  ๋Œ€์‹  IS NULL ์—ฐ์‚ฐ์ž์™€ IS NOT NULL ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

#ex)IS NULL ๊ตฌ๋ฌธ์˜ ์˜ˆ
SELECT column_names
FROM table_name
WHERE column_name IS NULL;

UPDATE

๊ธฐ์กด์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

#ex)Customerํ…Œ์ด๋ธ”์˜ CustomerID๊ฐ€ 1์ธ ๋ ˆ์ฝ”๋“œ์˜ ์ˆ˜์ •
UPDATE Customers
SET ContactName='Alfred Schmidt', City='Frankfurt'
WHERE CustomerID=1;

WHERE ์ ˆ์„ ์ ์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ์˜ ContactName๊ณผ City๊ฐ€ ์ˆ˜์ •๋˜์–ด์ง€๋ฏ€๋กœ ์ฃผ์˜ํ•ด์•ผํ•œ๋‹ค.


DELETE

๊ธฐ์กด ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ญ์ œํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

#ex)Customers ํ…Œ์ด๋ธ”์˜ ํŠน์ • ๋ ˆ์ฝ”๋“œ ์‚ญ์ œํ•˜๊ธฐ
DELETE FROM Customers
WHERE CustomerName='Alfreds Futterkiste';

#ex)ํ…Œ์ด๋ธ” ๋‚ด์˜ ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ ์‚ญ์ œํ•˜๊ธฐ
DELETE FROM table_name;

Aggregate functions

MIN, MAX

์„ ํƒ๋œ ํ•„๋“œ์˜ ๊ฐ€์žฅ ์ž‘์€๊ฐ’ ๋˜๋Š” ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค.

#ex)Products ํ…Œ์ด๋ธ”์˜ Price ์ค‘ ๊ฐ€์žฅ ์ตœ์ €๊ฐ€๊ฒฉ์„ ์ฐพ๋Š”๋‹ค.
SELECT MIN(Price) AS SmallestPrice
FROM Products;

COUNT, AVG, SUM

COUNT() ํ•จ์ˆ˜๋Š” ์ง€์ •๋œ ๊ธฐ์ค€๊ณผ ์ผ์น˜ํ•˜๋Š” ๋ ˆ์ฝ”๋“œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

AVG() ํ•จ์ˆ˜๋Š” ์ˆซ์ž ํ•„๋“œ์˜ ํ‰๊ท ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

SUM() ํ•จ์ˆ˜๋Š” ์ˆซ์ž ํ•„๋“œ์˜ ์ด ํ•ฉ๊ณ„๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

#ex)COUNT()
SELECT COUNT(column_name)
FROM table_name
WHERE condition;

#ex)AVG()
SELECT AVG(column_name)
FROM table_name
WHERE condition;

#ex)SUM()
SELECT SUM(column_name)
FROM table_name
WHERE condition;

GROUP BY

aggregate functions์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜์–ด ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์„ ํ•˜๋‚˜ ์ด์ƒ์˜ ์—ด๋กœ ๊ทธ๋ฃนํ™”ํ•œ๋‹ค.

#ex)Customersํ…Œ์ด๋ธ”์—์„œ ๊ฐ™์€ Country๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” CustomerID์˜ ์ˆ˜
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country;

HAVING

WHERE ์ด aggregate functions์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜์–ด์งˆ ์ˆ˜ ์—†์–ด์„œ HAVING์„ ์‚ฌ์šฉํ•œ๋‹ค.

#ex)Customersํ…Œ์ด๋ธ”์—์„œ 5๋ช… ์ด์ƒ์˜ CustmerID๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” Country๋งŒ ๋‚˜์—ด
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5;

LIKE

WHERE ์ ˆ์—์„œ ํ•„๋“œ์˜ ์ง€์ •๋œ ํŒจํ„ด์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

  • % : ๋ฐฑ๋ถ„์œจ ๊ธฐํ˜ธ๋Š” 0, 1 ๋˜๋Š” ๋ณต์ˆ˜ ๋ฌธ์ž๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • _ : ๋ฐ‘์ค„์€ ๋ฌธ์ž ํ•œ๊ฐœ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

AND ๋˜๋Š” OR ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ์กฐ๊ฑด์˜ ๊ฒฐํ•ฉ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

#ex)Customers ํ…Œ์ด๋ธ”์˜ CustomerNameํ•„๋“œ์—์„œ 'a'๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ชจ๋“  ๊ฐ’
SELECT * FROM Customers
WHERE CustomerName LIKE 'a%';

#ex)Customers ํ…Œ์ด๋ธ”์˜ CustomerNameํ•„๋“œ์—์„œ 'a' ๋˜๋Š” 'b'๋˜๋Š” 'c'๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ชจ๋“  ๊ฐ’
SELECT * FROM Customers
WHERE CustomerName LIKE '[a-c]%';
LIKE Operator Description
WHERE CustomerName LIKE 'a%' Finds any values that starts with 'a'
WHERE CustomerName LIKE '%a' Finds any values that ends with 'a'
WHERE CustomerName LIKE '%or%' Finds any values that have 'or' in any position
WHERE CUstomerName LIKE '_r%' Finds any values that 'r' in the second position
WHERE CustomerName LIKE 'a_%_%' Finds any values that start with 'a' and are at least 3 characters in length
WHERE ContactName LIKE 'a%o' Finds any values that starts with 'a' and ends with 'o'

Aliases

Aliases๋Š” ํ…Œ์ด๋ธ” ๋˜๋Š” ํ…Œ์ด๋ธ” ํ•„๋“œ์— ์ž„์‹œ ์ด๋ฆ„์„ ์ฝ๊ธฐ ์‰ฝ๊ฒŒ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์— ์‚ฌ์šฉ๋œ๋‹ค. Aliases๋Š” ์กฐํšŒ ๊ธฐ๊ฐ„ ๋™์•ˆ๋งŒ ์กด์žฌํ•œ๋‹ค.

SELECT coulumn_name AS alias_name
FROM table_name;

SELECT column_name
FROM table_name AS alias_name;

JOIN

JOIN๋ฌธ์€ 2๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์„ ๊ด€๋ จ๋˜์–ด์ง„ ํ•„๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์—ฌ ๊ฒฐํ•ฉ์‹œํ‚จ๋‹ค.

INNER JOIN

INNER JOIN๋ฌธ์€ 2๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์—์„œ ์ผ์น˜ํ•˜๋Š” ๊ฐ’์„ ๊ฐ€์ง„ ๋ ˆ์ฝ”๋“œ๋งŒ ์„ ํƒํ•œ๋‹ค.

SELECT column_names
FROM table1
INNER JOIN table2 ON table1.column_name = table2.column_name;

์œ„ ์˜ˆ์ œ์—์„œ ๋งŒ์•ฝ table1.column_name๊ณผ table2.column_name์—์„œ ์ผ์น˜ํ•˜๋Š” ๊ฐ’์ด ์—†๋‹ค๋ฉด ์–ด๋– ํ•œ ๋ ˆ์ฝ”๋“œ๋„ ์„ ํƒ๋˜์–ด์ง€์ง€ ์•Š๋Š”๋‹ค.

LEFT JOIN

LEFT JOIN์€ ์™ผ์ชฝ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ์™€ ์˜ค๋ฅธ์ชฝ ํ…Œ์ด๋ธ”์˜ ์ผ์น˜ํ•˜๋Š” ๊ฐ’์„ ๊ฐ€์ง„ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ์˜ค๋ฅธ์ชฝ ๋ ˆ์ฝ”๋“œ์—์„œ ์ผ์น˜ํ•˜๋Š” ๊ฐ’์ด ์—†๋‹ค๋ฉด NULL ๊ฐ’์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

SELECT column_names
FROM table1
LEFT JOIN table2 ON table1.column_name = table2.column_name;

RIGHT JOIN

RIGHT JOIN์€ LEFT JOIN๊ณผ ๋ฐ˜๋Œ€์˜ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ง„๋‹ค.

SELECT column_names
FROM table1
RIGHT JOIN table2 ON table1.column_name = table2.column_name;

FULL OUTER JOIN

FULL OUTER JOIN์€ ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

SELECT column_names
FROM table1
FULL OUTER JOIN table2 ON table1.column_name = table2.column_name;

SELF JOIN

SELF JOIN์€ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์„ ๋‘๊ฐœ์˜ ํ…Œ์ด๋ธ”์ฒ˜๋Ÿผ JOIN์œผ๋กœ ์กฐํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ, ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์ด ํ•œ ํ…Œ์ด๋ธ”์— ๋“ค์–ด์žˆ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

SELECT column_names
FROM table1 T1, table1 T2
WHERE condition;

UNION

๋‘ ๊ฐœ ์ด์ƒ์˜ SELECT๋ฌธ์˜ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์„ ๊ฒฐํ•ฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์—ฐ์‚ฐ์ž์ด๋‹ค.

๊ฐ SELECT๋ฌธ์€ ๊ฐ™์€ ์ˆ˜์˜ ์—ด์„ ๊ฐ€์ ธ์•ผ ํ•˜๋ฉฐ, ์—ด์€ ์œ ์‚ฌํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค. ๋˜ํ•œ, ๊ฐ SELECT๋ฌธ์˜ ์—ด์€ ๊ฐ™์€ ์ˆœ์„œ๋กœ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

UNION ์—ฐ์‚ฐ์ž๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ค‘๋ณต๊ฐ’์€ ์ œ์™ธํ•˜๊ณ  ์„ ํƒํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ค‘๋ณต๊ฐ’์„ ํ—ˆ์šฉํ•˜๋ ค๋ฉด UNION ALL์„ ์‚ฌ์šฉํ•œ๋‹ค.

SELECT column_names FROM table1
UNION
SELECT column_names FROM table2

EXISTS

ํ•˜์œ„ ์ฟผ๋ฆฌ์˜ ๋ ˆ์ฝ”๋“œ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์–ด์ง„๋‹ค.
ํ•˜์œ„ ์ฟผ๋ฆฌ๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

SELECT column_names
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);

ANY & ALL

ANY ์—ฐ์‚ฐ์ž๋Š” ํ•˜์œ„ ์ฟผ๋ฆฌ ๊ฐ’ ์ค‘ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜๋Š” ๊ฐ’๋“ค์ด ์žˆ์œผ๋ฉด true์™€ ํ•จ๊ป˜ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
ALL ์—ฐ์‚ฐ์ž๋Š” ๋ชจ๋“  ํ•˜์œ„ ์ฟผ๋ฆฌ ๊ฐ’์ด ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜๋ฉด true์™€ ํ•จ๊ป˜ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

#ex)ANY
SELECT column_names
FROM table_name
WHERE column_name operator ANY
(SELECT column_name FROM table_name WHERE condition);

#ex)ALL
SELECT collumn_names
FROM table_name
WHERE column_name operator ALL
(SELECT column_name FROM table_name WHERE condition);

Comments

ํ•œ ์ค„ ์ฃผ์„์€ --๋กœ ์‹œ์ž‘ํ•œ๋‹ค.

์—ฌ๋Ÿฌ์ค„ ์ฃผ์„์€ /*๋กœ ์‹œ์ž‘ํ•˜๊ณ  */๋กœ ๋๋‚œ๋‹ค.