SQL 논리연산자 20240906

Yoochang Sung·2024년 9월 9일

잊지 말기

논리연산자

AND - 조건을 모두 만족하는 경우 TRUE

SELECT column1, column2, ...
FROM 테이블 이름
WHERE 조건1 AND 조건2 AND 조건3 ...; (조건 모두 만족해야 출력)
ex) Select * FROM celeb WHERE age = 29 AND sex = 'F';
-> 29세이면서 여성만 출력

OR - 하나의 조건이라도 만족하는 경우 TRUE

SELECT column1, column2, ...
FROM 테이블 이름
WHERE 조건1 OR 조건2 OR 조건3 ...;
ex) Select * FROM celeb WHERE age < 25 OR age > 30 ORDER BY age; -> 25세 보다 적거나 30세 보다 많은 데이터 출력

NOT - 조건을 만족하지 않는 경우 TRUE

SELECT column1, column2, ...
FROM 테이블 이름
WHERE NOT 조건;
ex1) 여자가 아닌 데이터 검색
Select * From celeb Where NOT sex='F';

ex2) 소속사가 YG이면서 남자가 아니거나 직업이 가수이면서 소속사가 YG가 아닌 데이터 검색
SELECT * From celeb Where (agency = 'YG' AND NOT sex = 'M') OR (Job_Title = '가수' AND NOT agency = 'YG');

-> != 로 해도 똑같이 나옴. SELECT * From celeb Where (agency = 'YG' AND sex != 'M') OR (Job_Title = '가수' AND agency != 'YG');

BETWEEN - 조건값이 범위 사이에 있으면 TRUE

Select colum1, column2, ...
From 테이블 이름
Where Column1 BETWEEN value1 AND value 2;

ex1) 나이가 20세에서 40세 사이
Select * From celeb Where age Between 20 AND 40;

ex2) 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);

IN - 조건값이 목록에 있으면 TRUE

Select column1, column2, ...
From 테이블 이름
Where column IN (value1, value2, ...);

ex1) 나이가 28세, 48세 중 하나인 데이터 검색
Select From celeb Where age IN (28, 48);
이렇게도 가능. Select From celeb Where age = 28 or age = 48;

ex2) 소속사가 나무엑터스, 안테나, 울림이 아니면서, 성별이 여자거나 나이가 45세 이상인 데이터 검색
Select * From Celeb Where NOT agency IN ('나무엑터스', '안테나', '울림') AND (sex = 'F' OR age >= 45);

  1. LIKE - 조건값이 패턴에 맞으면 TRUE(문자열에서 사용. 조건값이 문자열 패턴에 맞으면 TRUE) *
    Select column1, column2, ....
    From 테이블 이름
    Where column LIKE pettern;

ex1) 소속사 이름이 YG인 데이터 검색
Select * From celeb Where agency LIKE 'YG';
LIKE가 아니라 = 를 써도 된다.

ex2) YG로 시작하는 소속사 이름을 가진 데이터를 검색 %를 사용
Select * From celeb Where agency LIKE 'YG%';

ex3) 엔터테인먼트로 끝나는 소속사 이름을 가진 데이터 검색
Select * From celeb Where agency LIKE '%엔터테인먼트';

ex4) 직업명에 '가수'가 포함된 데이터 검색
Select * From celeb Where job_title LIKE '%가수%';

ex5) 소속사 이름의 두번째 글자가 G인 데이터 검색 (첫 번째 글자 언더바)
세 번째 글자가 G라면 앞에 언더바 2개
Select * From celeb Where agency LIKE '_G%';

ex6) 직업명이 '가'로 시작하고 최소 2글자 이상인 데이터 검색
Select * From celeb Where jobtitle LIKE '가%';

ex7) 직업명이 '가'로 시작하고 최소 5글자 이상인 데이터 검색
Select * From celeb Where job_title LIKE '가____%';

ex8) 직업명이 '영'으로 시작하고 '모델'로 끝나는 데이터 검색
Select * From celeb Where job_title LIKE '영%모델';

ex9) 영화배우와 텔런트를 병행하는 연예인 검색
Select * From celeb Where job_title LIKE '%영화배우%' AND job_title LIKE '%텔런트%';

ex10) 직업이 하나 이상인 연예인 중 영화배우 혹은 텔런트가 아닌 연예인 검색
Where job_title LIKE '%,%';
Where NOT (job_title LIKE '%영화배우%' OR job_title LIKE '%텔런트%');
합치기 Whre job_title LIKE '%,%' And NOT (job_title LIKE '%영화배우%' OR job_title LIKE '%텔런트%');

실습

AND

OR



NOT

Between

IN

celeb 테이블에서 아이유, 송강, 강동원, 차승원 중 YG 소속이 아니거나, 나이가 40세에서 50세 사이인 사람을 찾아보세요

LIKE

셀럽 테이블에서 성별이 남자 이거나 직업명이 텔런트로 끝나면서 최소 5글자 이상인 데이터

아이유, 이미주, 유재석, 송강 중 소속사 이름이 '나무'로 시작하는 데이터

아이유, 이미주, 송강, 이수현 중 가수만 직업으로 가졌거나, 가수를 병행하지 않고, 텔런트를 하는 사람은?

profile
Yoochang Sung

0개의 댓글