๐ SQL WHERE โ ์กฐ๊ฑด์ผ๋ก ๋ฐ์ดํฐ ๊ฑธ๋ฌ๋ด๊ธฐ
๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋ ์ํ๋ ํ๋ง ๊ณจ๋ผ๋ด๊ณ ์ถ์ ๋๊ฐ ์์ฃ .
WHERE ์ ๋ง ์๋ฉด ์ด๋ฐ ํํฐ๋ง์ ๊ฐ๋จํ๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค ๐
๐๏ธ ์์ ํ
์ด๋ธ โ orders
| id |
customer |
product |
price |
quantity |
| 1 |
kim |
์๋ฉ๋ฆฌ์นด๋
ธ |
4500 |
2 |
| 2 |
lee |
๋ผ๋ผ |
5000 |
1 |
| 3 |
kim |
๋ผ๋ผ |
5000 |
3 |
| 4 |
park |
์๋ฉ๋ฆฌ์นด๋
ธ |
4500 |
1 |
| 5 |
lee |
์๋ฉ๋ฆฌ์นด๋
ธ |
4500 |
2 |
CREATE DATABASE IF NOT EXISTS practice;
USE practice;
DROP TABLE IF EXISTS orders;
CREATE TABLE orders (
id INT,
customer VARCHAR(10),
product VARCHAR(20),
price INT,
quantity INT
);
INSERT INTO orders VALUES (1, 'kim', '์๋ฉ๋ฆฌ์นด๋
ธ', 4500, 2);
INSERT INTO orders VALUES (2, 'lee', '๋ผ๋ผ', 5000, 1);
INSERT INTO orders VALUES (3, 'kim', '๋ผ๋ผ', 5000, 3);
INSERT INTO orders VALUES (4, 'park', '์๋ฉ๋ฆฌ์นด๋
ธ', 4500, 1);
INSERT INTO orders VALUES (5, 'lee', '์๋ฉ๋ฆฌ์นด๋
ธ', 4500, 2);
โผ๏ธ ์ ํ
์ด๋ธ์ ๊ธฐ์ค์ผ๋ก ์๋ ๋ฌธ๋ฒ ์ฌ์ฉ๋ฒ์ ์ค๋ช
ํ ๊ฒ์.
๐ง WHERE๋?
WHERE๋ SELECT ๊ฒฐ๊ณผ์์ ์กฐ๊ฑด์ ๋ง๋ ํ๋ง ํํฐ๋งํ๋ ์ ์
๋๋ค.
FROM ๋ค์ ์์นํ๋ฉฐ, ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํ๋ง ๋ฐํํฉ๋๋ค.
๐ ๊ธฐ๋ณธ ๋ฌธ๋ฒ
SELECT ์ปฌ๋ผ๋ช
FROM ํ
์ด๋ธ๋ช
WHERE ์กฐ๊ฑด;
๐น ํน์ ๊ฐ๊ณผ ๊ฐ์ ํ ์กฐํ
SELECT * FROM orders
WHERE customer = 'kim';
๐ฅ ๊ฒฐ๊ณผ
| id |
customer |
product |
price |
quantity |
| 1 |
kim |
์๋ฉ๋ฆฌ์นด๋
ธ |
4500 |
2 |
| 3 |
kim |
๋ผ๋ผ |
5000 |
3 |
๐น ๋น๊ต ์ฐ์ฐ์ ์ฌ์ฉ
SELECT * FROM orders
WHERE price >= 5000;
๐ฅ ๊ฒฐ๊ณผ
| id |
customer |
product |
price |
quantity |
| 2 |
lee |
๋ผ๋ผ |
5000 |
1 |
| 3 |
kim |
๋ผ๋ผ |
5000 |
3 |
โน๏ธ ๋น๊ต ์ฐ์ฐ์ ์ข
๋ฅ
| ์ฐ์ฐ์ | ์๋ฏธ |
= | ๊ฐ๋ค |
!= / <> | ๊ฐ์ง ์๋ค |
> | ํฌ๋ค |
< | ์๋ค |
>= | ํฌ๊ฑฐ๋ ๊ฐ๋ค |
<= | ์๊ฑฐ๋ ๊ฐ๋ค |
๐น AND โ ๋ ์กฐ๊ฑด ๋ชจ๋ ๋ง์กฑ
SELECT * FROM orders
WHERE customer = 'kim' AND price = 5000;
๐ฅ ๊ฒฐ๊ณผ
| id |
customer |
product |
price |
quantity |
| 3 |
kim |
๋ผ๋ผ |
5000 |
3 |
๐น OR โ ๋ ์กฐ๊ฑด ์ค ํ๋ ์ด์ ๋ง์กฑ
SELECT * FROM orders
WHERE customer = 'kim' OR customer = 'park';
๐ฅ ๊ฒฐ๊ณผ
| id |
customer |
product |
price |
quantity |
| 1 |
kim |
์๋ฉ๋ฆฌ์นด๋
ธ |
4500 |
2 |
| 3 |
kim |
๋ผ๋ผ |
5000 |
3 |
| 4 |
park |
์๋ฉ๋ฆฌ์นด๋
ธ |
4500 |
1 |
๐น NOT โ ์กฐ๊ฑด์ ๋ฐ์
SELECT * FROM orders
WHERE NOT customer = 'kim';
๐ฅ ๊ฒฐ๊ณผ
| id |
customer |
product |
price |
quantity |
| 2 |
lee |
๋ผ๋ผ |
5000 |
1 |
| 4 |
park |
์๋ฉ๋ฆฌ์นด๋
ธ |
4500 |
1 |
| 5 |
lee |
์๋ฉ๋ฆฌ์นด๋
ธ |
4500 |
2 |
๐๏ธ AND, OR, NOT ํ๋์ ๋น๊ต
| ์ฐ์ฐ์ |
์ค๋ช
|
์์ |
AND |
๋ ์กฐ๊ฑด ๋ชจ๋ ๋ง์กฑ |
price >= 4500 AND quantity >= 2 |
OR |
๋ ์ค ํ๋ ์ด์ ๋ง์กฑ |
customer = 'kim' OR customer = 'lee' |
NOT |
์กฐ๊ฑด์ ๋ฐ์ |
NOT customer = 'kim' |
โจ ์ฐ์ฐ์ ์ฐ์ ์์
AND๋ OR๋ณด๋ค ๋จผ์ ์ฒ๋ฆฌ๋ฉ๋๋ค.
์๋ํ ๋๋ก ๋์ํ๊ฒ ํ๋ ค๋ฉด ๊ดํธ๋ก ๋ฌถ์ด์ฃผ๋ ๊ฒ์ด ์ข์ต๋๋ค.
โ ์๋: kim์ด๊ฑฐ๋ (park์ด๊ณ price๊ฐ 5000์ธ) ๊ฒฝ์ฐ
SELECT * FROM orders
WHERE customer = 'kim' OR customer = 'park' AND price = 5000;
๐ฅ ๊ฒฐ๊ณผ
| id |
customer |
product |
price |
quantity |
| 1 |
kim |
์๋ฉ๋ฆฌ์นด๋
ธ |
4500 |
2 |
| 3 |
kim |
๋ผ๋ผ |
5000 |
3 |
โ ๏ธ AND๊ฐ ๋จผ์ ์ฒ๋ฆฌ๋์ด customer = 'park' AND price = 5000์ด ๋จผ์ ๊ณ์ฐ๋ฉ๋๋ค.
์๋์ ๋ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ ๋์ฌ ์ ์์ต๋๋ค.
โ
๊ดํธ๋ก ๋ช
ํํ๊ฒ ์ง์
SELECT * FROM orders
WHERE (customer = 'kim' OR customer = 'park') AND price = 5000;
๐ฅ ๊ฒฐ๊ณผ
| id |
customer |
product |
price |
quantity |
| 3 |
kim |
๋ผ๋ผ |
5000 |
3 |
๐ซ WHERE์์ NULL ๋ค๋ฃจ๊ธฐ
NULL์ =๋ก ๋น๊ตํ ์ ์์ต๋๋ค.
๋ฐ๋์ IS NULL / IS NOT NULL์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
-- quantity๊ฐ NULL์ธ ํ ์กฐํ
SELECT * FROM orders
WHERE quantity IS NULL;
-- quantity๊ฐ NULL์ด ์๋ ํ ์กฐํ
SELECT * FROM orders
WHERE quantity IS NOT NULL;
๐ก NULL ์ฒ๋ฆฌ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๐ SQL์์ NULL ๋ค๋ฃจ๊ธฐ ๋ฅผ ์ฐธ๊ณ ํ์ธ์!
โ ๋ง๋ฌด๋ฆฌ
| ๋ฌธ๋ฒ |
์ค๋ช
|
WHERE ์กฐ๊ฑด |
์กฐ๊ฑด์ ๋ง๋ ํ๋ง ์กฐํ |
AND |
๋ ์กฐ๊ฑด ๋ชจ๋ ๋ง์กฑ |
OR |
๋ ์ค ํ๋ ์ด์ ๋ง์กฑ |
NOT |
์กฐ๊ฑด ๋ฐ์ |
๐ ์ฐธ๊ณ ์๋ฃ