[제로베이스][SQL] 비교연산자, 논리연산자

한결·2024년 1월 23일
post-thumbnail

준비하기

데이터는 지난번 글의 celeb 테이블을 사용하겠습니다.

mysql> select * from celeb;

비교연산자

  • 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가 같지 않은

논리연산자

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

AND

  1. 29세이고 성별이 여성 검색
mysql> select * from celeb where age=29 and sex='F';


  1. 성별이 남자이고 나이가 40세보다 큰 데이터를 이름으로 정렬하여 검색
mysql> select * from celeb
    -> where age>40 and sex='M'
    -> order by 'name';


OR

  1. 나이가 25세보다 작거나 30세보다 큰 데이터 검색
mysql> select * from celeb
    -> where age<25 or age > 30;


  1. 나이가 29세 보다 작고 여자이거나, 나이가 30세보다 크고 남자인 데이터를 나이와 성별 순으로 정렬하여 검색
mysql> select * from celeb
    -> where (age <29 and sex='f')
    -> or (age>30 and sex='m')
    -> order by age, sex;


  1. YG엔터테인먼트 소속이거나 나무엑터스 소속인 연예인 중, 나이가 30세 보다 작은 데이터를 검색
mysql> select * from celeb
    -> where (agency='YG엔터테인먼트' or agency='나무엑터스') and age<30;


NOT

  1. 성별이 여자가 아닌 데이터 검색
mysql> select * from celeb where not sex='f';


  1. 소속사가 YG엔터테인먼트이면서 남자가 아니거나 직업이 가수이면서 소속사가 YG엔터테인먼트가 아닌 데이터 검색
mysql> select * from celeb
    -> where (agency='YG엔터테인먼트' and not sex='m')
    -> or (job_title='가수' and not agency='YG엔터테인먼트');


  1. 생일이 1990년 이후이면서 여자가 아니거나, 생일이 1979년 이전이면서 소속사가 안테나가 아닌 데이터 검색
mysql> select * from celeb
    -> where (birthday >= 19900101 and not sex='f')
    -> or (birthday < 19800101 and not agency='안테나');


BETWEEN

  1. 나이가 20세에서 40세 사이의 데이터 검색
mysql> select * from celeb
    -> where age between 20 and 40;


  1. 생년월일이 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);


IN

  1. 나이가 28세, 48세 중 하나인 데이터 검색
mysql> select * from celeb where age in (28,48);


  1. 소속사가 나무엑터스, 안테나, 울림엔터테인먼트가 아니면서, 성별이 여자거나 나이가 45세 이상인 데이터 검색
mysql> select * from celeb
    -> where not agency in ('나무엑터스','안테나','울림엔터테인먼트') and sex='f'
    -> or age>=45;


mysql> select * from celeb
    -> where not agency  in ('나무엑터스','안테나','울림엔터테인먼트') and (sex='f' or age>=45);


LIKE

  1. 소속사 이름이 'YG엔터테인먼트'인 데이터를 검색
mysql> select * from celeb
    -> where agency like 'YG엔터테인먼트';


  1. 'YG'로 시작하는 소속사 이름을 가진 데이터를 검색
mysql> select * from celeb
    -> where agency like 'YG%';


  1. '엔터테인먼트'로 끝나는 소속사 이름을 가진 데이터 검색
mysql> select * from celeb
    -> where agency like '%엔터테인먼트';


  1. 직업명에 '가수'가 포함된 데이터를 검색
mysql> select * from celeb
    -> where job_title like '%가수%';


  1. 소속사 이름의 두번째 글자가 G인 데이터 검색
mysql> select * from celeb
    -> where agency like '_G%';


  1. 직업명이 '가'로 시작하고 최소 5글자 이상인 데이터 검색
mysql> select * from celeb
    -> where job_title like '가____%';

  1. 영화배우와 탤런트를 병행하는 연예인 검색
mysql> select * from celeb
    -> where job_title like '%영화배우%'
    -> and job_title like '%탤런트%';
profile
낭만젊음사랑

0개의 댓글