WHERE 구문에서 사용 가능하 술어 구문:
비교, 조건 등의 연산을 사용하거나 복합문으로 사용 가능
용어 | 연산자 | 예시 |
비교 | =,<>,<,<=,>.>= | price < 20000 |
범위 | BETWEEN | price BETWEEN 10000 AND 20000 |
집합 | IN, NOT, IN | price IN(10000,20000,30000) |
패턴 | LIKE | bookname LIE '철학의 역사 |
NULL | IS NULL, IS NOT NULL | price IS NULL |
복합조건 | AND, OR, NOT | (price < 20000) AND (bookname LIKE '철학의 역사') |
예시)
name | zip_code | address | total |
강동원 | 120-011 | 서울시 종로구~ | 20000 |
김형준 | 340-020 | 서울시 구로구~ | 30000 |
우편번호가 340-011 사람 출력
SELECT name FROM shopper WHERE zip_code = '340-021;
주문액이 20000~30000 인 사람을 출력하시오
SELECT name FROM shopper WHERE total BETWEEN 20000 AND 30000;
LIKE 절
- 쿼리 결과가 LIKE에 일치하는 결과만 제공
SELECT... WHERE
LIKE'[연산기호]문자열[연산기호]'
연산자 | 기능 | 예시 | 설명 |
% | 여러문자와 일치하는 패턴 | %학% | 철학, 대학 등 '학'이 포함된 문자열 |
_ | 한 문자와 일치하는 패턴 | _학 | 대학, 철학 등 '학'앞에 임의의 문자가 들어간 문자열 |
[] | 1개의 문자와 일치 | '[0-9]%' | 0-9 사이 숫자로 시작하는 문자열 |
[^] | 1개의 문자와 불일치 | '[^0-9]%' | 0-9사이 숫자로 시작하지 않는 문자열 |
예시)
'파이썬이 포함된 출판사를 검색하세요
SELECT bookname, publisher
FROM Book
WHERE bookname LIKE '%파이썬%'
NULL 값이란?
- 아직 지정되지 않은 값으로 비교가 불가능함
- NULL + 숫자의 결과는 NULL
- 집계 함수 계산 시 NULL이 포함된 행은 집계에서 빠짐
- 해당되는 행이 없을 경우 SUM, AVG 함수의 결과는 NULL이 되며, COUNT 함수의 결과는 0이 됨
NULL인 문자열 결합
SELECT CONCAT('번호',phone)
FROM customer;
ORDER BY 구문
- 쿼리 결과를 주어진 컬럼의 오름차순, 내림차순으로 정렬해 출력
ASC : 오름차순으로 정렬
DESC : 내림차순으로 정렬
-이름순으로 도서를 검색
SELECT *
FROM Book
ORDER BY bookname;
-정렬 조건
- 도서를 가격순으로 검색하고, 가격이 같으면 이름순
SELECT *
FROM Book
ORDER BY price, bookname;
- 오름차순/ 내림차순
SELECT *
FROM Book
ORDER BY price DESC, publisher ASC;
SELECT *
FROM orders
ORDER BY orderdate DESC;
-- 컬럼 번호로 지시가능
SELECT *
FROM Book
ORDER BY 1.3;
DISTINCT 구문
-- 조회된 결과에서 중복된 데이터를 제외하고 출력
SELECT [DISTINCT] 속성이름(들)
FROM 테이블이름(들)
-- 중복 제거란
-- 김, 이, 김을 중복 제거하면 김,이라는 범주 값만 남음
예시)
-- 주문 고객 목록
SELECT DISTINCT custid FROM orders;
조건 제어
-- 다중 조건을 제공하는 CASE 구문
-- 조회된 결과에서 중복된 데이터 제외 출력
IF 구문
-- 조건에 따라분기
참/거짓 두 가지만 있기에 2중 분기
-- 형식
SELECT IF (50>100, '참,'거짓');
IFNULL(수식1, 수식2)
수식1이 NULL이 아니면 수식1이 반환되고, 수식1이 NULL이면 수식2가 반환
LIMIT문
-- SELECT로 받아온 결과(레코드) 출력 개수를 제한하고자 할 때, SQL 문장의 제일 마지막에 사용
-- LIMIT n : 첫 번째 행부터 n개 출력
-- LIMIT s, n : s번째 행부터 n개를 출력(s개의 행을 SKIP)