SQL7-9. Logical Operations

hh_binvely·2023년 3월 14일
0

5주차_SQL

목록 보기
5/6
post-thumbnail

Logical Operations(논리 연산자)

AND

  • 정의
    * 조건을 모두 만족하는 경우 TRUE

    select col1, col2, ...
    from tablename
    where condition AND condition2, condition3, .. ;

  • 예제1
    * 나이가 29세이고 성별이 여성인 데이터 검색

  • 예제2
    * 성별이 남자이고 나이가 40세 보다 큰 데이터를 이름의 역순으로 정렬하여 검색

OR

  • 정의
    * 하나의 조건이라도 만족하는 경우 TRUE

    select col1, col2, ..
    from tablename
    where conditon1, condition2, condition3, ... ;

  • 예제1
    * 나이가 25세보다 작거나 30세보다 큰 데이터 검색

  • 예제2
    * 나이가 29세보다 작고 여자이거나, 나이가 30세 보다 크고 남자인 데이터를 나이와 성별 순으로 정렬하여 검색

    select * from celeb where (age<29 and sex='F') OR (age<30 and se
    x='M') order by age, sex;

  • 예제3 (* 괄호 중요!!)
    YG엔터테이먼트 소속이거나 나무엑터스 소속인 연예인 중, 나이가 30세 보다 작은 데이터를 검색

    select * from celeb where (agency='YG엔터테이먼트' or agency='나무엑터스')and age<30;

  • 예제4
    * 남자이면서 YG엔터테이먼트 소석이거나 나이가 30세 보다 작은 데이터를 나이, 소속사 순으로 정렬하여 검색

    select * from celeb where (sex='M' and agency='YG엔터테이먼트') or age <30 order by age, agency;

  • 예제5(연산 부분은 괄호로 묶기)
    * 아이디가 홀수이면서 성별이 남자거나, 아이디가 짝수이면서 소속사가 YG엔터테이먼트인 데이터를 나이순으로 정렬하여 검색

    select * from celeb where ((id%2)=1 and sex='M') or ((id%2=0) and agency='YG엔터테이먼트') order by age;

NOT

  • 정의
    조건을 만족하지 않는 경우 TRUE

    select col1, col2,
    from tablename
    where NOT condition;

  • 예제1
    * 소속사가 YG엔터테이먼트이면서 남자가 아니거나, 직업이 가수이면서 소속사가 YG 엔터테이먼트가 아닌 데이터 검색

    select * from celeb where (AGENCY='YG엔터테이먼트' and not SEX='M') or (JOB_TITLE='가수' and not AGENCY='YG엔터테이먼트');

  • 예제2
    * 생일이 1990년 이후이면서 여자가 아니거나, 생일이 1979년 이전이면서 소속사가 안테나가 아닌 데이터

    select * from celeb
    where (brithday >19891231 and not sex='F') or (birthday<19800101 and not agency='안테나');

  • 예제3
    * celeb 테이블에서 소속사가 YG엔터테이먼트가 아니고 나이가 40세 이하인 데이터를 이름순으로 정렬하여 조회해보자.

    select * from celeb
    where (not agency='YG엔터테이먼트' and age <=40) order by name;

  • 예제 4
    * celeb 테이블에서 직업이 가수가 아니면서 성별이 여자이거나, 나이가 40보다 작지 않으면서 아이디가 홀수인 데이터를 조회해보자.

    select * from celeb
    where (not job_title='가수' and sex='F') or (not age<40 and id%2=1);

Between

  • 정의
    * 조건값이 범위 사이에 있으면 TRUE

    select col1, col2
    from tablename
    where col BETWEEN val1 AND val2;

  • 예제1
    * 생년월일이 1980년에서 1995년 사이가 아니면서 여자이거나, 소속사가 YG엔터테이먼트이면서 나이가 20세에서 45세 사이가 아닌 데이터 조회

    select * from celeb
    where (NOT birthday Between 19800101 and 19951231 and sex='F') or (agency='YG엔터테이먼트 and NOT age BETWEEN 20 and 45);

  • 예제2
    * celeb 테이블에서 아이디가 1에서 5사이의 값이면서 성별이 여자이거나, 아이디가 홀수이면서 성별이 남자이면서 나이가 20세에서 30세 사이인 데이터를 조회

    select * from celeb
    where (id between 1 and 5 AND sex='F') or (id%2=1 AND sex='M' AND age BETWEEN 20 and 30);

IN

  • 정의
    * 목록 안에 조건이 존재하는 경우 TRUE

    select col1, col2
    from tablename
    where col IN (val1, val2, ...);

  • 예제1
    * 나이가 28세, 48세 중 하나인 데이터 검색

    select * from celeb where age IN (28, 48);

  • 예제2
    * 소속사가 나무엑터스, 안테나, 울림엔터테이먼트가 아니면서, 성별이 여자거나 나이가 45세 이상인 데이터 검색

    select * from celeb
    where (Not agency IN ('나무엑터스',안테나','울림엔터테이먼트') AND sex='F' OR age >=45;

  • 예제 3
    * celeb 테이블에서 소속사가 안테나, YG엔터테이먼트 중 하나가 아니고, 성별이 여자인 데이터 조회

    select * from celeb
    where NOT agency IN ('안테나', 'YG엔터테이먼트') AND sex='F'

  • 예제 4
    * celeb 테이블에서 아이유, 송강, 강동원, 차승원 중에 YG엔터테이먼트 소속이 아니거나 나이가 40세에서 50세 사이인 사람을 조회

    select * from celeb
    where (name IN ('아이유','송강','강동원','차승원)) AND (NOT agency='YG엔터테이먼트' OR age BETWEEN 40 and 50);

LIKE

  • 정의
    * 조건값이 패턴에 맞으면 TRUE

    select col1, col2,
    from tablename
    where col LIKE pattern;

  • 예제1
    * 소속사 이름이'YG엔터테이먼트'인 데이터 검색

    select * from celeb
    where agency LIKE 'YG엔터테이먼트';

  • 예제2
    * 'YG'로 시작하는 소속사 이름을 가진 데이터 조쇠

    select * from celeb where agency LIKE'YG%';

  • 예제3
    * 직업명에 '가수'가 포함된 데이터 검색

    select * from celeb
    where job_title LIKE '%가수%';

  • 예제4
    * 소속사 이름의 두번째 글자가 G인 데이터를 검색

    select * from celeb
    where agency LIKE '_G%';

  • 예제5
    * 직업명이 '가'로 시작하고 최소 2글자 이상인 데이터 검색

    select * from celeb where job_title LIKE '가__%';

  • 예제6
    * 직업명이 '가'로 시작하고 최소 5글자 이상인 데이터 검색

    select * from celeb where job_title LIKE '가____%';

  • 예제7
    * 영화배우와 탤런트를 병행하는 연예인 검색

    select * from celeb
    where job_title LIKE '%영화배우%' AND job_title LIKE '%탤런트%';

  • 예제8
    * 직업이 하나 이상인 연예인 중 영화배우 혹은 탤런트가 아닌 연예인 검색

    select * from celeb where (job_title LIKE '%,%') AND NOT(job_title LIKE '%영화배우%' OR job_title LIKE '%탤런트%');

  • 예제9
    * 직업중 가수가 포함되어 있고 성이 이씨인 데이터를 조회

    select * form celeb
    where job_title LIKE %가수% AND name LIKE '이%'

  • 예제10
    * 아이유, 이미주, 유재석, 송강 중에 소속사 이름이 '나무'로 시작하는 데이터를 조회

    select * from celeb
    where name IN ('아이유','이미주','유재석','송강') AND agency='나무%';

0개의 댓글