조건을 줘서 데이터 가져오기
- 특정 조건을 줘서 지정한 조건에 해당하는 레코드만 가져올 수 있음
- 조건은
WHERE
를 사용해서 지정
WHERE
는 FROM
뒤에 기입
- 아래의 예시는 customer라는 테이블에서 membertype_id가 2인 customer_name을 가져오기
SELECT
customer_name
FROM
customer
WHERE
membertype_id = 2;
비교 연산자
연산자 | 사용법 | 의미 |
---|
= | a = b | a와 b는 같다 |
<=> | a <=> b | a와 b는 같다 (NULL 대응) |
!= | a != b | a와 b는 다르다 |
<> | a <> b | a와 b는 다르다 |
< | a < b | a는 b보다 작다 |
> | a > b | a는 b보다 크다 |
<= | a <= b | a는 b보다 작거나 같다 |
>= | a >= b | a는 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 = NULL | 1 <=> NULL | NULL <=> NULL | 1 != NULL | 1 <> NULL | 1 < NULL |
---|
NULL | 0 | 1 | NULL | NULL | NULL |
문자열을 검색하려면
SELECT
*
FROM
product
WHERE
product_name = '약용 핸드숍';
- 짧은 문자열형을 비교 연산자로 검색하게 되면 생기는 문제
<예시>
search
SELECT
*
FROM
search
WHERE
val = 'A';
조회 결과
BINARY를 사용해보자
- BINARY를 이용함으로써 대소문자 문제도, 끝 공백 무시의 문제도 해결할 수 있음
SELECT
*
FROM
search
WHERE
val = BINARY 'A';
일부분만 일치시킬 경우
- 뒤 공백이 무시되는 문제는 해결되지만 대소문자 구별 문제는 해결 안됨
- 대소문자까지 해결하려면 BINARY를 써야함
연산자 | 사용법 | 의미 |
---|
LIKE | a LIKE b | a는 b에 일치한다 |
NOT LIKE | a NOT LIKE b | a는 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'; <
SELECT
'4' < '10' <
출처: 그림으로 배우는 SQL 입문