SQL은 데이터베이스에서 필요한 형태의 데이터를 추출 또는 가공하기 위해 사용하는 언어로, 데이터 분석을 위해 필수적인 언어다.
SQL은 크게 다음과 같은 형태로 사용되는데, 각 구문에 대해 살펴보고자 한다.
- SELECT 칼럼, 계산 값
- FROM 테이블 명
- WHERE 조건
- GROUP
- BY 그룹화
- HAVING 그룹화에 사용되는 조건
1. SELECT
SELECT 상품 번호
FROM DB명. PRODUCT;
1)칼럼 조회
SELECT 호출하려는 칼럼
FROM DB 명.테이블 명;
ex) classicmodels.customers.의 customerNumber를 조회하세요.
SELECT CUSTOMERNUMBER
FROM CLASSICMODELS.CUSTOMERS;
2)집계 함수
SELECT COUNT(상품 번호)
FROM DB 명.PRODUCT;
ex)classicmodels.payments의 amount의 총합과 checknumber개수를 구하세요.
SELECT SUM(AMOUNT),
COUNT(CLASSICNUMBER)
FROM CLASSICMODELS.PAYMENTS;
3)*(모든 결과 조회)
SELECT *
FROM DB 명.테이블 명;
4)AS
SELECT 칼럼 명1 as 변경 칼럼 명
FROM DB.테이블 명;
ex) classicmodels.products의 productCode의 개수를 구하고, 칼럼 명을 n_products로 변경하세요
SELECT COUNT(PRODUCTCODE)AS N_PRODUCTS,
COUNT(PRODUCTCODE) N_PRODUCTS
FRO CLASSICMODELS.PRODUCTS;
5)DISTINCT
SELECT DISTINCT 제조 국가
FROM DB 명.상품 테이블;
ex) classicmodels.orderdetails의 ordernumber의 중복을 제거하고 조회하세요.
SELECT DISTINCT ORDERNUMBER
FROM CLASSICMODELS.ORDERDETAILS;
2. FROM
예를 들어, 매출 테이블은 sales라는 테이블 명으로, 상품 테이블은 product테이블로 각각 저장되어있다고 하자.
이때 sales테이블에 있는 정보를 호출하려면 어떻게 해야 할까 ?
SELECT 계산식 또는 칼럼 명
FROM DB 명.SALES;
USE DB 명;
SELECT 계산식 또는 칼럼 명
FROM SALES;
3. WHERE
SELECT 상품 번호
FROM DB 명.PRODUCT;
ex) 미국에서 판매되는 상품의 상품 번호
SELECT 상품 번호
FROM DB명.PRODUCT
WHERE 판매 국가 = '미국';
1)BETWEEN
SELECT *
FROM DB 명.테이블 명
WHERE 칼럼 BETWEEN 시작점 AND 끝점;
ex) 출시일이 2010 ~ 2014년인 조건 추가
SELECT 상품 번호
FROM DB 명.PRODUCT
WHERE 출시 연도 BETWEEN 2010 AND 2014;
ex)classicmodels.orderdetails의 priceeach가 30에서 50사이인 데이터를 조회하세요.
SELECT *
FROM CLASSICMODELS.ORDERDETAILS
WHERE PRICEEACH BETWEEN 30 AND 50
2)대소 관계 표현
SELECT 상품 번호
FROM DB 명.PRODUCT
WEHRE 출시 연도 < 2010;
SELECT 상품 번호
FROM DB 명.PRODUCT
WHERE 출시 연도 > 2014;
ex)classicmodels.orderdetails의 priceeach가 30이상인 데이터를 조회하세요.
SELECT *
FROM CLASSICMODELS.ORDERDETAILS
WEHRE PRICEEACH >= 30;
3)IN
이전에 = 연산자를 사용해 미국에서 출시된 상품 번호를 출력했다. 이번에는 미국과 영국에서 출시된 상품 리스트를 모두 출력해야 한다. 이럴 경우 IN 연산자를 이용해 처리 가능하다.
SELECT 칼럼 명
FROM 테이블 명
WHERE 칼럼 명 IN(값1, 값2);
ex) classicmodels.customers의 country가 USA 또는 Canada인 customernumber를 조회하세요.
SELECT CUSTOMERNUMBER
FROM CLASSICMODELRS.CUSTOMERS
WEHRE COUNTRY IN ('USA','Canada');
4) NOT IN
특정 값을 포함하지 않는 데이터만 출력한다.
SELECT 상품 번호
FROM DB 명.PRODUCT
WHERE 판매 국가 NOT IN('미국','영국');
ex) classicmodels.customers의 country가 USA, Canada가 아닌 customernumber를 조회하세요.
SELECT CUSTOMERNUMBER
FROM DB CLASSICMODELS.CUSTOMERS
WHERE COUNTRY NOT IN('USA','Canada');
5) IS NULL
데이터를 수집하다보면 결측치(수집하지 못한 데이터)가 생성된다. 이런 결측치를 데이터베이스에서는 NULL로 명칭한다.
SELECT 칼럼 명 또는 계산식
FROM 테이블 명
WEHRE 칼럼 IS NULL;
재고가 NULL인 상품 번호를 출력하려면?
SELECT 상품 번호
FROM DB 명. PRODUCT
WHERE 재고 IS NULL;
ex) classicmodels.employees의 reportsTo 값이 NULL인 employeenumber를 조회하세요.
SELECT EMPLOYEENUMBER
FROM CLASSICMODELS.EMPLOYEES
WHERE REPORTSTO IS NULL;
6)LIKE '%TEXT%'
특정 필드에 어떤 텍스트가 포함되는 경우를 출력할 때 사용되는 연산자가 LIKE이다.
SELECT *
FROM DB 명.CUSTOMERS
WEHRE 주소 LIKE '%부산%';
%는 문자를 의미하는데, 해석하면 부산 앞, 뒤로 어떤 문자가 와도 상관없다는 뜻이 된다.
ex) classicmodels.customers의 addressline1에 ST가 포함된 addressline1을 출력하세요.
SELECT ADDRESSLINE1
FROM CLASSICMODELS.CUSTOMERS
WHERE ADDRESSLINE1 LIKE '%ST%';
4. GROUP BY
SELECT 제주 국가,
AVG(가격)
FROM DB 명.cars
GROUP
BY 제조 국가;
제조 국가별, 제조사별 평균 자동차 가격을 구하려면 어떻게 해야 할까?
SELECT 제조 국가,
제조사명,
AVG(가격)
FROM DB명.cars
GROUP
BY 제조 국가,
제조사명;
ex) classicmodels.customers 테이블을 이용해 국가, 도시별 고객 수를 구하세요.
SELECT COUNTRY,
CITY,
COUNT(CUSTOMERNUMBER) N_CUSTOMERS
FROM CLASSICMODELS.CUSTOMERS
GROUP
BY COUNTRY,
CITY;
'SQL 문법' 카테고리의 다른 글
[MYSQL] SQL 문법(JOIN,CASE WHEN,RANK,SUBQUERY) (1) | 2024.02.24 |
---|