NULL

WHERE (조건), LIKE, OR, AND 연산자 본문

SQL

WHERE (조건), LIKE, OR, AND 연산자

1924 2022. 2. 15. 02:36

WHERE 조건;

= 테이블명에서 열 이름을 가지고 오는데 조건에 맞는것만 가지고 와라

 

기본적인 사용법

SELECT * FROM Products WHERE SupplierID = 1
//Products 테이블에서 SupplierID열 중에서 값이 1인 것만 가지고 와라

 

 

논리연산자

SELECT ProductID, Price FROM Products WHERE Price >=15;
// Products테이블에서 ProductID, Price열 중에서 Price의 값이 15이상인 값을 가져와라

 

결과값 :

 

 

목록포함 (IN, NOT IN)

SELECT ProductID, SupplierID FROM Products WHERE SupplierID IN ('1', '2');
// Products테이블에서 ProductID, SupplierID열 중에서 SupplierID 값이 1이거나 2인 값들

 

결과값 : 

 

 

위와 반대로 아래 값은 NOT IN을 써줌으로써 ('1', '2')가

있는 값들을 빼고 나머지 값을 불러온다.

 

( 아래 코드와 결과값 참고 )

SELECT ProductID, SupplierID FROM Products WHERE SupplierID NOT IN ('1', '2');
// Products테이블에서 ProductID, SupplierID열 중에서 SupplierID 값이 1이거나 2가 없는 값들

 

결과값 : 

 

 

 

LIKE 연산자

LIKE는 문자열 패턴을 검색하는데 사용한다.

 

우리는 "박스"라고 검색하면 정확히 박스라는 글이 나오기도 하지만

동시에 "네모박스", "세모박스" 등 박스가 들어간 다른 문자열들도 검색된다.

 

박스와 네모박스는 다른 단어라서 검색이 되면 안될 때

LIKE를 사용하면 해당하는 단어만 검색된다.

 

 

LIKE 사용법

SELECT * FROM 테이블 WHERE 컬럼 LIKE '패턴'

패턴 부분은 두가지 방법이 존재한다.

 

1. %

%는 모든 문자를 뜻한다.

 

SELECT ProductID, Unit, Price FROM Products WHERE Unit LIke '%boxes%';

위에 코드를 보면

Products 테이블에 Unit열에서 boxes값을 가지고 있는 값들을 조회하는데

앞뒤로 %가 존재하는데 이것은 앞 뒤로 모든문자 사이에 boxes값이 존재하면 이라는 뜻이다.

 

만약 앞 %를 뺀다면 boxes로 시작하면서 뒤에서 모든문자가 포함된 값들을 불러온다는 뜻이며

 

반대로

뒤에 %를 뺀다면 앞에 모든문자를 포함하면서 boxes값으로 끝나는 값을 가져온다는 뜻이다.

 

결과값 : 

 

2. _ ( 언더바 )

SELECT ProductID, Unit, Price FROM Products WHERE Unit LIke '___boxes';

_언더바는 예를 들면 _ 한개당 boxes 앞에 혹은 뒤에 썼다면

뒤에 해당값인 boxes가 존재하는 값을 불러온다.

 

다음 결과값을 참고해보자.

boxes앞 _언더바 3개, 즉 boxes값이 3칸 뒤에 존재하는 값을 불러온다.

Unit열의 값들을 자세히 보면 공백문자까지 포함하여

boxes값이 3칸 뒤에 있는 값을 불러온 것을 확인할 수 있다.

 

 

 

 

OR, AND 연산자

 

AND 코드참고

SELECT ProductID, Unit, Price FROM Products WHERE Unit LIKE '%boxes%' AND Price >= 15;

// Products 테이블에 ProductID, Unit, Price열 중에서
// Unit열에 모든문자 사이에 boxes값이 들어 있으면서
// Price 값이 15이상인 값을 불러온다.

OR 코드참고

SELECT ProductID, Unit, Price FROM Products WHERE Unit LIKE '%boxes%' OR Price >= 15;

// Products 테이블에 ProductID, Unit, Price열 중에서
// Unit열에 모든문자 사이에 boxes값이 들어 있거나
// Price 값이 15이상인 값을 불러온다.
Comments