데이터 분석가, 개발자, 웹 개발자 등 IT 분야 종사자라면 누구나 알고 있어야 하는 SQL! 그중에서도 데이터 검색과 분석에 핵심적인 역할을 하는 Select, From, Where, GroupBy, OrderBy, Having
등 6가지 기본 명령어에 대해 자세히 알아보도록 하자
설치하기 힘든 분들을 위해 🖱️W3Schools SQL을 통해 연습까지 할 수 있도록 작성했습니다.
사이트는 기본 영어로 설정되어 있으며, 영어가 낯설다면 아래처럼 언어를 한글로 변경해서 사용해 보시기 바랍니다.
(크롬) 마우스 우클릭 → 한국어 번역
0. 순서 : 순서는 꼭! 지켜야 합니다.
다 사용할 필요는 없지만 순서가 잘못되면 오류가 납니다.
Select - From - Where - Group by - Having - Order by
1. Select : 원하는 데이터를 선택하자!
- 기능: 테이블(Table)에서 특정 열(Column)의 데이터를 선택합니다. 모든 열을 가져오려면 별모양
*(apostrophe)
을 입력하면 됩니다.
예시 및 해설 : CustomerName, City라는 열을 가져 오시오. 🖱️(실습)
SELECT CustomerName, City FROM Customers;
(왼쪽 사진) 전체 7개 Column 중 (오른쪽 사진)원하는 특정 Column (CustomerName, City)만 불러올 수 있다! 얼마나 편리하고 좋은가요!
2. From : 어디서 찾을까?
- 기능: 데이터를 가져올 테이블을 지정합니다.
예시 및 해설 : From을 통해 특정 DB (데이터 베이스)의 테이블(Table)을 정한 후, Select으로 선택을 할 수 있는 것이다.
SELECT name FROM students;
아래 예시처럼 여러 Table을 불러올 수 있다. (여기서 불러온 테이블은 Customers와 Orders라는 테이블이다.
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID
ORDER BY Customers.CustomerName;
3. Where : 조건에 맞는 데이터만!
- 기능: 데이터 검색 조건을 설정합니다. (쉽게 엑셀, 구글시트 등의
필터(Filter)기능
이라고 생각해 주세요)
예시 및 해설 : Customers 테이블에서 Country가 Mexico인 데이터 전체() 가져오기 *🖱️(실습)**
SELECT * FROM Customers
WHERE Country='Mexico';
(토글을 눌러 주세요) 📌Pro Tip
Where
조건절 사용 시 주의 사항
1) 문자(Text Fields) vs 숫자 형식(Numeric Fields)
- 문자 : ‘’ (single quotes) 로 문자를 감싸야 한다.
SELECT * FROM Customers
WHERE Country='Mexico';
- 숫자 : ‘’ (single quotes) 없어야 한다.
SELECT * FROM Customers
WHERE CustomerID=1;
2) 연산자(Operators)
: ~보다 크다, 작다 등을 나타낼 때 사용
SELECT * FROM Customers
WHERE CustomerID > 80;
Operator | Description | 설명 (한글) |
= | Equal | 동일 |
> | Greater than | 보다 큼 |
< | Less than | 보다 작음 |
>= | Greater than or equal | 보다 크거나 같음 |
<= | Less than or equal | 보다 작거나 같음 |
<> | Not equal. Note: In some versions of SQL this operator may be written as != | 같지 않음 |
BETWEEN | Between a certain range | 특정 범위 사이 |
LIKE | Search for a pattern | 패턴 검색 |
IN | To specify multiple possible values for a column | 열에 대해 여러 가능한 값을 지정 |
4. GroupBy: 데이터를 그룹화해서 분석하기
- 기능: 특정 열을 기준으로 데이터를 그룹화하는 것입니다. Group by는 집계함수 (aggregate functions) -
COUNT()
,MAX()
,MIN()
,SUM()
,AVG()
등과 함께 자주 사용됩니다.
*(간단히 말해, 엑셀의 PivotTable을 통해 그룹별로 데이터를 정리하는 것이라고 생각하면 됩니다. 예를 들어, RAW데이터를 → 주간 | 매출(합계)로 변환)*
예시: RAW데이터를 나라별(Country) CustomerID 개수의 합 + ID의 값이 큰 순서로 정렬 (Order by)🖱️(실습)
SELECT Country,COUNT(CustomerID)
FROM Customers
GROUP BY Country
ORDER BY COUNT(CustomerID) DESC;
5. Having: 그룹화된 데이터 분석
- 기능: GroupBy와 함께 사용하여 그룹화된 데이터에 대한 조건을 설정합니다.
The HAVING clause was added to SQL because the WHERE keyword cannot be used with aggregate functions.
💡WHERE VS HAVING
의 차이 : Where 이 집계함수와 함께 할 수 없기 때문에 집계(Group by) → 이후에 조건을 붙이려면HAVING
을 사용해야 한다.
From - Where vs Groupby - Having
잘못된 예시
: (왼쪽) 나라면 개수의 합계 → (오른쪽 - 조건) COUNT(CustomerID) ≥13 이상인 경우를 찾고 싶다. 이럴 때 WHERE
을 사용하면 에러가 나고, Having
을 써야 한다.
예시 및 해설: 나라(Country)의 CustomerID개수의 합계가 10이상인 경우 🖱️(실습)
SELECT Country, COUNT (CustomerID)
FROM Customers
GROUP BY Country
HAVING COUNT (CustomerID) > 10
ORDER BY COUNT (CustomerID) desc;
6. OrderBy: 결과 정렬하기
- 기능: 데이터를 특정 열 기준으로 정렬합니다. (실무에서는 가능하면 늘 정렬을 해서 주는 게 보기에 좋다!)
ASC
와 DESC
는 SQL에서 데이터 정렬에 사용됩니다. ASC
는 오름차순, DESC
는 내림차순 정렬을 의미합니다.
예시 및 해설 : 전체를 불러오면서, 순서는 Country 열은 내림차순, CustomerID는 오름 차순 🖱️(실습)
SELECT * FROM Customers
ORDER BY Country DESC, CustomerID ASC;
결과를 보면 좀 더 이해하기 편할 것이다. Country를 먼저 보면 내림차순
(문자는 알파벳 역순 V → U로 시작)CustomerID는 오름차순
(숫자 1,2,..33,35,36)
우리가 이 글에서 배운 6가지 기본 명령어들이 바로 SQL 데이터 분석의 핵심입니다. 이 명령어들을 활용하면 기본적인 데이터 분석 작업이 어렵지 않을 거예요. 지금 당장 SQL 공부를 시작하여 데이터 분석 능력을 더욱 향상해 봅시다!
- W3Schools SQL Tutorial: https://www.w3schools.com/sql/
'데이터 분석 > SQL(Structured Query Language)' 카테고리의 다른 글
SQL Test 무료 연습 ! 프로그래머스(programmers) (0) | 2024.02.27 |
---|---|
SQL WHERE vs HAVING의 차이 (실전 문제) (0) | 2024.02.21 |