๐ SQL ์กฐ๊ฑด ์ฐ์ฐ์ โ BETWEEN, LIKE, IN
WHERE ์ ์ ์ฐ๋ค ๋ณด๋ฉด ๋น๊ต ์ฐ์ฐ์๋ง์ผ๋ก๋ ํํํ๊ธฐ ์ด๋ ค์ด ์กฐ๊ฑด์ด ์๊น๋๋ค.
๋ฒ์, ํจํด, ๋ชฉ๋ก โ ์ด๋ฐ ์กฐ๊ฑด๋ค์ ๋ ๊ฐ๊ฒฐํ๊ฒ ์ฐ๋ WHERE ์ ์์ ์ฌ์ฉํ๋ ์กฐ๊ฑด ์ฐ์ฐ์๋ฅผ ์ ๋ฆฌํด ๋ดค์ต๋๋ค ๐
๐๏ธ ์์ ํ
์ด๋ธ โ 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);
โผ๏ธ ์ด ํ
์ด๋ธ์ ๊ธฐ์ค์ผ๋ก ์๋ ๋ฌธ๋ฒ์ ์ค๋ช
ํฉ๋๋ค.
โ๏ธ BETWEEN
๊ฐ์ด ํน์ ๋ฒ์ ์์ ์๋ ํ์ ์กฐํํฉ๋๋ค.
์ซ์, ๋ ์ง, ๋ฌธ์์ด ๋ชจ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๐ ๊ธฐ๋ณธ ๋ฌธ๋ฒ
์ปฌ๋ผ BETWEEN ์ต์๊ฐ AND ์ต๋๊ฐ
๐น ์ ์๊ฐ 70~90์ ์ธ ํ์ ์กฐํ
SELECT name, score
FROM students
WHERE score BETWEEN 70 AND 90;
๐ฅ ๊ฒฐ๊ณผ
| name |
score |
| ๊น์ฒ ์ |
85 |
| ์ต์ง์ |
72 |
| ํ์ง๋ฏผ |
78 |
| ๊ฐ๋ค์ |
88 |
BETWEEN์ ์ ๋๊ฐ์ ํฌํจํฉ๋๋ค. score >= 70 AND score <= 90๊ณผ ๋์ผํฉ๋๋ค.
๐น ๋ฒ์ ๋ฐ์ ํ์ ์กฐํํ๋ ค๋ฉด NOT BETWEEN์ ์ฌ์ฉ
WHERE score NOT BETWEEN 70 AND 90
๐ฅ ๊ฒฐ๊ณผ
| name |
score |
| ๋ฐ๋ฏผ์ค |
90 |
| ์ค์์ค |
95 |
| ์ค์ง์ |
65 |
๐ญ LIKE
๋ฌธ์์ด ํจํด์ด ์ผ์นํ๋ ํ์ ์กฐํํฉ๋๋ค.
์ด๋ฆ์ด ์ ํํ ๊ธฐ์ต๋์ง ์๊ฑฐ๋, ํน์ ๋ฌธ์๋ก ์์/๋๋๋ ๊ฐ์ ์ฐพ์ ๋ ์๋๋ค.
๐ ๊ธฐ๋ณธ ๋ฌธ๋ฒ
์ปฌ๋ผ LIKE 'ํจํด'
โน๏ธ ์์ผ๋์นด๋ ์ข
๋ฅ
| ์์ผ๋์นด๋ | ์๋ฏธ |
% | 0๊ฐ ์ด์์ ์์ ๋ฌธ์ |
_ | ์ ํํ 1๊ฐ์ ์์ ๋ฌธ์ |
๐น '๊น'์ผ๋ก ์์ํ๋ ์ด๋ฆ
SELECT name FROM students WHERE name LIKE '๊น%';
๐ฅ ๊ฒฐ๊ณผ
๐น 'ํฌ'๋ก ๋๋๋ ์ด๋ฆ
SELECT name FROM students WHERE name LIKE '%ํฌ';
๐ฅ ๊ฒฐ๊ณผ
๐น ์ด๋ฆ์ด 3๊ธ์์ด๊ณ ๊ฐ์ด๋ฐ๊ฐ '๋ฏผ'์ธ ๊ฒฝ์ฐ
SELECT name FROM students WHERE name LIKE '_๋ฏผ_';
๐ฅ ๊ฒฐ๊ณผ
๐น ์ด๋ฆ์ '์'๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ
SELECT name FROM students WHERE name LIKE '%์%';
๐ฅ ๊ฒฐ๊ณผ
๐น ํจํด์ ๋ง์ง ์๋ ํ์ ์กฐํํ๋ ค๋ฉด NOT LIKE๋ฅผ ์ฌ์ฉ
SELECT name FROM students WHERE name NOT LIKE '๊น%';
๐ฅ ๊ฒฐ๊ณผ
| name |
| ์ด์ํฌ |
| ๋ฐ๋ฏผ์ค |
| ์ต์ง์ |
| ์ ์ํ |
| ํ์ง๋ฏผ |
| ์ค์์ค |
| ๊ฐ๋ค์ |
| ์ํ์ฐ |
| ์ค์ง์ |
๐๏ธ IN
๊ฐ์ด ๋ชฉ๋ก ์์ ์๋ ํ์ ์กฐํํฉ๋๋ค.
์ฌ๋ฌ ๊ฐ์ OR๋ก ์ฐ๊ฒฐํ๋ ๊ฒ๊ณผ ๊ฐ์ง๋ง ํจ์ฌ ๊ฐ๊ฒฐํฉ๋๋ค.
๐ ๊ธฐ๋ณธ ๋ฌธ๋ฒ
์ปฌ๋ผ IN (๊ฐ1, ๊ฐ2, ...)
๐น 1ํ๋
๋๋ 3ํ๋
ํ์ ์กฐํ
SELECT name, grade
FROM students
WHERE grade IN (1, 3);
๐ฅ ๊ฒฐ๊ณผ
| name |
grade |
| ๊น์ฒ ์ |
1 |
| ๋ฐ๋ฏผ์ค |
1 |
| ์ต์ง์ |
3 |
| ํ์ง๋ฏผ |
1 |
| ์ค์์ค |
3 |
| ์ํ์ฐ |
3 |
| ์ค์ง์ |
1 |
grade = 1 OR grade = 3๊ณผ ๋์ผํฉ๋๋ค.
๐น ๋ชฉ๋ก์ ์๋ ํ์ ์กฐํํ๋ ค๋ฉด NOT IN์ ์ฌ์ฉ
WHERE grade NOT IN (1, 3)
๐ฅ ๊ฒฐ๊ณผ
| name |
grade |
| ์ด์ํฌ |
2 |
| ์ ์ํ |
2 |
| ๊ฐ๋ค์ |
2 |
โ ๋ง๋ฌด๋ฆฌ
| ์ฐ์ฐ์ |
์ฉ๋ |
์์ |
BETWEEN |
๋ฒ์ ์กฐ๊ฑด |
score BETWEEN 70 AND 90 |
LIKE |
ํจํด ์กฐ๊ฑด |
name LIKE '๊น%' |
IN |
๋ชฉ๋ก ์กฐ๊ฑด |
grade IN (1, 3) |
์ธ ์ฐ์ฐ์ ๋ชจ๋ NOT์ ๋ถ์ฌ ๋ฐ๋ ์กฐ๊ฑด์ผ๋ก๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
BETWEEN์ ์ ๋๊ฐ ํฌํจ, LIKE๋ %์ _ ์์ผ๋์นด๋,
IN์ OR์ ์ถ์ฝํ์ด๋ผ๊ณ ๊ธฐ์ตํด๋๋ฉด ๋ฉ๋๋ค.
๐ ์ฐธ๊ณ ์๋ฃ