본문 바로가기

카테고리 없음

[MySQL] 논리연산자 / UNION

 

이 글은 24.01.18에 본인 벨로그에 작성했던 글을 옮겨 온 것이다.

 

LOGICAL OPERATION

NOT

  • 조건을 만족하지 않는 경우에 TRUE, 만족하면 FALSE
(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 (YEAR(BIRTHDAY) > 1990 AND NOT SEX = 'F')
    	OR (YEAR(BIRTHDAY) < 1979 AND NOT AGENCY = '안테나');



IN

  • 목록 안에 조건값이 존재하는 경우 TRUE
(1) 
소속사가 나무엔터스, 안테나, 울림엔터테인먼트가 아니면서 성별이 여자거나, 나이가 45세 이상인 데이터 검색하기!

SELECT *
	FROM CELEB
    WHERE NOT AGENCY ('나무엑터스', '안테나', '울림엔터테인먼트')
    	AND (SEX = 'F' OR AGE >= 45);

(2)
소속사가 안테나, YG엔터테인먼트 중 하나가 아니고, 성별이 여자인 데이터 검색하기

select *
	from celeb
 	where not agency in ('안테나', 'YG엔터테인먼트')
    	and sex = 'F';

(3)
아이유, 송강, 강동원, 차승원 중에 YG엔터테인먼트 소속이 아니거나 나이가 4~50세인 사람을 찾자.

SELECT *
	FROM CELEB
    WHERE NAME IN ('아이유', '송강', '강동원', '차승원')
		AND (NOT AGENCY = 'YG엔터테인먼트' OR AGE BETWEEN 40 AND 50);





UNION / UNION ALL

여러 SQL문을 합치는 함수

이씨이거나 1970년대생인 데이터 검색

SELECT * FROM CELEB WHERE NAME LIKE '이%'
UNION ALL
SELECT * FROM CELEB WHERE YEAR(BIRTHDAY) BETWEEN 1970 AND 1979;