39.SQL-5

SOWA·2023년 4월 23일
0

SQL

목록 보기
5/12

🧷 Logical Operators(논리연산자)

연산자의미
AND조건을 모두 만족한 경우 TRUE
OR하나의 조건이라도 만족하는 경우 TRUE
NOT조건을 만족하지않는 경우 TRUE
BETWEEN조건값이 범위 사이에 있으면 TRUE
IN조건값이 목록에 있으면 TRUE
LIKE조건값이 패턴에 맞으면 TRUE

🖇️ AND

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세보다 큰 데이터를 이름의 역순으로 정렬하여 검색


🖇️ OR

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세보다 큰 데이터 검색


🖇️ NOT

조건을 만족하지 않는 경우 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년 이전이면서 소속사가 안테나가 아닌 경우


🖇️ BETWEEN

조건값이 범위 사이에 있으면 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세 사이의 데이터 검색


🖇️ IN

목록 안에 조건이 존재하는 경우 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세 이상인 데이터 검색


🖇️ LIKE

조건값이 패턴에 맞으면 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              |
+-----------+------------------------+
| 강동원    | 영화배우,탤런트        |
+-----------+------------------------+

ㄴ 영화배우와 탤런트를 병행하는 연예인 검색



from.제로베이스 데이터 취업스쿨 강의

0개의 댓글