๐ PostgreSQL ๊ธฐ๋ณธ โ ข - SELECT๋ก ์์ํ๋ ๋ฐ์ดํฐ ํํ
๐ PostgreSQL ๊ธฐ๋ณธ โ
ข - SELECT๋ก ์์ํ๋ ๋ฐ์ดํฐ ํํ
๐
ใ์ค์ฉ SQLใ
์ ์ฝ๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค.
๊ธฐ์ด SELECT
๊ตฌ๋ฌธ
1
SELECT * FROM teachers;
- ์ ๊ตฌ๋ฌธ์
teachers
ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋SELECT
๊ตฌ๋ฌธ์ด๋ค. *
๋ ์์ผ๋ ์นด๋๋ผ๊ณ ๋ถ๋ฆฐ๋ค.- ์์ผ๋ ์นด๋๋ ์ด๋ค ๊ฐ์ ๋์ฒดํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ฌธ์๋ก, ํน์ ํ ๋ฌด์ธ๊ฐ๊ฐ ์๋๋ผ, ๊ทธ ๊ฐ์ด ๋ ์ ์๋ ๋ชจ๋ ๊ฒ์ ๋ํํ๋ค.
FROM
ํค์๋๋ ์ฟผ๋ฆฌ๊ฐ ํน์ ํ ์ด๋ธ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋๋ก ์ง์ํ๋ค.
id | first_name | last_name | school | hire_date | salary |
---|---|---|---|---|---|
1 | Janet | Smith | F.D. Roosevelt HS | 2011-10-30 | 36,200 |
2 | Lee | Reynolds | F.D. Roosevelt HS | 1993-05-22 | 65,000 |
3 | Samuel | Cole | Myers Middle School | 2005-08-01 | 43,500 |
4 | Samantha | Bush | Myers Middle School | 2011-10-30 | 36,200 |
5 | Betty | Diaz | Myers Middle School | 2005-08-30 | 43,500 |
6 | Kathleen | Roush | F.D. Roosevelt HS | 2010-10-22 | 38,500 |
1
TABLE teachers;
- ์ ๋ช ๋ น์ด๋ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค.
์ด์ ํ์ ์งํฉ ์ฟผ๋ฆฌํ๊ธฐ
1
SELECT last_name, first_name, salary FROM teachers;
- ์ ๊ตฌ๋ฌธ๊ณผ ๊ฐ์ด ์ฟผ๋ฆฌ๊ฐ ๊ฒ์ํ ์ด์ ์ ํํ๋ฉด ๊ณผ๋ํ ์ ๋ณด๋ฅผ ํค์ณ ๋ณด์ง ์์๋ ๋๋ฏ๋ก ๋งค์ฐ ์ค์ฉ์ ์ด๋ค.
- ํนํ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ผ๋ฉด ๊ทธ ์ค์ฉ์ฑ์ ๋์์ง๋ค.
- ์ ๊ตฌ๋ฌธ์ฒ๋ผ ์ด์ ์ํ๋ ์์๋๋ก ํธ์ถํ ์ ์๋ค.
last_name | first_name | salary |
---|---|---|
Smith | Janet | 36,200 |
Reynolds | Lee | 65,000 |
Cole | Samuel | 43,500 |
Bush | Samantha | 36,200 |
Diaz | Betty | 43,500 |
Roush | Kathleen | 38,500 |
- ์ผ๋ฐ์ ์ผ๋ก ๋ถ์์ ์์ํ ๋๋ ๋ฐ์ดํฐ์ ์ ๋ฌด์ ์ํ๋ ํํ์ ๋ฐ์ดํฐ์ธ์ง ๋จผ์ ํ์ธํ๋ ๊ฒ์ด ์ฐ์ ์ด๋ค.
- ๋ ์ง๋ ์ฐ๋-์-์ผ๋ก ํํ์ด ๋์๋์ง, ๋ชจ๋ ํ์ ๊ฐ์ด ๋ค์ด ์๋์ง ๋ฑ์ด๋ค.
- ์ด๋ฌํ ์์๋ค์ ๋ชจ๋ ์ ์ฌ์ ์ธ ์ํ ์์์ด๋ค.
- ๋ฐ์ดํฐ๊ฐ ์ ์ค๋์์ ์๋ ์๊ณ , ์์ ๊ณผ์ ์ด๋๊ฐ ๋ฐ์ดํฐ ๊ด๋ฆฌ๊ฐ ์๋ชป ๋์์ ์๋ ์๋ค.
ORDER BY
๋ก ๋ฐ์ดํฐ ์ ๋ ฌํ๊ธฐ
1
2
3
4
5
6
7
8
9
-- ์ด ์ด๋ฆ์ผ๋ก ์ ๋ ฌ
SELECT first_name, last_name, salary
FROM teachers
ORDER BY salary DESC;
-- ์ด ์์น์ ๋ํ ์ซ์๊ฐ์ผ๋ก ์ ๋ ฌ
SELECT first_name, last_name, salary
FROM teachers
ORDER BY 3 DESC;
SQL
์์๋ORDER BY
ํค์๋์ ์ ๋ ฌ์ด ํ์ํ ์ด, ์ด๋ค์ด ๋ด๊ธด ์ ์ ํตํด ๊ฒฐ๊ณผ์ ์์๋ฅผ ์ ๋ ฌํ ์ ์๋ค.- ๋ฐ์ดํฐ๋ ๋ค์ฃฝ๋ฐ์ฃฝ ์์ฌ ์์ ๋๋ณด๋ค ์์๋๋ก ์ ๋ ฌ๋์ด ์์ ๋ ์ดํดํ๊ธฐ ์ฝ๊ณ , ํจํด์ ๋์ฑ ์์กฐ๋กญ๊ฒ ๋๋ฌ๋ผ ์ ์๋ค.
DESC
๋ ๋ด๋ฆผ์ฐจ์์ ์๋ฏธํ๋ฉฐ,ASC
ํค์๋๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๊ณต๋ฐฑ์ผ๋ก ๋๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋๋ค.ORDER BY
์ ์๋ ์ด ์ด๋ฆ ๋์ ์ซ์๋ฅผ ๋ฃ์ ์๋ ์๋ค.- ์ซ์์๋ ์ด์ด ๋ฐํ๋๋ ์์น์ ๋ํ ๊ฐ์ด ๋ค์ด๊ฐ๋ค.
first_name | last_name | salary |
---|---|---|
Lee | Reynolds | 65,000 |
Samuel | Cole | 43,500 |
Betty | Diaz | 43,500 |
Kathleen | Roush | 38,500 |
Janet | Smith | 36,200 |
Samantha | Bush | 36,200 |
1
2
3
SELECT last_name, school, hire_date
FROM teachers
ORDER BY school ASC, hire_date DESC;
- ์ ๊ตฌ๋ฌธ์ฒ๋ผ ์ฌ๋ฌ ๊ฐ์ ์ด์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ ์๋ ์๋ค.
- ๊ทธ๋ฌ๋ ํจ๊ณผ๊ฐ ๊ฑฐ์ ๋์ ๋์ง ์์ ๊ฒ์ด๋ค.
- ๋ฐ์ดํฐ ์์ฝ์ ๊ฒฐ๊ณผ๊ฐ ํน์ ์ง๋ฌธ์ ๋๋ตํ๋ ๊ฒ์ ์ด์ ์ ๋ง์ถ์์ ๋ ๊ฐ์ฅ ์ฝ๊ธฐ ๋๋ฌธ์, ๋ ๋์ ๋ฐฉ๋ฒ์ ๊ฐ์ฅ ์ค์ํ ์ด๋ค๋ก ์ฟผ๋ฆฌ๋ฅผ ์ ํํ๊ณ ๊ถ๊ธํ ๊ฒ์ด ์๊ธธ ๋๋ง๋ค ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ๊ฒ์ด๋ค.
- ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ๋ค.
last_name | school | hire_date |
---|---|---|
Smith | F.D. Roosevelt HS | 2011-10-30 |
Roush | F.D. Roosevelt HS | 2010-10-22 |
Reynolds | F.D. Roosevelt HS | 1993-05-22 |
Bush | Myers Middle School | 2011-10-30 |
Diaz | Myers Middle School | 2005-08-30 |
Cole | Myers Middle School | 2005-08-01 |
DISTINCT
๋ก ๊ณ ์ ๊ฐ ์ฐพ๊ธฐ
1
2
3
SELECT DISTINCT school
FROM teachers
ORDER BY school;
- ํ ์ด๋ธ์ ๋ค๋ฃฐ ๋ ์ด ์์ ํ์ด ์ค๋ณต ๊ฐ์ ๊ฐ๊ณ ์๋ ๊ฒฝ์ฐ๊ฐ ํํ๋ค.
- ์๋ฅผ ๋ค์ด ๊ฐ ํ๊ต ๋ณ๋ก ์ฑ์ฉํ๋ ์ ์๋์ ์๊ฐ ๋ค์์ด๊ธฐ ๋๋ฌธ์
teachers
ํ ์ด๋ธ์school
์ด์๋ ๊ฐ์ ํ๊ต ์ด๋ฆ์ด ์ฌ๋ฌ ๋ฒ ์ ์ฅ๋๋ค. - ์ฟผ๋ฆฌ์
DISTINCT
ํค์๋๋ฅผ ๋ฃ์ผ๋ฉด ์ค๋ณต์ ์ ๊ฑฐํ๊ณ ๊ฐ์ ํ๋์ฉ ๋ณด์ฌ์ค ์ ์๋ค.
school |
---|
F.D. Roosevelt HS |
Myers Middle School |
- ์ด๋ ๋ฐ์ดํฐ ํ์ง์ ํ์ ํ๋ ๋ฐ ๋์์ด ๋๋ ์ฒซ ๋จ์ถ์ด๋ค.
- ๊ฐ๋ น ์ด๋ค ํ๊ต์ ์ด๋ฆ์ด ์ฌ๋ฌ๊ฐ์ง ํ์์ผ๋ก ๋ํ๋๋ ๊ฒฝ์ฐ์ ์ฒ ์ ๋ณํ์ ์ฝ๊ฒ ์ฐพ์๋ด๊ณ ์์ ํ ์ ์๋ค.
DISTINCT
๋ ํนํ ๋ ์ง๋ ์ซ์๋ฅผ ๋ค๋ฃฐ ๋ ์ผ๊ด์ฑ์ด ๋จ์ด์ง๊ฑฐ๋ ๊นจ์ง ํ์์ ์ฐพ๋๋ฐ ์ ์ฉํ๋ค.- ๋ ๋ค๋ฅธ ์์๋ก ๋ ์ง๊ฐ
text
๋ฐ์ดํฐ ํ์ ์ ํํ๋ก ๊ธฐ์ ๋ ๋ฐ์ดํฐ์ ์ ๋ฐ์ ์๋ ์๋๋ฐ, ์ด๋ ๊ผญ ํผํด์ผ ํ ํ์์ด๋ค. - ๊ฐ๋ น ๋ค์๊ณผ ๊ฐ์ ๊ธฐํ์ ์ธ ๋ ์ง ํํ๋ฅผ ์ ๋ฐํ๊ฒ ๋๋ค.
date |
---|
5/30/2023 |
6//2023 |
6/1/2023 |
6/2/2023 |
1
2
3
SELECT DISTINCT school, salary
FROM teachers
ORDER BY school, salary;
DISTINCT
ํค์๋๋ ์ฌ๋ฌ ์ด์์๋ ๋์์ ์๋ํ๋ค.- ์ด์ ์ถ๊ฐํ๊ฒ ๋ ๊ฒฝ์ฐ ์ฟผ๋ฆฌ๊ฐ ๊ฐ๊ฐ์ ๋ํ ๊ณ ์ ํ ๊ฐ์ ์์ ๊ฒฐ๊ณผ๋ก ๋ณด์ฌ์ค๋ค.
school | salary |
---|---|
F.D. Roosevelt HS | 36,200 |
F.D. Roosevelt HS | 38,500 |
F.D. Roosevelt HS | 65,000 |
Myers Middle School | 36,200 |
Myers Middle School | 43,500 |
- ์ด ๊ธฐ์ ์ โํ
์ด๋ธ ์์
x
๋ง๋ค ๋์ฌ ์ ์๋y
๊ฐ์ผ๋ก๋ ๋ญ๊ฐ ์์๊น?โ๋ผ๋ ์ง๋ฌธ์ ๋ํ ๋ต์ ์ ๊ณตํ๋ค.
WHERE
๋ก ํ ํํฐ๋งํ๊ธฐ
1
2
3
SELECT last_name, school, hire_date
FROM teachers
WHERE school = 'Myers Middle School';
- ํน์ ๊ธฐ์ค์ ๋ถํฉํ๋ ์ด๋ค์ ๋ด๊ธด ํ๋ง ๋ณด์ฌ์ฃผ๋ ์ฟผ๋ฆฌ๊ฐ ํ์ํ ๋๊ฐ ์๋ค.
- ์ด๋ฐ ์์
์ ์ํํ๊ธฐ ์ํด
WHERE
ํค์๋๋ฅผ ์ฌ์ฉํ๋ค. WHERE
ํค์๋๋ ์ํ, ๋น๊ต, ๋ ผ๋ฆฌ ์ฐ์ฐ์ ์ํํ๋ ์ฐ์ฐ์๋ฅผ ์ด์ฉํด ๋ง๋ค์ด ๋ธ ์กฐ๊ฑด์ ๋ฐ๋ผ ํน์ ๊ฐ, ๊ฐ์ ๋ฒ์๋ฅผ ํฌํจํ๋ ํ์ ์ฐพ๋๋ก ํ๋ค.- ๋ํ ๊ทธ ๊ธฐ์ค์ ๋ฐํ์ผ๋ก ํ์ ์ ์ธํ ์๋ ์๋ค.
last_name | school | hire_date |
---|---|---|
Cole | Myers Middle School | 2005-08-01 |
Bush | Myers Middle School | 2011-10-30 |
Diaz | Myers Middle School | 2005-08-30 |
- ๋น๊ต ์ฐ์ฐ์๋
=
,!=
(<>
),>
,<
,<=
,>=
,BETWEEN
,IN
,LIKE
,ILIKE
,NOT
๋ฑ์ด ์๋ค. - ์ฌ์ฉ ์์๋ ๋ค์๊ณผ ๊ฐ๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
-- Janet ์ด๋ฆ์ ๊ฐ์ง ์ ์๋ ์ฐพ๊ธฐ
SELECT first_name, last_name, school
FROM teachers
WHERE first_name = 'Janet';
-- F.D. Roosevelt HS๋ฅผ ์ ์ธํ ๋ชจ๋ ํ๊ต ์ด๋ฆ ์ถ๋ ฅํ๊ธฐ
SELECT school
FROM teachers
WHERE school <> 'F.D. Roosevelt HS';
-- 2000๋
1์ 1์ผ ์ด์ ์ ๊ณ ์ฉ๋ ์ ์๋ ์ถ๋ ฅํ๊ธฐ
SELECT first_name, last_name, hire_date
FROM teachers
WHERE hire_date < '2000-01-01';
-- ์ฐ๋ด์ด $43,500 ์ด์์ธ ์ ์๋ ์ฐพ๊ธฐ
SELECT first_name, last_name, salary
FROM teachers
WHERE salary >= 43500;
-- ์ฐ๋ด์ด $40,000~$65,000์ธ ์ ์๋ ์ฐพ๊ธฐ
SELECT first_name, last_name, school, salary
FROM teachers
WHERE salary BETWEEN 40000 AND 65000;
SELECT first_name, last_name, school, salary
FROM teachers
WHERE salary >= 40000 AND salary <= 65000;
BETWEEN
์ ์ฌ์ฉํ ๋๋ ์ด์ค ๊ณ์ฐ์ ์ฃผ์ํด์ผ ํ๋ค.- ์๋ฅผ ๋ค์ด
BETWEEN 10 AND 20
์ ํ ์ดํBETWEEN 20 AND 30
์ ์คํํ๋ฉด ๋ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ๋ชจ๋์์ 20์ ๊ฐ์ผ๋ก ๊ฐ๋ ํ์ด ๋ํ๋๋ค. BETWEEN
๋ณด๋ค ๋ช ์์ ์ธ ์ด๊ณผ, ๋ฏธ๋ง ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ด์ค ๊ณ์ฐ์ ๋ฐฉ์งํ ์ ์๋ค.
WHERE
์ LIKE
์ ILIKE
์ฌ์ฉํ๊ธฐ
- ๋ ์ฐ์ฐ์๋ ์ง์ ๋ ํจํด์ ๋ง๋ ๋ค์ํ ๋ฌธ์๋ฅผ ๊ฒ์ํ๊ธฐ ๋๋ฌธ์, ์ ํํ ์ฒ ์๋ฅผ ๋ชจ๋ฅด๊ฑฐ๋ ์๋ชป ์์ฑํ ๋จ์ด๋ฅผ ์ฐพ์ ๋ ํธ๋ฆฌํ๋ค.
- ๊ฐ๋ น ๋ค์ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ผ์น์ํฌ ํจํด์ ์ง์ ํ๋ค.
- ๋ ๊ธฐํธ๋ ํผํฉํด์ ์ฌ์ฉํ ์ ์๋ค.
- ํผ์ผํธ ๊ธฐํธ(
%
): ๋ฌธ์ ํ ๊ฐ ๋๋ ์ฌ๋ฌ ๊ฐ์ ๋งค์นญํ๋ ์์ผ๋ ์นด๋ - ์ธ๋๋ฐ(
_
): ๋ฌธ์ ํ ๊ฐ์ ๋งค์นญํ๋ ์์ผ๋ ์นด๋
- ์๋ฅผ ๋ค์ด
baker
๋ผ๋ ๋จ์ด๋ฅผ ์ฐพ๊ณ ์ ํ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋งค์นญํ ์ ์๋ค.1 2 3 4
LIKE 'b%' LIKE '%ak%' LIKE '_aker' LIKE 'ba_er'
ANSI SQL
ํ์ค์ธLIKE
์ฐ์ฐ์๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๋ ๋ฐ๋ฉด,PostgreSQL
์์๋ง ์ ์ฉ๋๋ ์ฐ์ฐ์์ธILIKE
์ฐ์ฐ์๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๋๋ค.
1
2
3
4
5
6
7
SELECT first_name
FROM teachers
WHERE first_name LIKE 'sam%';
SELECT first_name
FROM teachers
WHERE first_name ILIKE 'sam%';
- ๊ฐ๋ น ์ฒซ ๋ฒ์งธ
WHERE
์ ์์๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๊ธฐ ๋๋ฌธ์ 0๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง๋ง, ๋ ๋ฒ์งธWHERE
์ ์์๋ ํ ์ด๋ธ์์Samuel
๊ณผSamantha
๋ผ๋ ๊ฒฐ๊ด๊ฐ์ ๋ณด์ฌ์ค๋ค. - ์ฌ๋์ ์ด๋ฆ์ด๋ ์ฅ์, ์ ํ ๋๋ ๊ณ ์ ๋ช
์ฌ๋ฅผ ๊ธฐ์
ํ ์์
์๊ฐ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ผ๊ด๋๊ฒ ์ ์ด ๋๊ธฐ๋ ์ฝ์ง ์๊ธฐ ๋๋ฌธ์
ILIKE
์ ์์ผ๋ ์นด๋๋ฅผ ํ์ฉํ๋ฉด ์ข๋ค. - ๋ค๋ง
LIKE
์ILIKE
๋ ํจํด์ ๊ฒ์ํ๋ฏ๋ก, ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ปค์ง ์๋ก ๊ฒ์ ์ฑ๋ฅ์ด ๋จ์ด์ง ์ ์๋ค. - ์ด ๋ฌธ์ ๋ ์ธ๋ฑ์ค๋ฅผ ํตํด ํด๊ฒฐํ ์ ์๋ค.
AND
์ OR
๋ก ์ฐ์ฐ์ ์กฐ๊ฑด ๊ฒฐํฉํ๊ธฐ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT *
FROM teachers
WHERE school = 'Myers Middle School'
AND salary < 40000;
SELECT *
FROM teachers
WHERE last_name = 'Cole'
OR last_name = 'Bush';
SELECT *
FROM teachers
WHERE school = 'F.D. Roosevelt HS'
AND (salary < 38000 OR salary > 40000);
- ๋ง์ฝ ํ ์ ์์ ๊ดํธ ์์ด
OR
์AND
๋ฅผ ๋ชจ๋ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋AND
์กฐ๊ฑด์ ๋จผ์ ํ๊ฐํ ํOR
์กฐ๊ฑด์ ํ๊ฐํ๋ค๋ ์ ์ ์ฃผ์ํด์ผ ํ๋ค.
ํ์ฉ
1
2
3
4
SELECT first_name, last_name, school, hire_date, salary
FROM teachers
WHERE school LIKE '%Roos%'
ORDER BY hire_date DESC;
WHERE
์ ๊ณผORDER BY
์ ๋ ฌ์ ํฌํจํSELECT
๋ฌธ์ด๋ค.- ์ ์ฝ๋๋
Roosevelt High School
์ ์ ์๋์ ๊ฐ์ฅ ์ต๊ทผ์ ๊ณ ์ฉ๋ ์์๋๋ก ๋ณด์ฌ์ค๋ค. - ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ๋ค.
first_name | last_name | school | hire_date | salary |
---|---|---|---|---|
Janet | Smith | F.D. Roosevelt HS | 2011-10-30 | 36,200 |
Kathleen | Roush | F.D. Roosevelt HS | 2010-10-22 | 38,500 |
Lee | Reynolds | F.D. Roosevelt HS | 1993-05-22 | 65,000 |
- ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ํตํด ํน์ ํ๊ต์ ์ ์๋ ๋ช ๋จ์ ๋ํ ์ฑ์ฉ ๊ธฐ๊ฐ๊ณผ ์ฐ๋ด ์์ค์ ์ฐ๊ด์ฑ์ ํ์ธํ ์ ์๋ค.
This post is licensed under CC BY 4.0 by the author.