Database/SQL ๊ธฐ์ดˆ

SQL ๊ธฐ์ดˆ - WHERE

UNarD 2026. 3. 20. 17:33

๐Ÿ” 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 ์กฐ๊ฑด ๋ฐ˜์ „

๐Ÿ“š ์ฐธ๊ณ ์ž๋ฃŒ

'Database > SQL ๊ธฐ์ดˆ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

SQL ๊ธฐ์ดˆ - CASE  (0) 2026.03.23
SQL ๊ธฐ์ดˆ - BETWEEN, LIKE, IN  (0) 2026.03.21
SQL ๊ธฐ์ดˆ - ์ง‘๊ณ„ ํ•จ์ˆ˜(COUNT, AVG, SUM, MAX, MIN)  (0) 2026.03.20
SQL ๊ธฐ์ดˆ - GROUP BY - HAVING  (0) 2026.03.19
SQL ๊ธฐ์ดˆ - ORDER BY  (0) 2026.03.19