본문 바로가기
DBMS/1. MySQL-DATA

SQL : WHERE 절과 연산자 2 (LIKE/IN/BETWEEN)

by 혀닙 2022. 2. 17.

목차

  1. LIKE연산자
  2. IN 연산자
  3. BETWEEN 연산자

 


 

#1 LIKE 연산자

LIKE 연산자는 컬럼에서 특정한 패턴에 일치하는 데이터를 검색하기 위하여 사용 된다.
LIKE 연산자와 주로 사용되는 와일드 카드

  • 퍼센트 기호(%)는 0, 1, 또는 다중의 문자를 나타냄 (자리수가 0,1 또는 여럿)
  • 언더 바(_)는 단일의 문자를 나타냄 (자리수가 1)

 

1. 문법

SELECT 컬럼1, 컬럼2, FROM 테이블 WHERE 조건 LIKE 패턴 ;

 

2. LIKE연산자와 와일드 카드를 사용해서 만들 수 있는 다양한 패턴들

-컬럼 city에서 a로 시작하는 값

WHERE city LIKE 'a%'

-컬럼 city에서 a로 끝나는 값

WEHRE city LIKE'%a'

-컬럼 city 중 a를 포함하는 값

WHERE city LIKE '%a%'

-컬럼 city 중 두번째 자리의 값이 a인 값

WHERE city LIKE '_a%'

-컬럼 city 중 a로 시작하고 값의 자리수가 최소 2 이상인 값

WHERE city LIKE 'a_%'

-컬럼 city 중 a로 시작하고 값의 자리수가 최소 3이상인 값

WHERE city LIKE 'a%_%_%'

-컬럼 city 중 a로 시작하고 o로 끝나는 값

WHERE city LIKE 'a%o'


참고로, 해당 특정 패턴에 일치하지 않는 데이터를 검색하기 위한 문법은 다음과 같다

3. 패턴에 일치하지 않는 데이터를 검색하기 위한 문법

SELECT 컬럼 FROM 테이블명 WHERE 조건 NOT LIKE 패턴 ;





#2 IN 연산자

IN 연산자는 WHERE 절에서 다수의 값을 선택할 수 있게 한다.
WHERE절 안의 IN 연산자는 다중의 조건을 ()로 묶은 것이다(즉 괄호안의 값들 가운데 있다는 뜻)

1. 문법

SELECT 컬럼1, 컬럼2 FROM 테이블명 WHERE 컬럼1 IN (값1, 값2) ;


또는 아래와 같이 작성가능하다.

SELECT 컬럼1, 컬럼2 FROM 테이블명 WHERE 컬럼1 IN (SELECT문) ;


2. 예시
-customers 테이블에서 국적이 독일, 프랑스, 또는 영국 인 고객 조회하기

SELECT * FROM customers WHERE nationality IN ('Germany','France','UK') ;

-customers 테이블에서 국적이 독일, 프랑스, 또는 영국이 아닌 고객 조회하기

SELECT * FROM customers WHERE nationality NOT IN ('Germany','Fracne','UK') ;

-customers 테이블에서 고객 조회, 단 고객의 국적이 suppliers 테이블의 country 컬럼과 일치하는 고객일 것

SELECT * FROM customers WHERE nationality IN (SELECT country FROM suppliers) ;







#3 BETWEEN 연산자

BETWEEN 연산자는 특정한 범위 내의 값을 선택한다(=범위 설정이 필요하다)
값은 숫자, 텍스트, 또는 날짜가 될 수 있다.

1. 문법

SELECT 컬럼 FROM 테이블명 WHERE 컬럼 BETWEEN 값1 AND 값2 ;


2. 예시
-products 테이블에서 price가 10과 20 사이인 모든 제품 조회

SELECT * FROM products WHERE price BETWEEN 10 AND 20 ;


-products 테이블에서 price가 10과 20 사이가 아닌 모든 제품 조회

SELECT * FROM products WHERE price NOT BETWEEN 10 AND 20 ;



-products 테이블에서 price가 10과 20사이인 모든 제품 조회. 단 제품은 categoryId가 1,2,3이 아닐 것

SELECT * FROM products WHERE price BETWEEN 10 AND 20 AND categoryId NOT IN (1,2,3) ;


-orders 테이블에서 orderdate가 '2022-01-01'과 '2022-01-31'인 모든 주문 조회

SELECT * FROM orders WHERE orderdate BETWEEN '2022-01-01' AND '2022-01-31' ;

'DBMS > 1. MySQL-DATA' 카테고리의 다른 글

MySQL 사용자를 위한 데이터 타입  (0) 2022.02.17
SQL: 정렬을 위한 ODER BY 키워드  (0) 2022.02.17
SQL : WHERE 절과 연산자 1  (0) 2022.02.17
SQL : SELECT /INSERT INTO 구문  (0) 2022.02.16

댓글