여니의 프로그래밍 study/MySQL

[SQL문 #03] SQL의 Select Where 쿼리문에 대해 알아보는 시간!

여니's 2020. 5. 26. 10:00

안녕하세요

공대생 블로거 여니입니다

오늘은 Select문으로 원하는 데이터 검색을 할 때 사용하는 where쿼리문에 대해 살펴보려고 합니다~

저번 포스팅에서 말씀드렸던 것처럼 모든 데이터를 검색하는 것도 사용하지만 원하는 데이터를 입맛에 맞게끔 검색을 하는 방법도 알고 있어야겠죠!?

https://eboong.tistory.com/101

아직 select문 게시글을 안 보고 오신 분들을 위해 링크 걸어두겠습니다~!

 

 

자 어쨋든!

그래서 오늘은 조건 검색을 위해 사용하는 where쿼리문에 대해 알아보도록 해요~

테이블은 제가 만들어둔 개인정보라는 테이블에서 검색을 해보도록 할게요!

조건을 1개만 검색하고자 할 때는 간단하게 사용할 수 있어요

select 이름 from 개인정보 where 이름='여니';

이렇게 입력을 하면 이름이 여니인 사람의 이름 데이터만을 검색하게 되는 거죠!

 

그런데, 나이가 20살이고 사는 곳이 서울광역시인 사람들을 검색하려면 어떻게 해야 할까요?

이때는 AND 연산자를 사용하면 쉽게 검색을 할 수 있어요

select * from 개인정보 where 나이>=20 and 주소='서울광역시';

짜잔 나이가 20살이고 서울에 사는 사람 2명이 검색된 것을 확인할 수 있어요!

 

 

만약에 나이가 20살이거나 또는 주소가 서울인 사람을 검색하면 어떤 식으로 출력이 될까요?

이때는 AND 연산자가 아니라 OR연산자를 사용합니다

AND는 모든 조건이 만족해야 검색을 하는 거고, OR연산자는 주어진 조건들 중에 하나라도 만족하면 검색이 되는 것!

select * from 개인정보 where 나이>=20 or 주소='서울광역시';

짜잔!!

이런 식으로 결과값이 나오게 됩니다~

 

 

 

이제 in 연산자에 대해 알아보려고 해요

in 연산자는 조건의 범위를 지정해서 사용하는 연산자입니다

select * from 개인정보 where 나이 in (24,44);

24살이거나 44살인 사람을 모두 출력한다는 의미입니다

위 사진을 보시면 아시겠지만요!

in을 or로 대체해서 쓰려고 하면

select * from 개인정보 where 나이=24 or 나이=44;

이런식으로 쓰게 되면 위 사진과 똑같은 결괏값을 가지고 오게 됩니다

 

 

만약에 나이가 24살이고 44살인 사람의 정보만 빼고 검색하고 싶다면 어떤 식으로 할 수 있을까요?

여러 가지 방법이 있겠죠?

첫 번째로는,

select * from 개인정보 where not 나이=24 and 나이=44;

이렇게 입력하면 저희가 원하는 대로 결괏값이 출력이 될까요?

 

 

안 나오겠죠!? 왜 안 나올까요?

괄호로 묶어주지 않았기 때문입니다 조건을!

저렇게 입력하면 나이가 24살인 사람만 제외하고 나이가 44살인 사람도 출력을 해버리기 때문에 조건을 한 개만 충족한 상태(나이가 24살이 아닌 사람)로 결과가 출력이 됩니다.

따라서 괄호로 조건을 묶어주고 하게 되면

select * from 개인정보 where not (나이=24 and 나이=44);

나이가 24살이고 44살인 사람들은 모두 제외하고 결괏값을 출력하게 됩니다.

 

 

두 번째로는 in을 사용해서!

select * from 개인정보 where not 나이 in (24,44);

위에 방법과 동일한 결과가 나오는 것을 확인하실 수 있습니다:)

더 다양한 방식으로 사용할 수 있으니까 더 좋은 방법이 있다면 댓글로 남겨주세요!!

긴 글 읽어주셔서 감사드리고, 오늘 하루도 파이팅!