TOC
WHERE 절
- SELECT, DELETE 등의 작업에서 필터링
- 여러 조건인 경우
AND
연산자로 연결
-- 일반 조회
SELECT * FROM users;
-- 나이가 30세 이상인 사람 조회
SELECT * FROM users WHERE age >= 30;
-- 나이가 30세 이상인 사람의 first_name 조회
SELECT first_name FROM users WHERE age >= 30;
-- 나이가 30세 이상이고 김씨인 사람들의 나이와 first_name 조회
SELECT age, first_name FROM users
WHERE age >= 30 AND last_name = '김';
집계 함수 : Aggregate function
- SELECT 구문에서만 사용
종류
COUNT()
- 그룹의 항목 수
SELECT COUNT(*) FROM users;
SUM() / AVG()
- 모든 값의 합계/평균 계산
MAX() / MIN()
- 그룹의 모든 값의 최대/최솟값
SELECT SUM(col) FROM [table_name];
SELECT AVG(col) FROM [table_name];
SELECT MAX(col) FROM [table_name];
SELECT MIN(col) FROM [table_name];
위의 함수들은 해당 컬럼(col)이 INTEGER인 경우에만 사용 가능
함수 사용 예시
30세 이상인 사람들의 평균 나이
SELECT AVG(age) FROM users WHERE age>=30;
계좌 잔액(balance)이 가장 높은 사람과 그 액수 조회
SELECT first_name, MAX(balance) FROM users;
balance가 가장 높은 record의 정보를 WHERE 조건절 없이 조회 가능
나이가 30 이상인 사람의 계좌 잔액 평균
SELECT AVG(balance) FROM users WHERE age>=30;
LIKE
- 패턴 일치를 기반으로 데이터를 조회
- SQLite는 패턴 구성을 위한 2개의
wildcards
제공 - whilecard : '%', '_'
whildcard
- 구체적인 이름 대신에 여러 파일을 동시에 지정할 목적으로 사용하는 특수 기호
- 특정한 패턴이 있는 문자열 혹은 파일 탐색, 긴 이름 생략 시 사용
- 텍스트 값에서 알 수 없는 문자를 사용할 수 있도록 한다.
- 지정된 패턴 일치를 기반으로 데이터를 수집하는 데 도움
% (percent sign)
- 0개 이상의 문자
- 이 자리에 문자열이 있을 수도, 없을 수도 있다.
_ (underscore | underbar)
- 임의의 단일 문자
- 이 자리에 반드시 단 하나의 문자가 존재
wildcard pattern 예시
2% : 2로 시작함
%2 : 2로 끝남
%2% : 2를 포함
_2% : 아무 값이 하나 있고, 두 번째가 2로 시작
1___ : 1로 시작하고 총 4자리
2_%_% / 2__% : 2로 시작하고, 적어도 3자리
SQLite에서 wildcards의 사용 예시
문법
SELECT * FROM [table_name] WHERE col LIKE '와일드카드패턴';
users 테이블에서 나이가 20대인 사람
SELECT * FROM users WHERE age LIKE '2_';
users 테이블에서 지역 번호가 02인 사람
SELECT * FROM users WHERE phone LIKE '02-%';
wildcard pattern을 '02%'로 하면 023 지역번호도 포함되므로 범위를 정확히 할 필요가 있다.
users 테이블에서 이름이 '준'으로 끝나는 사람
SELECT * FROM users WHERE first_name LIKE '%준';
users 테이블에서 중간 번호가 5114인 사람
SELECT * FROM users WHERE phone LIKE '%-5114-%';