[SQL] WHERE로 특정 레코드 가져오기

Joney의 SW 공부 블로그·2023년 1월 14일
0

SQL

목록 보기
1/14

조건을 줘서 데이터 가져오기

  • 특정 조건을 줘서 지정한 조건에 해당하는 레코드만 가져올 수 있음
  • 조건은 WHERE 를 사용해서 지정
  • WHEREFROM 뒤에 기입
  • 아래의 예시는 customer라는 테이블에서 membertype_id가 2인 customer_name을 가져오기
SELECT
	customer_name
FROM
	customer
WHERE
	membertype_id = 2;

비교 연산자

  • 비교 연산자 목록
연산자사용법의미
=a = ba와 b는 같다
<=>a <=> ba와 b는 같다 (NULL 대응)
!=a != ba와 b는 다르다
<>a <> ba와 b는 다르다
<a < ba는 b보다 작다
>a > ba는 b보다 크다
<=a <= ba는 b보다 작거나 같다
>=a >= ba는 b보다 크거나 같다
SELECT
	customer_name
FROM
	customer
WHERE
	membertype_id != 2;

비교 연산자로 NULL을 비교

  • <=> 은 NULL에 대응할 수 있는 비교 연산자
  • 이 외의 연산자로 NULL을 비교 대상으로 하면 NULL 자신을 포함하는 어떤 값과 비교해도 결과는 모두 NULL
SELECT
	1 = NULL, 1 <=> NULL, NULL <=> NULL,
	1 != NULL, 1 <> NULL, 1 < NULL;
1 = NULL1 <=> NULLNULL <=> NULL1 != NULL1 <> NULL1 < NULL
NULL01NULLNULLNULL

문자열을 검색하려면

  • 비교 연산자를 사용해서 검색 가능
SELECT
	*
FROM
	product
WHERE
	product_name = '약용 핸드숍';
  • 짧은 문자열형을 비교 연산자로 검색하게 되면 생기는 문제
    • 대소문자를 구별하지 않음
    • 끝의 공백은 무시

<예시>
search

idval비고
1A
2a
3A뒤에 공백
4B
SELECT
	*
FROM
	search
WHERE
	val = 'A';

조회 결과

idval
1A
2a
3A

BINARY를 사용해보자

  • BINARY를 이용함으로써 대소문자 문제도, 끝 공백 무시의 문제도 해결할 수 있음
SELECT
	*
FROM
	search
WHERE
	val = BINARY 'A';

일부분만 일치시킬 경우

  • 뒤 공백이 무시되는 문제는 해결되지만 대소문자 구별 문제는 해결 안됨
  • 대소문자까지 해결하려면 BINARY를 써야함
연산자사용법의미
LIKEa LIKE ba는 b에 일치한다
NOT LIKEa NOT LIKE ba는 b에 일치하지 않는다
SELECT
	*
FROM
	search
WHERE
	val LIKE 'A';
SELECT
	*
FROM
	search
WHERE
	val LIKE BINARY 'A';
  • 일부가 일치하는지 검색하기 위해서는 (%)를 넣어야함
  • %가 있는 곳에 0문자 이상의 임의의 문자가 있다는 의미
  • _를 붙이게 되면 임의의 1문자가 있다는 것을 의미
  • %OO%, %OO, OO%등의 사용 가능 (_도 마찬가지)
SELECT
	*
FROM
	product
WHERE
	product_name LIKE '약용%';

특수 문자 이스케이프

  • 검색하는 문자열에 %나 _가 있는 경우는 이스케이프가 필요
  • 이 외에 \, ', "를 써야할 때도 이스케이프 필요
  • 이럴 경우 \를 앞에 붙임
SELECT
	*
FROM
	product
WHERE
	product_name LIKE '%100\%';

대소 비교

  • 대소 비교는 숫자 말고도 날짜나 문자열에도 사용 가능
  • 문자열은 사전 순으로 비교됨
SELECT
	*
FROM
	customer
WHERE
	birthday < '1990-01-01';
SELECT
	*
FROM
	search
WHERE
	val > 'A'; <-- B
SELECT
	'4' < '10' <-- False, 사전상으로는 4가 더 큼

출처: 그림으로 배우는 SQL 입문
profile
SW 지식 노트 블로그

0개의 댓글