
select๊ฐ return
SELECT *
FROM team
ORDER BY team_name COLLATE korean ASC;
๐งฉ ๊ตฌ๋ฌธ๋ณ ์์ธ ์ค๋ช
1๏ธโฃ SELECT *
- SELECT: ๋ฐ์ดํฐ๋ฅผ ์กฐํ(๊ฒ์) ํ๊ฒ ๋ค๋ ๋ช ๋ น์ ๋๋ค.
- * (asterisk, ๋ณํ): “๋ชจ๋ ์ปฌ๋ผ์ ์ ํ”ํ๋ค๋ ๋ป์ด์์.
์ฆ, ํ ์ด๋ธ์ ์๋ ๋ชจ๋ ์ด(์: id, team_name, city, score ๋ฑ)์ ์ ๋ถ ๋ณด์ฌ์ค๋๋ค.
๐ ์์
SELECT team_name FROM team;
→ ์ด๋ ๊ฒ ํ๋ฉด team_name ์ด๋ง ๊ฐ์ ธ์ต๋๋ค.
SELECT * FROM team;
→ ์ด๋ ๊ฒ ํ๋ฉด ๋ชจ๋ ์ด์ ๋ค ๊ฐ์ ธ์ต๋๋ค.
2๏ธโฃ FROM team
- FROM: ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ํ ์ด๋ธ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
- team: ์ค์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ํ ์ด๋ธ์ ์ด๋ฆ์ ๋๋ค.
์ฆ,
"team์ด๋ผ๋ ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์๋ผ"
๋ผ๋ ๋ป์ ๋๋ค.
3๏ธโฃ ORDER BY team_name
- ORDER BY: ์กฐํ๋ ๊ฒฐ๊ณผ๋ฅผ ํน์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ผ๋ ๋ช ๋ น์ ๋๋ค.
- team_name: ์ ๋ ฌ ๊ธฐ์ค์ด ๋๋ ์ปฌ๋ผ(์ด)์ ๋๋ค.
์ฆ,
“ํ ์ด๋ฆ(team_name) ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ผ”
๋ ์๋ฏธ์ ๋๋ค.
4๏ธโฃ COLLATE korean
- COLLATE: ๋ฌธ์์ด ๋น๊ต ๋ฐ ์ ๋ ฌ ์ ์ฌ์ฉํ๋ ๊ท์น(์ ๋ ฌ ๋ฐฉ์) ์ ์ง์ ํฉ๋๋ค.
- korean: ํ๊ธ ์ ๋ ฌ ๊ท์น์ ์ฌ์ฉํ๋ค๋ ์๋ฏธ์ ๋๋ค.
๐ ์ ํ์ํ๋๋ฉด?
์๋ฌธ, ์ซ์, ํ๊ธ ๋ฑ ์ธ์ด๋ง๋ค ์ ๋ ฌ ์์๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ด์์.
์๋ฅผ ๋ค์ด ๊ธฐ๋ณธ ์ค์ ์ด ์์ด ์ ๋ ฌ์ด๋ฉด, ๊ฐ, ๋, ๋ค ์์๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ ๋ ฌ๋์ง ์์ ์ ์์ต๋๋ค.
๊ทธ๋์ COLLATE korean์ ์ง์ ํ๋ฉด “๊ฐ๋๋ค ์”์ผ๋ก ์ ํํ๊ฒ ์ ๋ ฌ๋ฉ๋๋ค.
5๏ธโฃ ASC
- ASC (Ascending): ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ์๋ฏธํฉ๋๋ค.
- A → Z, ๊ฐ → ํ, ์์ ์ → ํฐ ์ ์์ผ๋ก ์ ๋ ฌ๋ฉ๋๋ค.
- ๋ฐ๋๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ์ DESC (Descending) ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๐ ์์
ASC: ๊ฐ๋๋ค์, 1→2→3
DESC: ํ๋๋ค์, 3→2→1
SELECT c.Customer ID
FROM Customers c
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
ํ ์ค ์์ฝ
Orders ํ ์ด๋ธ๊ณผ Customers ํ ์ด๋ธ์
CustomerID ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ฐ๊ฒฐํด์,
์ฃผ๋ฌธ ๋ฒํธ(OrderID), ๊ณ ๊ฐ ์ด๋ฆ(CustomerName), ์ฃผ๋ฌธ ๋ ์ง(OrderDate)๋ฅผ ๊ฐ์ ธ์ค๋ผ๋ ๋ช ๋ น์ ๋๋ค.
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);
โ ์ ๋ฆฌ: SQL ์คํ ์์
SQL ๋ฌธ์ฅ์ ์ฐ๋ฆฌ๊ฐ ์ ๋ ์์์ ์คํ ์์๊ฐ ๋ค๋ฆ ๋๋ค!
์ค์ ๋ก ์คํ๋๋ ์์๋ ๋ค์๊ณผ ๊ฐ์์ ๐
| 1 | FROM | ํ ์ด๋ธ ์ง์ |
| 2 | WHERE | ์กฐ๊ฑด์ผ๋ก ํ ํํฐ๋ง |
| 3 | GROUP BY | ๊ทธ๋ฃน ๋ฌถ๊ธฐ |
| 4 | HAVING | ๊ทธ๋ฃน์ ์กฐ๊ฑด ๊ฑธ๊ธฐ (WHERE์ ๋น์ทํ์ง๋ง ๊ทธ๋ฃน์ฉ) |
| 5 | SELECT | ์ปฌ๋ผ ์ ํ |
| 6 | ORDER BY | ์ ๋ ฌ |
๐ก ์์ฝํ์๋ฉด
SQL์ ๊ธฐ๋ณธ ํํ๋
“์ด๋์(FROM) → ์ด๋ค ์กฐ๊ฑด์ผ๋ก(WHERE) → ์ด๋ป๊ฒ ๋ฌถ๊ณ (GROUP BY) → ๋ฌด์์ ๋ณด์ฌ์ฃผ๊ณ (SELECT) → ์ด๋ค ์์๋ก(ORDER BY)”
๋ฐ์ดํฐ๋ฅผ ๋ณผ์ง๋ฅผ ์ ์ํ๋ ์ธ์ด์ ๋๋ค.
SELECT player_name
FROM player
WHERE team_id = 'K02'
AND position = 'GK';
WHERE team_id = 'K02' AND position = 'GK'
- ์๋ฏธ: ์กฐ๊ฑด์ ์ค์ ํด์ ๋ฐ์ดํฐ๋ฅผ ํํฐ๋งํฉ๋๋ค.
- team_id = 'K02' → team_id ์ปฌ๋ผ ๊ฐ์ด 'K02'์ธ ์ ์๋ง ์ ํ
- position = 'GK' → position ์ปฌ๋ผ ๊ฐ์ด 'GK'์ธ ์ ์๋ง ์ ํ
- AND → ๋ ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑํด์ผ ํจ
- ๊ฒฐ๊ณผ์ ์ผ๋ก 'K02'ํ์ ๊ณจํคํผ(GK) ์ ์๋ง ์กฐํ๋ฉ๋๋ค.
-- SQL_TEST_006
-- ์์ํ(ID: K02) ์ ์๋ค ์ด๋ฆ,
-- ํค์ ๋ชธ๋ฌด๊ฒ ๋ฆฌ์คํธ (๋จ์ cm ์ kg ์ฝ์
)
-- ํค์ ๋ชธ๋ฌด๊ฒ๊ฐ ์์ผ๋ฉด "0" ํ์
-- ํค ๋ด๋ฆผ์ฐจ์
SELECT
player_name AS ์ ์๋ช
,
player_name AS ์ ์๋ช player_name ์ปฌ๋ผ์ "์ ์๋ช " ์ผ๋ก ์ถ๋ ฅ
COALESCE(height::TEXT, '0') || 'cm' AS ํค,
COALESCE(weight::TEXT, '0') || 'kg' AS ๋ชธ๋ฌด๊ฒ
COALESCE(height::TEXT, '0')
height๊ฐ NULL์ด๋ฉด '0'์ผ๋ก ๋์ฒด
::TEXT
์ ์๋ฅผ ๋ฌธ์์ด๋ก ๋ณํ (175 → "175")
AS ํค
๊ฒฐ๊ณผ ์ปฌ๋ผ ์ด๋ฆ ์ง์
FROM player
player ํ ์ด๋ธ์์ ๊ฐ์ ธ์ด
WHERE team_id = 'K02'
์์ํ๋ง ํํฐ๋ง
ORDER BY height DESC NULLS LAST;
ํค ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
NULLS LAST
NULL ๊ฐ์ ๋งจ ์๋๋ก
-- SQL_TEST_007
-- ์์ํ(ID: K02) ์ ์๋ค ์ด๋ฆ,
-- ํค์ ๋ชธ๋ฌด๊ฒ ๋ฆฌ์คํธ (๋จ์ cm ์ kg ์ฝ์
)
-- ํค์ ๋ชธ๋ฌด๊ฒ๊ฐ ์์ผ๋ฉด "0" ํ์
-- BMI์ง์
-- ํค ๋ด๋ฆผ์ฐจ์
SELECT
player_name AS ์ ์๋ช
,
player_name AS ์ ์๋ช player_name ์ปฌ๋ผ์ "์ ์๋ช " ์ผ๋ก ์ถ๋ ฅ
COALESCE(height::TEXT, '0') || 'cm' AS ํค,
COALESCE(weight::TEXT, '0') || 'kg' AS ๋ชธ๋ฌด๊ฒ,
COALESCE(height::TEXT, '0')
height๊ฐ NULL์ด๋ฉด '0'์ผ๋ก ๋์ฒด
::TEXT
์ ์๋ฅผ ๋ฌธ์์ด๋ก ๋ณํ (175 → "175")
AS ํค
๊ฒฐ๊ณผ ์ปฌ๋ผ ์ด๋ฆ ์ง์
CASE
CASE ... END
์กฐ๊ฑด๋ฌธ (if-else)
WHEN height IS NULL OR weight IS NULL OR height = 0 THEN '0.00'
ํค๋ ๋ชธ๋ฌด๊ฒ ์์ผ๋ฉด 0.00
ELSE ROUND((weight / ((height::NUMERIC/100)^2))::NUMERIC, 2)::TEXT
height::NUMERIC
์ ์๋ฅผ ์ค์ํ์ผ๋ก ๋ณํ (๊ณ์ฐ ์ํด)
(height/100)^2
์ ๊ณฑ ๊ณ์ฐ → 1.75^2
weight / (...)
BMI = kg / (m²)
ROUND(..., 2)
์์์ 2์๋ฆฌ ๋ฐ์ฌ๋ฆผ
::TEXT
์ซ์๋ฅผ ๋ฌธ์์ด๋ก ๋ณํ (์ถ๋ ฅ์ฉ)
AS BMI
์ปฌ๋ผ ์ด๋ฆ
END AS BMI
FROM player
WHERE team_id = 'K02'
ORDER BY height DESC NULLS LAST;
--SQL_TEST_008
-- ์์ํ(ID: K02) ๊ณผ ๋์ ํ(ID: K10)์ ์๋ค ์ค
-- ํฌ์ง์
์ด GK ์ธ ์ ์
-- ํ๋ช
, ์ฌ๋๋ช
์ค๋ฆ์ฐจ์
SELECT
t.team_name AS ํ๋ช
,
p.player_name AS ์ ์๋ช
FROM player p
player ํ ์ด๋ธ์ p๋ผ๋ ๋ณ์นญ์ผ๋ก
JOIN team t ON p.team_id = t.team_id
JOIN team t
team ํ ์ด๋ธ์ t๋ผ๋ ๋ณ์นญ์ผ๋ก
ON p.team_id = t.team_id
๋ ํ ์ด๋ธ์ team_id๋ก ์ฐ๊ฒฐ
WHERE p.team_id IN ('K02', 'K10')
๋ ํ ๋ชจ๋ ํฌํจ
AND p.position = 'GK'
ํฌ์ง์ ์ด ๊ณจํคํผ
ORDER BY t.team_name, p.player_name;
ํ๋ช → ์ ์๋ช ์์ผ๋ก ์ ๋ ฌ
-- SQL_TEST_009
-- ์์ํ(ID: K02) ๊ณผ ๋์ ํ(ID: K10)์ ์๋ค ์ค ์ด
-- ํค๊ฐ 180 ์ด์ 183 ์ดํ์ธ ์ ์๋ค
-- ํค, ํ๋ช
, ์ฌ๋๋ช
์ค๋ฆ์ฐจ์
SELECT
p.height AS ํค,
t.team_name AS ํ๋ช
,
p.player_name AS ์ ์๋ช
FROM player p
JOIN team t ON p.team_id = t.team_id
WHERE p.team_id IN ('K02', 'K10')
AND p.height BETWEEN 180 AND 183
180 ์ด์ 183 ์ดํ
ORDER BY p.height, t.team_name, p.player_name;
3๋จ๊ณ ์ ๋ ฌ (ํค → ํ → ์ด๋ฆ)
-- SOCCER_SQL_010
-- ๋ชจ๋ ์ ์๋ค ์ค
-- ํฌ์ง์
์ ๋ฐฐ์ ๋ฐ์ง ๋ชปํ ์ ์๋ค์ ํ๊ณผ ์ด๋ฆ
-- ํ๋ช
, ์ฌ๋๋ช
์ค๋ฆ์ฐจ์
AS-์๋ฆฌ์์ค?
SELECT
t.team_name AS ํ๋ช
,
p.player_name AS ์ ์๋ช
FROM player p
JOIN team t ON p.team_id = t.team_id
WHERE p.position IS NULL
IS NULL
๊ฐ์ด ์๋ ๊ฒ (๋น์ด ์์)
ํฌ์ง์ ๋ฐฐ์ ์ ๋ ์ ์
ORDER BY t.team_name, p.player_name;
- ORDER BY t.team_name, p.player_name = ORDER BY t.team_name ASC, p.player_name ASC
- ์๋ต ์ด์ : SQL ๊ธฐ๋ณธ๊ฐ์ด ASC๋ผ์ ๊ฐ๊ฒฐํ๊ฒ ์์ฑ
- ์ถ์ฒ: ๊ฐ๊ฒฐํจ ์ํด ์๋ต OK, ํ์ง๋ง ํ ๊ท์น ๋ฐ๋ผ ASC ๋ช ์ ๊ฐ๋ฅ
์ฃผ์ SQL ํค์๋ ์ ๋ฆฌํ
| ํค์๋ | ์๋ฏธ | ์์ |
| SELECT | ๋ฐ์ดํฐ ์กฐํ | SELECT name |
| FROM | ํ ์ด๋ธ ์ง์ | FROM player |
| WHERE | ์กฐ๊ฑด ํํฐ | WHERE team_id = 'K02' |
| JOIN ... ON | ํ ์ด๋ธ ์ฐ๊ฒฐ | JOIN team ON ... |
| AND / OR | ์กฐ๊ฑด ๊ฒฐํฉ | AND height > 170 |
| IN (...) | ์ฌ๋ฌ ๊ฐ ํฌํจ | IN ('K02', 'K10') |
| BETWEEN a AND b | ๋ฒ์ ์กฐ๊ฑด | BETWEEN 170 AND 180 |
| LIKE '๊ณ %' | ํจํด ๋งค์นญ | ์ฑ์ด ๊ณ ์จ |
| IS NULL | ๊ฐ์ด ์์ | position IS NULL |
| COALESCE(a, b) | NULL์ด๋ฉด b ๋ฐํ | COALESCE(height, 0) |
| ` | ` | |
| ::TEXT | ํ๋ณํ (์ซ์→๋ฌธ์) | 175::TEXT |
| CASE ... END | ์กฐ๊ฑด๋ฌธ | CASE WHEN ... THEN ... |
| ROUND(x, 2) | ์์์ 2์๋ฆฌ | ROUND(22.222, 2) |
| ORDER BY | ์ ๋ ฌ | ORDER BY height DESC |
| DESC | ๋ด๋ฆผ์ฐจ์ | ํฐ → ์๊ฒ |
| ASC | ์ค๋ฆ์ฐจ์ | ์ → ํฌ๊ฒ (๊ธฐ๋ณธ) |
| NULLS LAST | NULL์ ๋งจ ๋ค |
'Project ESG+AI > [์ผ์ KPMG]ESG ๋ฐ์ดํฐ ํ์ฉ ํ์คํ ๊ฐ๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| 17์ผ์ฐจ. (0) | 2025.10.31 |
|---|---|
| 16์ผ์ฐจ. (1) | 2025.10.30 |
| 14์ผ์ฐจ. ๋์ปค, pgAdmin ์ค์นํ๊ธฐ(์ด๊ฒ ์ฐ) (0) | 2025.10.28 |
| 13์ผ. ๋์ปค ์ค์นํ๊ธฐ (0) | 2025.10.27 |
| 12์ผ์ฐจ. (1) | 2025.10.24 |