자주 사용하는 SQL Query 1
[DataBase] 자주 사용하는 SQL Query 1
[샘플 테이블 다운로드]
다음 SQL 실습에 사용된 모든 데이터는 http://forta.com/books/0672336073 에서 다운로드 받을 수 있다
[데이터 가져오기]
# 단일 컬럼 가져오기
SELECT prod_name
FROM Products;
# 다중 컬럼 가져오기
SELECT prod_id, prod_name, prod_price
FROM Products;
# 모든 컬럼 가져오기
SELECT *
FROM Products;
# 중복행 출력 방지하기
SELECT DISTINCT vend_id
FROM Products;
# 결과 제한하기
SELECT prod_name
FROM Products
LIMIT 5;
# 5번째 행부터 5개의 행을 가져오기
SELECT prod_name
FROM Products
LIMIT 5 OFFSET 5;
# 주석 사용하기
# 한 줄 주석
SELECT prod_name -- 이 줄은 주석이다
FROM Products;
# 이 줄은 주석이다
SELECT prod_name
FROM Products;
# 다중 행 주석
/* SELECT prod_name, vend_id
FROM Products; */
SELECT prod_name
FROM Products;
# 데이터 정렬하기
SELECT prod_name
FROM Products
ORDER BY prod_name;
# 여러 개의 컬럼으로 정렬하기
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price, prod_name;
# 컬럼의 위치로 정렬하기
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY 2, 3;
# 정렬 순서 지정하기 (내림차순 정렬, 비싼 가격의 제품이 먼저 나옴)
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price DESC;
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price DESC, prod_name; -- DESC 키워드는 명시된 컬럼에만 적용된다
[데이터 필터링]
# WHERE 절 사용하기
SELECT prod_name, prod_price
FROM Products
WHERE prod_price = 3.49;
# 단일값 확인하기
# 가격이 10달러보다 싼 모든 제품을 가져오기
SELECT prod_name, prod_price
FROM Products
WHERE prod_price < 10;
# 가격이 10달러 이하인 제품을 가져오기
SELECT prod_name, prod_price
FROM Products
WHERE prod_price <= 10;
# 일치하지 않는 값 확인하기
# 판매처가 DLL01 이 아닌 모든 제품을 가져오기 -1
SELECT vend_id, prod_name
FROM Products
WHERE vend_id <> 'DLL01';
# 판매처가 DLL01 이 아닌 모든 제품을 가져오기 -2
SELECT vend_id, prod_name
FROM Products
WHERE vend_id != 'DLL01';
# 특정 범위의 값 확인하기
# BETWEEN 연산자
SELECT prod_name, prod_price
FROM Products
WHERE prod_price BETWEEN 5 AND 10;
# 값이 없는 데이터 확인하기
# IS NULL 연산자
SELECT prod_name
FROM Products
WHERE prod_price IS NULL;
SELECT cust_name
FROM Customers
WHERE cust_email IS NULL;
# 고급 데이터 필터링
# AND 연산자 사용하기
# 판매처가 DLL01 이고 가격이 4달러 이하인 제품의 ID, 제품 가격, 제품명 가져오기
SELECT prod_id, prod_price, prod_name
FROM Products
WHERE vend_id = 'DLL01' AND prod_price <= 4;
# OR 연산자 사용하기
# 판매처가 DLL01 이거나 BRS01 인 제품의 제품명과 가격을 가져오기
SELECT prod_name, prod_price
FROM Products
WHERE vend_id = 'DLL01' OR vend_id = 'BRS01';
# 우선순위 이해하기
# AND 가 OR 보다 우선순위에서 좀 더 높은 우위에 있다
# 가격이 10달러 이상이면서 판매처가 DLL01 이거나 BRS01인 모든 제품을 검색하기 - 잘못된 예
SELECT prod_name, prod_price
FROM Products
WHERE vend_id = 'DLL01' OR vend_id = 'BRS01'
AND prod_price >= 10;
# 괄호 사용하기
# 가격이 10달러 이상이면서 판매처가 DLL01 이거나 BRS01인 모든 제품을 검색하기 - 올바른 예
SELECT prod_name, prod_price
FROM Products
WHERE (vend_id = 'DLL01' OR vend_id = 'BRS01')
AND prod_price >= 10;
# IN 연산자 사용하기
# IN 연산자는 조건의 범위를 지정할 때 사용한다. IN 연산자의 괄호 안에는 조건이 나열되는데, 각 조건은 콤마로 구분된다.
# 판매처가 DLL01 이거나 BRS01인 제품을 가져온다.
SELECT prod_name, prod_price
FROM Products
WHERE vend_id IN ('DLL01', 'BRS01')
ORDER BY prod_name;
# NOT 연산자 사용하기
# 판매처가 DLL01 이 아닌 제품을 출력하기
SELECT prod_name
FROM Products
WHERE NOT vend_id = 'DLL01'
ORDER BY prod_name;
# <>연산자를 사용해도 같은 결과를 얻을 수 있다
SELECT prod_name
FROM Products
WHERE vend_id <> 'DLL01'
ORDER BY prod_name;
[와일드카드 문자를 이용한 필터링]