데이터를 필터링하여 중복을 제거하는 방법과, 조건을 설정하는 등 쿼리를 제어하는 방법에 대해 알아보자.
사용한 파일명과 테이블 명은 이전 게시글과 같다.
SELECT DISTINCT select_list FROM table_name;
SELECT DISTINCT country FROM users;
SELECT DISTINCT country FROM users ORDER BY country;
SELECT DISTINCT first_name, country FROM users;
SELECT DISTINCT first_name, country
FROM users
ORDER BY country;
SELECT column_list FROM table_name
WHERE search_condition;
left_expression COMPARISON_OPERATOR right_expression
WHERE column_1 = 10
WHERE column_2 LIKE 'Ko%'
WHERE column_3 in (1,2)
WHERE column_4 BETWEEN 10 AND 20
=, <> or != , <, >, <=, >=
SELECT first_name, age, balance FROM users
WHERE age >= 30;
SELECT first_name, age, balance FROM users
WHERE age >= 30 AND balance > 500000;
%
wildcard 예시_
wildcard 예시SELECT first_name, last_name FROM users
WHERE first_name LIKE '%호%';
SELECT first_name FROM users
WHERE first_name LIKE '%준';
SELECT first_name, phone FROM users
WHERE phone LIKE '02-%';
SELECT first_name, age FROM users
WHERE age LIKE '2_';
SELECT first_name, phone FROM users
WHERE phone LIKE '%-51__-%';
NOT IN
연산자 사용SELECT first_name, country FROM users
WHERE country IN ('경기도', '강원도');
SELECT first_name, country FROM users
WHERE country == '경기도' or country ='강원도';
SELECT first_name, country FROM users
WHERE country NOT IN ('경기도', '강원도');
test_expression BETWEEN low_expression AND high_expression
NOT BETWEEN
연산자 사용SELECT first_name, age FROM users
WHERE age BETWEEN 20 AND 30;
SELECT first_name, age FROM users
WHERE age >= 20 AND age <= 30;
SELECT first_name, age FROM users
WHERE age NOT BETWEEN 20 AND 30;
SELECT first_name, age FROM users
WHERE age < 20 OR age > 30;
SELECT column_list FROM table_name LIMIT row_count;
SELECT rowid, first_name FROM users LIMIT 10;
SELECT first_name, balance FROM users
ORDER BY balance DESC LIMIT 10;
SELECT first_name, age FROM users
ORDER BY age LIMIT 5;
SELECT rowid, first_name FROM users
LIMIT 10 OFFSET 10;
-- 중복 없이 모든 지역 조회하기
SELECT DISTINCT country FROM users;
-- 지역 순으로 오름차순 정렬하여 중복 없이 모든 지역 조회하기
SELECT DISTINCT country FROM users ORDER BY country;
-- 이름과 지역이 중복 없이 모든 이름과 지역 조회하기
SELECT DISTINCT first_name, country FROM users;
-- 이름과 지역 중복 없이 지역 순으로 오름차순 정렬하여 모든 이름과 지역 조회하기
SELECT DISTINCT first_name, country
FROM users
ORDER BY country;
-- 나이가 30살 이상인 사람들의 이름, 나이, 계좌 잔고 조회하기
SELECT first_name, age, balance FROM users
WHERE age >= 30;
-- 나이가 30살 이상이고 계좌 잔고가 50만원 초과인 사람들의 이름, 나이, 계좌 잔고 조회하기
SELECT first_name, age, balance FROM users
WHERE age >= 30 AND balance > 500000;
-- 이름에 '호'가 포함되는 사람들의 이름과 성 조회하기
SELECT first_name, last_name FROM users
WHERE first_name LIKE '%호%';
-- 이름이 ‘준’으로 끝나는 사람들의 이름 조회하기
SELECT first_name FROM users
WHERE first_name LIKE '%준';
-- 서울 지역 전화번호를 가진 사람들의 이름과 전화번호 조회하기
SELECT first_name, phone FROM users
WHERE phone LIKE '02-%';
-- 나이가 20대인 사람들의 이름과 나이 조회하기
SELECT first_name, age FROM users
WHERE age LIKE '2_';
-- 전화번호 중간 4자리가 51로 시작하는 사람들의 이름과 전화번호 조회하기
SELECT first_name, phone FROM users
WHERE phone LIKE '%-51__-%';
-- 경기도 혹은 강원도에 사는 사람들의 이름과 지역 조회하기
SELECT first_name, country FROM users
WHERE country IN ('경기도', '강원도');
SELECT first_name, country FROM users
WHERE country == '경기도' or country ='강원도';
-- 경기도 혹은 강원도에 살지 않는 사람들의 이름과 지역 조회하기
SELECT first_name, country FROM users
WHERE country NOT IN ('경기도', '강원도');
-- 나이가 20살 이상, 30살 이하인 사람들의 이름과 나이 조회하기
SELECT first_name, age FROM users
WHERE age BETWEEN 20 AND 30;
SELECT first_name, age FROM users
WHERE age >= 20 AND age <= 30;
-- 나이가 20살 이상, 30살 이하가 아닌 사람들의 이름과 나이 조회하기
SELECT first_name, age FROM users
WHERE age NOT BETWEEN 20 AND 30;
-- 첫 번째부터 열 번째 데이터까지 rowid와 이름 조회하기
SELECT rowid, first_name FROM users LIMIT 10;
-- 계좌 잔고가 가장 많은 10명의 이름과 계좌 잔고 조회하기
SELECT first_name, balance FROM users
ORDER BY balance DESC LIMIT 10;
-- 나이가 가장 어린 5명의 이름과 나이 조회하기
SELECT first_name, age FROM users
ORDER BY age LIMIT 5;
-- 11번째부터 20번째 데이터의 rowid와 이름 조회하기
SELECT rowid, first_name FROM users
LIMIT 10 OFFSET 10;