● Comparison Operators (비교 연산자)
연산자 | 의미 |
---|
A - B | A 와 B가 같은 |
A > B | A가 B보다 큰 (초과) |
A < B | A가 B보다 작은 (미만) |
A >= B | A가 B보다 크거나 같은 (이상) |
A <= B | A가 B보다 작거나 같은 (이하) |
A <> B | A가 B보다 크거나 작은 (같지 않은) |
A != B | A와 B가 같지 않은 |
예제 1
SELECT name, age FROM celeb WHERE age=29 ORDER BY age;
mysql> select name, age from celeb where age=29 order by age;
+--------+------+
| name | age |
+--------+------+
| 아이유 | 29 |
+--------+------+
예제 2
SELECT name, age FROM celeb WHERE age!=29 ORDER BY age;
mysql> select name, age from celeb where age!=29 order by age;
+--------+------+
| name | age |
+--------+------+
| 이수현 | 23 |
| 이미주 | 28 |
| 송강 | 28 |
| 강동원 | 41 |
| 차승원 | 48 |
| 유재석 | 50 |
+--------+------+
예제 3
SELECT name, age FROM celeb WHERE age>29 ORDER BY age;
mysql> select name, age from celeb where age>29 order by age;
+--------+------+
| name | age |
+--------+------+
| 강동원 | 41 |
| 차승원 | 48 |
| 유재석 | 50 |
+--------+------+
예제 4
SELECT name, age FROM celeb WHERE age<29 ORDER BY age;
mysql> select name, age from celeb where age<29 order by age;
+--------+------+
| name | age |
+--------+------+
| 이수현 | 23 |
| 이미주 | 28 |
| 송강 | 28 |
예제 5
SELECT name, age FROM celeb WHERE age>=29 ORDER BY age;
mysql> SELECT name, age FROM celeb WHERE age>=29 ORDER BY age;
+--------+------+
| name | age |
+--------+------+
| 아이유 | 29 |
| 강동원 | 41 |
| 차승원 | 48 |
| 유재석 | 50 |
+--------+------+
예제 6
SELECT name, age FROM celeb WHERE age<=29 ORDER BY age;
mysql> SELECT name, age FROM celeb WHERE age<=29 ORDER BY age;
+--------+------+
| name | age |
+--------+------+
| 이수현 | 23 |
| 이미주 | 28 |
| 송강 | 28 |
| 아이유 | 29 |
+--------+------+
예제 7
- 나이가 29세보다 크거나 작은 (같지 않은) 데이터 검색
SELECT name, age FROM celeb WHERE age<>29 ORDER BY age;
mysql> SELECT name, age FROM celeb WHERE age<>29 ORDER BY age;
+--------+------+
| name | age |
+--------+------+
| 이수현 | 23 |
| 이미주 | 28 |
| 송강 | 28 |
| 강동원 | 41 |
| 차승원 | 48 |
| 유재석 | 50 |
+--------+------+
●Logical Operators (논리 연산자)
연산자 | 의미 |
---|
AND | 조건을 모두 만족하는 경우 TRUE |
OR | 하나의 조건이라도 만족하는 경우 TRUE |
NOT | 조건을 만족하지 않는 경우 TRUE |
BETWEEN | 조건값이 범위 사이에 있으면 TRUE |
IN | 조건값이 목록에 있으면 TRUE |
LIKE | 조건값이 패턴에 맞으면 TRUE |
AND 문법
SELECT column1, column2, ...
FROM tablename
WHERE condition1 AND condition2 AND condition3 ...;
예제 1
mysql> select * from celeb where age=29 and sex='F';
+----+--------+------------+------+------+--------------+------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+--------------+------------------+
| 1 | 아이유 | 1993-05-16 | 29 | F | 가수, 탤런트 | EDAM엔터테인먼트 |
+----+--------+------------+------+------+--------------+------------------+
예제 2
- 성별이 남자이고 나이가 40세보다 큰 데이터를 이름의 역순으로 정렬하여 검색
mysql> select * from celeb where sex='M' and age>40 order by name;
+----+--------+------------+------+------+------------------+----------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+------------------+----------------+
| 4 | 강동원 | 1981-01-18 | 41 | M | 영화배우, 탤런트 | YG엔터테인먼트 |
| 5 | 유재석 | 1972-08-14 | 50 | M | MC, 개그맨 | 안테나 |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테인먼트 |
+----+--------+------------+------+------+------------------+----------------+
OR 문법
SELECT column1, column2, ...
FROM tablename
WHERE condition1 OR condition2 OR condition3 ...;
예제 1
- 나이가 25세보다 작거나 30세보다 큰 데이터 검색
mysql> select * from celeb where age<25 or age>30 order by age;
+----+--------+------------+------+------+------------------+----------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+------------------+----------------+
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테인먼트 |
| 4 | 강동원 | 1981-01-18 | 41 | M | 영화배우, 탤런트 | YG엔터테인먼트 |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테인먼트 |
| 5 | 유재석 | 1972-08-14 | 50 | M | MC, 개그맨 | 안테나 |
+----+--------+------------+------+------+------------------+----------------+
예제 2
- 나이가 29세보다 작고 여자이거나, 나이가 30세보다 크고 남자인 데이터를 나이와 성별 순으로 정렬하여 검색
mysql> select * from celeb where (age<29 and sex='F') or (age>30 and sex='M')
-> order by age, sex;
+----+--------+------------+------+------+------------------+------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+------------------+------------------+
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테인먼트 |
| 2 | 이미주 | 1994-09-23 | 28 | F | 가수 | 울림엔터테인먼트 |
| 4 | 강동원 | 1981-01-18 | 41 | M | 영화배우, 탤런트 | YG엔터테인먼트 |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테인먼트 |
| 5 | 유재석 | 1972-08-14 | 50 | M | MC, 개그맨 | 안테나 |
+----+--------+------------+------+------+------------------+------------------+
예제 3
mysql> select * from celeb where (agency='YG엔터테인먼트' or agency='나무엑터스') and age<30;
+----+--------+------------+------+------+-----------+----------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+-----------+----------------+
| 3 | 송강 | 1994-04-23 | 28 | M | 탤런트 | 나무엑터스 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테인먼트 |
+----+--------+------------+------+------+-----------+----------------+
NOT 문법
SELECT column1, column2, ...
FROM tablename
WHERE NOT condition;
예제 1
mysql> select * from celeb where not sex='F';
+----+--------+------------+------+------+------------------+----------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+------------------+----------------+
| 3 | 송강 | 1994-04-23 | 28 | M | 탤런트 | 나무엑터스 |
| 4 | 강동원 | 1981-01-18 | 41 | M | 영화배우, 탤런트 | YG엔터테인먼트 |
| 5 | 유재석 | 1972-08-14 | 50 | M | MC, 개그맨 | 안테나 |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테인먼트 |
+----+--------+------------+------+------+------------------+----------------+
예제 2
- 소속사가 YG엔터테인먼트이면서 남자가 아니거나, 직업이 가수이면서 소속사가 YG엔터테인먼트가 아닌 데이터 검색
mysql> select * from celeb where
-> (agency='YG엔터테인먼트' and not sex='M') or
-> (job_title='가수' and not agency='YG엔터테인먼트');
+----+--------+------------+------+------+-----------+------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+-----------+------------------+
| 2 | 이미주 | 1994-09-23 | 28 | F | 가수 | 울림엔터테인먼트 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테인먼트 |
예제 3
- 생일이 1990년 이후이면서 여자가 아니거나, 생일이 1979년 이전이면서 소속사가 안테나가 아닌 데이터 검색
mysql> select * from celeb where
-> (birthday>19891231 and not sex='F') or (birthday<19800101 and not agency='안테나');
+----+--------+------------+------+------+----------------+----------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+----------------+----------------+
| 3 | 송강 | 1994-04-23 | 28 | M | 탤런트 | 나무엑터스 |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테인먼트 |
+----+--------+------------+------+------+----------------+----------------+
BETWEEN 문법
SELECT column1, column2, ...
FROM tablename
WHERE column1 BETWEEN value1 AND value2;
예제 1
mysql> select * from celeb where age between 20 and 30;
+----+--------+------------+------+------+--------------+------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+--------------+------------------+
| 1 | 아이유 | 1993-05-16 | 29 | F | 가수, 탤런트 | EDAM엔터테인먼트 |
| 2 | 이미주 | 1994-09-23 | 28 | F | 가수 | 울림엔터테인먼트 |
| 3 | 송강 | 1994-04-23 | 28 | M | 탤런트 | 나무엑터스 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테인먼트 |
+----+--------+------------+------+------+--------------+------------------+
예제 2
- 생년월일이 1980년에서 1995년 사이가 아니면서 여자이거나, 소속사가 YG엔터테인먼트이면서 나이가 20세에서 45세 사이가 아닌 데이터 검색
mysql> select * from celeb where
-> (not birthday between 19800101 and 19951231 and sex='F') or
-> (agency='YG엔터테인먼트' and not age between 20 and 45);
+----+--------+------------+------+------+----------------+----------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+----------------+----------------+
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테인먼트 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테인먼트 |
+----+--------+------------+------+------+----------------+----------------+
IN 문법
SELECT column1, column2, ...
FROM tablename
WHERE column IN (value1, value2, ...);
예제 1
mysql> select * from celeb where age in (28, 48);
+----+--------+------------+------+------+----------------+------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+----------------+------------------+
| 2 | 이미주 | 1994-09-23 | 28 | F | 가수 | 울림엔터테인먼트 |
| 3 | 송강 | 1994-04-23 | 28 | M | 탤런트 | 나무엑터스 |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테인먼트 |
+----+--------+------------+------+------+----------------+------------------+
예제 2
- 소속사가 나무엑터스, 안테나, 울림엔터테인먼트가 아니면서, 성별이 여자거나 나이가 45세 이상인 데이터 검색
mysql> select * from celeb
-> where not agency in ('나무엑터스', '안테나', '울림엔터테인먼트')
-> and (sex='F' or age>=45);
+----+--------+------------+------+------+----------------+------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+----------------+------------------+
| 1 | 아이유 | 1993-05-16 | 29 | F | 가수, 탤런트 | EDAM엔터테인먼트 |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테인먼트 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테인먼트 |
+----+--------+------------+------+------+----------------+------------------+
LIKE 문법
SELECT column1, column2, ...
FROM tablename
WHERE column LIKE pattern;
예제 1
- 소속사 이름이 'YG엔터테인먼트'인 데이터를 검색
mysql> select * from celeb where agency like 'yg엔터테인먼트';
+----+--------+------------+------+------+------------------+----------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+------------------+----------------+
| 4 | 강동원 | 1981-01-18 | 41 | M | 영화배우, 탤런트 | YG엔터테인먼트 |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테인먼트 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테인먼트 |
+----+--------+------------+------+------+------------------+----------------+
예제 2
- 'YG'로 시작하는 소속사 이름을 가진 데이터를 검색
mysql> select * from celeb where agency like 'yg%';
+----+--------+------------+------+------+------------------+----------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+------------------+----------------+
| 4 | 강동원 | 1981-01-18 | 41 | M | 영화배우, 탤런트 | YG엔터테인먼트 |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테인먼트 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테인먼트 |
+----+--------+------------+------+------+------------------+----------------+
예제 3
- '엔터테인먼트'로 끝나는 소속사 이름을 가진 데이터를 검색
mysql> select * from celeb where agency like '%엔터테인먼트';
+----+--------+------------+------+------+------------------+------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+------------------+------------------+
| 1 | 아이유 | 1993-05-16 | 29 | F | 가수, 탤런트 | EDAM엔터테인먼트 |
| 2 | 이미주 | 1994-09-23 | 28 | F | 가수 | 울림엔터테인먼트 |
| 4 | 강동원 | 1981-01-18 | 41 | M | 영화배우, 탤런트 | YG엔터테인먼트 |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테인먼트 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테인먼트 |
+----+--------+------------+------+------+------------------+------------------+
예제 4
mysql> select * from celeb where job_title like '%가수%';
+----+--------+------------+------+------+--------------+------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+--------------+------------------+
| 1 | 아이유 | 1993-05-16 | 29 | F | 가수, 탤런트 | EDAM엔터테인먼트 |
| 2 | 이미주 | 1994-09-23 | 28 | F | 가수 | 울림엔터테인먼트 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테인먼트 |
+----+--------+------------+------+------+--------------+------------------+
예제 5
- 소속사 이름의 두번째 글자가 G인 데이터를 검색
mysql> select * from celeb where agency like '_g%';
+----+--------+------------+------+------+------------------+----------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+------------------+----------------+
| 4 | 강동원 | 1981-01-18 | 41 | M | 영화배우, 탤런트 | YG엔터테인먼트 |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테인먼트 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테인먼트 |
+----+--------+------------+------+------+------------------+----------------+
예제 6
- 직업명이 '가'로 시작하고 최소 2글자 이상인 데이터 검색
mysql> select * from celeb where job_title like '가_%';
+----+--------+------------+------+------+--------------+------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+--------------+------------------+
| 1 | 아이유 | 1993-05-16 | 29 | F | 가수, 탤런트 | EDAM엔터테인먼트 |
| 2 | 이미주 | 1994-09-23 | 28 | F | 가수 | 울림엔터테인먼트 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테인먼트 |
+----+--------+------------+------+------+--------------+------------------+
예제 7
- 직업명이 '가'로 시작하고 최소 5글자 이상인 데이터 검색
mysql> select * from celeb where job_title like '가____%';
+----+--------+------------+------+------+--------------+------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+--------------+------------------+
| 1 | 아이유 | 1993-05-16 | 29 | F | 가수, 탤런트 | EDAM엔터테인먼트 |
+----+--------+------------+------+------+--------------+------------------+
예제 8
- 직업명이 '영'으로 시작하고 '모델'로 끝나는 데이터 검색
mysql> select * from celeb where job_title like '영%모델';
+----+--------+------------+------+------+----------------+----------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+----------------+----------------+
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테인먼트 |
+----+--------+------------+------+------+----------------+----------------+
예제 9
mysql> select * from celeb where job_title like '%영화배우%' and job_title like '%탤런트%';
+----+--------+------------+------+------+------------------+----------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+------------------+----------------+
| 4 | 강동원 | 1981-01-18 | 41 | M | 영화배우, 탤런트 | YG엔터테인먼트 |
+----+--------+------------+------+------+------------------+----------------+
예제 10
- 직업이 하나 이상인 연예인 중 영화배우 혹은 텔런트가 아닌 연예인 검색
mysql> select * from celeb
-> where job_title like '%,%'
-> and not (job_title like '%영화배우%' or job_title like '%탤런트%');
+----+--------+------------+------+------+------------+--------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+--------+------------+------+------+------------+--------+
| 5 | 유재석 | 1972-08-14 | 50 | M | MC, 개그맨 | 안테나 |
+----+--------+------------+------+------+------------+--------+