๐ [SQL ๊ธฐ์ด] - SELECT, DISTINCT, WHERE, COUNT, ORDER BY
๐ก SQL SELECT ์ ๋ฆฌ
SELECT column1, column2 FROM table_name;
SELECT
โ ์กฐํํ ์ปฌ๋ผ ์ ํFROM
โ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ํ ์ด๋ธ ์ง์ ๋ค์์๋ถํฐ ์คํ ๋จ
โ
๋ชจ๋ ์ปฌ๋ผ ์กฐํ (*
์ฌ์ฉ)
SELECT * FROM employees;
employees ํ ์ด๋ธ์ ๋ชจ๋ ์ปฌ๋ผ์ ์กฐํ
์ค๋ฌด์์๋ ๋ถํ์ํ ๋ฐ์ดํฐ๊น์ง ๊ฐ์ ธ์์ ์ฑ๋ฅ ์ ํ ๊ฐ๋ฅ โ ๋ชจ๋ ์ด์ ํฌํจํ ํ ์ด๋ธ์ ์ ์ฒด ์ ๋ณด๊ฐ ์ ๋ง ํ์ํ ๋๋ง ์ฌ์ฉ
โ ์กฐ๊ฑด์ ์ถ๊ฐํ๋ WHERE ์
SELECT name, age FROM users WHERE age > 30;
SELECT * FROM film WHERE rating != 'R';
WHERE
โ ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ฐ์ดํฐ๋ง ์กฐํ์ฌ๊ธฐ์๋ ๋์ด๊ฐ 30 ์ด๊ณผ์ธ ์ ์ ๋ง ์ถ๋ ฅ
SELECT name, choice FROM table WHERE name = 'David';
- ๋ฌธ์์ด ๊ตฌ๋ณ์ ์ํด ์์ ๋ฐ์ดํ ์ฌ์ฉ
SELECT name, choice FROM table WHERE name = 'David' AND choice = 'red';
- AND์ ๊ฐ์ ๋ ผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ํจ๊ป ์ฌ์ฉ ๊ฐ๋ฅ
โ ์กฐ๊ฑด์ ๋ง๋ ํ์ ๊ฐ์ COUNT ์
SELECT COUNT(name) FROM table_name;
SELECT COUNT(*) FROM table_name; -- ์ ์ฒด ์ ์ธ๊ธฐ
SELECT COUNT(*) FROM film
WHERE rental_rate > 4 AND replacement_cost >= 19.99 /*WHERE์ ํจ๊ป ์ฌ์ฉ*/
AND rating = 'R';
ํน์ ์ฟผ๋ฆฌ ์กฐ๊ฑด์ ๋ง๋ ์ ๋ ฅ ํ์ ๊ฐ์๋ฅผ ๊ตฌํจ
ํน์ ์ด์ ์ง์ ํด์ ์ ์ฉ ํน์
COUNT(*)
๋ก ์ ์ฒด ์ ์ฉ ๊ฐ๋ฅ- ํ์ง๋ง ๋์ค์ ์ฟผ๋ฆฌ ํ์คํ ๋ฆฌ๋ฅผ ๋ณผ ๋ ์ด๋ค ๊ฒ์ ์ง๋ฌธํ๋ ค๊ณ ํ๋์ง ํ์ธํ๊ธฐ ์ฝ๊ฒ ํ๋ ค๋ฉด, ์ด ์ด๋ฆ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์
COUNT๋ ํน์ ๋์์ ์์ฉํ๋ ํจ์์ด๊ธฐ ๋๋ฌธ์ ๊ดํธ๊ฐ ๋ฐ๋์ ํ์
COUNT๋ ๋ค๋ฅธ ํจ์์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ ์ฉํจ (ex. DISTINCT)
ex. ํ ์ด๋ธ์ ๊ณ ์ ํ ์ด๋ฆ์ด ๋ช ๊ฐ์ธ๊ฐ?
๋จผ์ DISTINCT๋ก ๊ณ ์ ํ ์ด๋ฆ์ ๊ฐ์๋ฅผ ํ์ โ COUNT๋ก ํ์ ๊ฐ์ ์ธ๊ธฐ
๋ ๊ฐ์ง ํจ์๋ฅผ ์ฌ์ฉํ ๋๋ ๊ดํธ๋ก ๊ตฌ๋ถํด์ฃผ์ด์ผ ํจ(๊ดํธ๊ฐ ์์ผ๋ฉด DISTINCT๋ผ๋ ์ด์ ์ฐพ์ผ๋ ค๊ณ ํ ๊ฒ)
SELECT COUNT(DISTINCT name) FROM table_name; SELECT COUNT(DISTINCT (name)) FROM table_name;
โ ์ ๋ ฌ (ORDER BY)
SELECT name, age FROM users ORDER BY age DESC ํน์ ASC;
๋ฌธ์์ด ๊ธฐ๋ฐ ์ด์ ์ํ๋ฒณ ์, ์ซ์ ์ด์ ๋ฒํธ์์ด ๋จ
ORDER BY age DESC
โ ๋์ด๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์
ASC
(๊ธฐ๋ณธ๊ฐ)
SELECT first_name, last_name FROM customer
ORDER BY store_id DESC, first_name ASC;
์์ ๊ฐ์ด store_id๋ ๋ด๋ฆผ์ฐจ์, first_name์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ง์ ํ ์ ์๋ค
SELECT ๋ฌธ์์ ์์ฒญํ์ง ์์ ์ด(store_id)๋ก๋ ์ ๋ ฌ์ด ๊ฐ๋ฅํ๋ค
โ ์ค๋ณต ์ ๊ฑฐ (DISTINCT)
SELECT DISTINCT country FROM customers;
ํด๋น ํ ์ด๋ธ ๋๋ ํด๋น ์ด์ ๊ณ ์ ํ ๋ฐ์ดํฐ๋ ๋ช ๊ฐ์ธ๊ฐ?
- ex. film ๋ฐ์ดํฐ ๋ฒ ์ด์ค์์ ๋ช ๊ฐ์ง์ ์ถ์๋ ๋๊ฐ ์๋์ง ์๊ณ ์ถ์ ๋
DISTINCT
โ ์ค๋ณต๋ ๊ฐ ์ ๊ฑฐํ๊ณ ์ ๋ํฌํ ๊ฐ๋ง ์กฐํ์ค๋ณต๋์ง ์๋ ๊ฐ์ ์กฐํํ ์ด ๋ฐ๋ก ์์ ์ ์
SELECT DISTINCT (country) FROM customers;
์ฒ๋ผ ์ด๋ค ์ด์ ์ ์ฉ๋๋์ง ํ์คํ ํ๊ธฐ ์ํด ๊ดํธ๋ฅผ ์ถ๊ฐํ ์๋ ์์
โจ In English:
SELECT column FROM table
retrieves data from a database table.WHERE
filters rows based on conditions.ORDER BY
sorts the result set.DISTINCT
removes duplicate values.
๐ ์ค๋ ๋ฐฐ์ด ์ :
SQL ํค์๋๋ ๋๋ฌธ์๋ก ํ๊ธฐํ์ง๋ง ๊ตณ์ด ๋๋ฌธ์๋ก ์ฐ์ง ์์๋ ์คํ์ ๋๋ค. ํ์ง๋ง ์ปฌ๋ผ ์ด๋ฆ ๋ฑ๊ณผ ๊ตฌ๋ถํ๊ธฐ ์ํด ๋๋ฌธ์๋ก ํ๊ธฐํ๋ค.
SQL ์ฟผ๋ฆฌ ๋ค์ ๋ถ์ด๋ ์ธ๋ฏธ์ฝ๋ก ์ ์ญ์ ํด๋ ์คํ์ด ๋์ง๋ง, ๊ฐ๋ ์ฑ์ ์ํด ์ ์ด์ค๋ค.
SELECT *
๋ ํธํ์ง๋ง, ๋ถํ์ํ ๋ฐ์ดํฐ ์กฐํ๋ก ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋ค.WHERE
์ ์ ํ์ฉํ๋ฉด ํ์ํ ๋ฐ์ดํฐ๋ง ๋ฝ์ ์ ์์.SQL์ ๋จ์ํ์ง๋ง, ํจ์จ์ ์ธ ์ฟผ๋ฆฌ๋ฅผ ์ง๋ ๊ฒ ์ค์ํ๋ค.
SQL ๋ฅ์๋๋ฅผ ๊ฐ๋ ํ ๋๋ ์ ๋ฌด์ ๋ฌธ์ ๋ ์ ๋ฌด ์ํฉ์ ์ค์ ์ฟผ๋ฆฌ๋ก ์ ํํด์ ํต์ฐฐ์ด๋ ์ ๋ณด๋ฅผ ์ป๊ฑฐ๋ ํด๋น ๋ฌธ์ ์ ์ง์ ๋ต์ ์ ์ํ ์ ์๋์ง๋ก ํ์ ํ๋ค.
PostgreSQL Memo
- ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ฑํ๋ ํ ์ด๋ธ ๋ณด๊ธฐ: ๋ฐ์ดํฐ ๋ฒ ์ด์ค > Schemas > public > Tables
Comparison Operators
Operator | Description |
\= | equal |
\> | Grater than |
< | Less than |
\>= | Greater than or equal to |
<= | Less than or equal to |
<> or != | Not equal to |
Logical Operators
AND
OR
NOT: ์ด ์กฐ๊ฑด์ด ์ฐธ์ด ์๋ ๊ฒ
์ฐ์ต ๋ฌธ์
Business Situation 1: ๊ธฐ์กด ๊ณ ๊ฐ์๊ฒ ํ๋ณด ๋ฉ์ผ์ ๋ณด๋ด์ผ ํ๋ ์ํฉ
How: SELECT ๋ฌธ์ ์ฌ์ฉํด์ ๋ชจ๋ ๊ณ ๊ฐ์ ์ฑ๊ณผ ์ด๋ฆ, ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ๋ถ๋ฌ์จ๋ค.
๋ฐฉ๋ฒ:
pgadmin 4๋ก ์ปฌ๋ผ ํ์
SQL ์ฟผ๋ฆฌ ๋ฌธ ์์ฑ
SELECT first_name, last_name, email FROM customer;
- 1๋ฒ์
SELECT * from customer
๋ก ์ ์ฒด ํ ์ด๋ธ์ ๋ถ๋ฌ์์ ํ์ธํ๋ ๋ฐฉ๋ฒ๋ ์๋ค.
Business Situation 2: ํ ๊ณ ๊ฐ(Nancy Thomas)์ด ๋งค์ฅ์ ์ง๊ฐ์ ๋๊ณ ๊ฐ์, ์ด๋ฉ์ผ์ ํตํด ์๋ ค์ผ ํ๋ ์ํฉ.
How: email ์ด์์ WHERE๋ก Nancy Thomas์ ์ด๋ฆ์ ์ฐพ๋๋ค.
SELECT email FROM customer WHERE first_name = 'Nancy' AND last_name = 'Thomas';