Database/SQL ๊ธฐ์ดˆ

SQL ๊ธฐ์ดˆ - AND, OR, NOT

UNarD 2026. 4. 7. 15:35

๐Ÿ”€ AND, OR, NOT

๐Ÿ“‹ ์˜ˆ์‹œ ํ…Œ์ด๋ธ” โ€” students

id name grade score teacher_id
1 ๊น€์ฒ ์ˆ˜ 1 85 1
2 ์ด์˜ํฌ 2 NULL 1
3 ๋ฐ•๋ฏผ์ค€ 1 90 2
4 ์ตœ์ง€์› 3 72 NULL
5 ์ •์ˆ˜ํ˜„ 2 NULL 2
6 ํ•œ์ง€๋ฏผ 1 78 1
7 ์œค์„œ์ค€ 3 95 2
8 ๊ฐ•๋‹ค์€ 2 88 1
9 ์ž„ํ˜„์šฐ 3 NULL 2
10 ์˜ค์ง€์•„ 1 65 NULL
CREATE DATABASE IF NOT EXISTS practice;
USE practice;

DROP TABLE IF EXISTS students;

CREATE TABLE students (
    id         INT,
    name       VARCHAR(10),
    grade      INT,
    score      INT,
    teacher_id INT
);

INSERT INTO students VALUES (1,  '๊น€์ฒ ์ˆ˜', 1, 85,   1);
INSERT INTO students VALUES (2,  '์ด์˜ํฌ', 2, NULL,  1);
INSERT INTO students VALUES (3,  '๋ฐ•๋ฏผ์ค€', 1, 90,   2);
INSERT INTO students VALUES (4,  '์ตœ์ง€์›', 3, 72,   NULL);
INSERT INTO students VALUES (5,  '์ •์ˆ˜ํ˜„', 2, NULL,  2);
INSERT INTO students VALUES (6,  'ํ•œ์ง€๋ฏผ', 1, 78,   1);
INSERT INTO students VALUES (7,  '์œค์„œ์ค€', 3, 95,   2);
INSERT INTO students VALUES (8,  '๊ฐ•๋‹ค์€', 2, 88,   1);
INSERT INTO students VALUES (9,  '์ž„ํ˜„์šฐ', 3, NULL,  2);
INSERT INTO students VALUES (10, '์˜ค์ง€์•„', 1, 65,   NULL);

โ€ผ๏ธ ์œ„ ํ…Œ์ด๋ธ”์„ ๊ธฐ์ค€์œผ๋กœ ์•„๋ž˜ ์˜ˆ์‹œ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”น AND โ€” ๋‘ ์กฐ๊ฑด ๋ชจ๋‘ ๋งŒ์กฑ

๋‘ ์กฐ๊ฑด์„ ๋ชจ๋‘ ๋งŒ์กฑํ•˜๋Š” ํ–‰๋งŒ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๐ŸŽ€ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•

SELECT ์ปฌ๋Ÿผ FROM ํ…Œ์ด๋ธ”
WHERE ์กฐ๊ฑด1 AND ์กฐ๊ฑด2;
1ํ•™๋…„์ด๋ฉด์„œ ์ ์ˆ˜๊ฐ€ 80์  ์ด์ƒ์ธ ํ•™์ƒ ์กฐํšŒ
SELECT name, grade, score
FROM students
WHERE grade = 1 AND score >= 80;
๐Ÿ“ฅ ๊ฒฐ๊ณผ
name grade score
๊น€์ฒ ์ˆ˜ 1 85
๋ฐ•๋ฏผ์ค€ 1 90

๐Ÿ”น OR โ€” ๋‘˜ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ ๋งŒ์กฑ

๋‘ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋งŒ์กฑํ•˜๋Š” ํ–‰์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๐ŸŽ€ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•

SELECT ์ปฌ๋Ÿผ FROM ํ…Œ์ด๋ธ”
WHERE ์กฐ๊ฑด1 OR ์กฐ๊ฑด2;
1ํ•™๋…„ ๋˜๋Š” 3ํ•™๋…„ ํ•™์ƒ ์กฐํšŒ
SELECT name, grade
FROM students
WHERE grade = 1 OR grade = 3;
๐Ÿ“ฅ ๊ฒฐ๊ณผ
name grade
๊น€์ฒ ์ˆ˜ 1
๋ฐ•๋ฏผ์ค€ 1
์ตœ์ง€์› 3
ํ•œ์ง€๋ฏผ 1
์œค์„œ์ค€ 3
์ž„ํ˜„์šฐ 3
์˜ค์ง€์•„ 1

๐Ÿ”น NOT โ€” ์กฐ๊ฑด์„ ๋ฐ˜์ „

์กฐ๊ฑด์„ ๋ฐ˜์ „์‹œ์ผœ ๋งŒ์กฑํ•˜์ง€ ์•Š๋Š” ํ–‰์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๐ŸŽ€ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•

SELECT ์ปฌ๋Ÿผ FROM ํ…Œ์ด๋ธ”
WHERE NOT ์กฐ๊ฑด;
1ํ•™๋…„์ด ์•„๋‹Œ ํ•™์ƒ ์กฐํšŒ
SELECT name, grade
FROM students
WHERE NOT grade = 1;
๐Ÿ“ฅ ๊ฒฐ๊ณผ
name grade
์ด์˜ํฌ 2
์ตœ์ง€์› 3
์ •์ˆ˜ํ˜„ 2
์œค์„œ์ค€ 3
๊ฐ•๋‹ค์€ 2
์ž„ํ˜„์šฐ 3

โœจ ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„

AND๋Š” OR๋ณด๋‹ค ๋จผ์ € ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
์˜๋„ํ•œ ๋Œ€๋กœ ๋™์ž‘ํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด ๊ด„ํ˜ธ๋กœ ๋ฌถ์–ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

โŒ ๊ด„ํ˜ธ ์—†์ด ์“ฐ๋ฉด

SELECT name, grade, score
FROM students
WHERE grade = 1 OR grade = 2 AND score >= 80;
๐Ÿ“ฅ ๊ฒฐ๊ณผ
name grade score
๊น€์ฒ ์ˆ˜ 1 85
๋ฐ•๋ฏผ์ค€ 1 90
ํ•œ์ง€๋ฏผ 1 78
๊ฐ•๋‹ค์€ 2 88
์˜ค์ง€์•„ 1 65

AND๊ฐ€ ๋จผ์ € ์ฒ˜๋ฆฌ๋˜์–ด grade = 2 AND score >= 80์ด ๋จผ์ € ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.
1ํ•™๋…„ ์ „์ฒด + 80์  ์ด์ƒ์ธ 2ํ•™๋…„ ํ•™์ƒ์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

โœ… ๊ด„ํ˜ธ๋กœ ๋ช…ํ™•ํ•˜๊ฒŒ ์ง€์ •

SELECT name, grade, score
FROM students
WHERE (grade = 1 OR grade = 2) AND score >= 80;
๐Ÿ“ฅ ๊ฒฐ๊ณผ
name grade score
๊น€์ฒ ์ˆ˜ 1 85
๋ฐ•๋ฏผ์ค€ 1 90
๊ฐ•๋‹ค์€ 2 88

๊ด„ํ˜ธ ์•ˆ์˜ OR์ด ๋จผ์ € ์ฒ˜๋ฆฌ๋˜์–ด 1ํ•™๋…„ ๋˜๋Š” 2ํ•™๋…„ ์ค‘ 80์  ์ด์ƒ์ธ ํ•™์ƒ๋งŒ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.


โ˜• ๋งˆ๋ฌด๋ฆฌ

์—ฐ์‚ฐ์ž ์„ค๋ช… ์˜ˆ์‹œ
AND ๋‘ ์กฐ๊ฑด ๋ชจ๋‘ ๋งŒ์กฑ grade = 1 AND score >= 80
OR ๋‘˜ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ ๋งŒ์กฑ grade = 1 OR grade = 3
NOT ์กฐ๊ฑด ๋ฐ˜์ „ NOT grade = 1

AND๋Š” OR๋ณด๋‹ค ๋จผ์ € ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์˜๋„ํ•œ ์ˆœ์„œ๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ด„ํ˜ธ๋ฅผ ๊ผญ ์จ์ฃผ์„ธ์š”!

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