SQL 문법

[MYSQL] SQL 문법(SELECT,FROM,WHERE,GROUP BY)

Everyday Happy ❤︎ 2024. 2. 23. 12:34

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