- [ MySQL ] - LIKE, IN, AND, OR, BETWEEN

민짜이·2025년 2월 4일

데이터베이스

목록 보기
8/11

LIKE

LIKE 는 문자열을 이용해 데이터를 필터링 할 때 사용할 수 있는 연산입니다. LIKE 는 문자열 중 일부가 같으면 조회하는 기능을 갖고 있습니다. 여기서 LIKE 는 와일드 카드라는 기능을 사용합니다.

와일드카드

와일드카드는 대표적으로 %_ 가 있습니다. 두 가지의 의미는 다음과 같습니다.

  • % : 0개 이상의 문자를 대체합니다.
  • _ : 한 개의 문자를 대체합니다.

예를 들면 W% 는 W로 시작하는 문자열을 의미하며, _W는 W로 끝나는 두 글자의 문자열을 의미합니다.

SELECT title FROM books WHERE title LIKE 'Wh%';

위 코드는 title 중 wh로 시작하는 제목을 출력하는 뜻입니다.

위 사진을 보면 wh로 시작하는 제목을 출력한 것을 확인할 수 있습니다.

select author_fname from books where author_fname like '_a___';

위 코드는 author_fname 가 5글자이며 두 번째 글자가 a인 값을 출력하는 뜻입니다.

위 사진을 보면 글자 수가 5개이며 두 번째 글자가 a인 author_fname 를 출력하는 것을 확인할 수 있습니다.

IN

IN 은 여러 개의 값 중에서 특정한 값이 존재하는지 확일할 때 사용하는 연산입니다.

SELECT title, author_lname FROM books WHERE author_lname IN ('Lahiri', 'Gaiman');

위 코드는 author_lname 이 'Lahiri'거나 'Gaiman'인 사람의 titleauthor_lname 을 출력하는 의미입니다.
위 코드의 결과는 다음과 같습니다.

AND, OR

AND 연산은 모든 조건이 참일 경우에 True가 되는 논리 연산이며 OR 은 모든 존건 중 하나만 참일 경우 True가 되는 연산입니다. 참고로 두 연산을 같이 사용할 때는 우선적으로 처리해야할 조건에 괄호를 사용하는 것이 좋습니다. 왜냐하면 AND 연산이 OR 연산보다 우선순위를 갖고 있기 때문입니다. 두 연산을 사용하는 방법은 다음과 같습니다.

SELECT title, author_lname, released_year, pages
			 FROM books
       WHERE ( author_lname LIKE 'L%' OR pages <= 300) AND released_year < 2000;

위 코드의 의미는 author_lname 의 첫 글자가 L이거나 pages가 300 이하면서 released_year 가 2000보다 낮은 행의 title, author_lname, released_year, pages 를 조회하는 의미입니다.
위 코드의 결과는 다음과 같습니다.

BETWEEN

BETWEEN 은 같은 컬럼에 대해 크기를 비교할 때 사용하는 연산입니다.

SELECT title, released_year FROM books WHERE released_year BETWEEN 2004 AND 2015;

위 코드는 released_year가 2004 이상 2015 이하인 행의 title, released_year 를 출력합니다. 위 코드의 결과는 다음과 같습니다.

profile
꼬박꼬박

0개의 댓글