연산자 | 의미 |
---|---|
AND | 조건을 모두 만족한 경우 TRUE |
OR | 하나의 조건이라도 만족하는 경우 TRUE |
NOT | 조건을 만족하지않는 경우 TRUE |
BETWEEN | 조건값이 범위 사이에 있으면 TRUE |
IN | 조건값이 목록에 있으면 TRUE |
LIKE | 조건값이 패턴에 맞으면 TRUE |
or 보다 우선순위
SELECT column1, column2,...
FROM tablename
WHERE condition1 AND condition2 AND condition3...;
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엔터테이먼트 |
+----+-----------+------------+------+------+-------------------+------------------------+
ㄴ 나이가 29세이고 성별이 여성인 데이터 검색
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엔터테인먼트 |
+----+-----------+------------+------+------+------------------------+----------------------+
ㄴ 성별이 남자이고 나이가 40세보다 큰 데이터를 이름의 역순으로 정렬하여 검색
SELECT column1, column2,...
FROM tablename
WHERE condition1 OR condition2 OR condition3...;
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,개그맨 | 안테나 |
+----+-----------+------------+------+------+------------------------+----------------------+
ㄴ 나이가 25세보다 작거나 30세보다 큰 데이터 검색
조건을 만족하지 않는 경우 TRUE
SELECT column1, column2,..
FROM tablename
WHERE NOT condition;
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엔터테인먼트 |
+----+-----------+------------+------+------+------------------------+----------------------+
ㄴ 성별이 여자가 아닌 데이터 검색
mysql> select * from celeb where agency='YG엔터테인먼트' and Not sex='M';
+----+-----------+------------+------+------+-----------+----------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+-----------+------------+------+------+-----------+----------------------+
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | 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엔터테인먼트 |
+----+-----------+------------+------+------+-----------+--------------------------+
ㄴ 소속사가 YG엔터테인먼트이면서 남자가 아니거나, 직업이 가수이면서 소속사가 YG엔터테인먼트가 아닌 경우
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엔터테인먼트 |
+----+-----------+------------+------+------+---------------------+----------------------+
ㄴ 생일이 1990년 이후이면서 여자가 아니거나, 생일이 1979년 이전이면서 소속사가 안테나가 아닌 경우
조건값이 범위 사이에 있으면 TRUE
SELECT column1, column2,...
FROM tablename
WHERE column1 BETWEEN value1 and value2;
mysql> select * from celeb where age between 20 and 40;
+----+-----------+------------+------+------+-------------------+--------------------------+
| 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엔터테인먼트 |
+----+-----------+------------+------+------+-------------------+--------------------------+
ㄴ 나이가 20세에서 40세 사이의 데이터 검색
목록 안에 조건이 존재하는 경우 TRUE
SELECT column1, column2,...
FROM tablename
WHERE column IN (value1, value2,...);
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엔터테인먼트 |
+----+-----------+------------+------+------+---------------------+--------------------------+
ㄴ 나이가 29세, 48세 중 하나인 데이터 검색
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엔터테인먼트 |
+----+-----------+------------+------+------+---------------------+------------------------+
ㄴ 소속사가 나무엑터스,안테나, 올림엔터테인먼트가 아니면서, 성별이 여자거나 나이가 45세 이상인 데이터 검색
조건값이 패턴에 맞으면 TRUE
SELECT column1, column2,...
FROM taablename
WHERE column LIKE pattern;
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엔터테인먼트 |
+----+-----------+------------+------+------+------------------------+----------------------+
ㄴ 소속사 이름이 '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엔터테인먼트 |
+----+-----------+------------+------+------+------------------------+----------------------+
ㄴ YG로 시작하는 소속사 이름을 가진 데이터 검색
mysql> select * from celeb where agency like '%엔터테인먼트';
+----+-----------+------------+------+------+------------------------+--------------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+-----------+------------+------+------+------------------------+--------------------------+
| 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엔터테인먼트 |
+----+-----------+------------+------+------+------------------------+--------------------------+
ㄴ 엔터테인먼트로 끝나는 소속사 이름을 가진 데이터 검색
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엔터테인먼트 |
+----+-----------+------------+------+------+-------------------+--------------------------+
ㄴ 직업명에 가수가 포함된 데이터 검색
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엔터테인먼트 |
+----+-----------+------------+------+------+------------------------+----------------------+
ㄴ 소속사 이름의 두번째 글자가 G인 데이터 검색
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엔터테인먼트 |
+----+-----------+------------+------+------+-------------------+--------------------------+
ㄴ 직업명이 '가'로 시작하고 최소 2글자 이상인 데이터 검색
(글자수를 늘리려면 '_' 갯수를 늘리면 됨)
mysql> select * from celeb where job_title like '영%모델';
+----+-----------+------------+------+------+---------------------+----------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+-----------+------------+------+------+---------------------+----------------------+
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우,모델 | YG엔터테인먼트 |
+----+-----------+------------+------+------+---------------------+----------------------+
ㄴ 직업명이 '영'으로 시작하고 '모델'로 끝나는 데이터 검색
mysql> select name, job_title from celeb
-> where job_title like '%영화배우%' and job_title like '%탤런트%';
+-----------+------------------------+
| name | job_title |
+-----------+------------------------+
| 강동원 | 영화배우,탤런트 |
+-----------+------------------------+
ㄴ 영화배우와 탤런트를 병행하는 연예인 검색