본문 바로가기
데이터 분석/SQL(Structured Query Language)

데이터베이스 분석의 필수 도구, SQL 기본 명령어 마스터하기!

by debugglinglife 2024. 2. 27.
728x90

데이터 분석가, 개발자, 웹 개발자 등 IT 분야 종사자라면 누구나 알고 있어야 하는 SQL! 그중에서도 데이터 검색과 분석에 핵심적인 역할을 하는 Select, From, Where, GroupBy, OrderBy, Having 등 6가지 기본 명령어에 대해 자세히 알아보도록 하자

 

설치하기 힘든 분들을 위해 🖱️W3Schools SQL을 통해 연습까지 할 수 있도록 작성했습니다.

사이트는 기본 영어로 설정되어 있으며, 영어가 낯설다면 아래처럼 언어를 한글로 변경해서 사용해 보시기 바랍니다.

(크롬) 마우스 우클릭 → 한국어 번역

Output1Output2

 

Output3

0. 순서 : 순서는 꼭! 지켜야 합니다.

다 사용할 필요는 없지만 순서가 잘못되면 오류가 납니다.

Select - From - Where - Group by - Having - Order by

Output4

1. Select : 원하는 데이터를 선택하자!

  • 기능: 테이블(Table)에서 특정 열(Column)의 데이터를 선택합니다. 모든 열을 가져오려면 별모양 *(apostrophe) 을 입력하면 됩니다.

예시 및 해설 : CustomerName, City라는 열을 가져 오시오. 🖱️(실습)

SELECT CustomerName, City FROM Customers;

(왼쪽 사진) 전체 7개 Column 중 (오른쪽 사진)원하는 특정 Column (CustomerName, City)만 불러올 수 있다! 얼마나 편리하고 좋은가요!

Output5Output6

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';

 

Output7

 

(토글을 눌러 주세요) 📌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;

Output8Output9

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을 써야 한다.

Output10Output11

 

 

예시 및 해설: 나라(Country)의 CustomerID개수의 합계가 10이상인 경우 🖱️(실습)

SELECT Country, COUNT (CustomerID)
FROM Customers
GROUP BY Country
HAVING COUNT (CustomerID) > 10
ORDER BY COUNT (CustomerID) desc;

Output12

 

6. OrderBy: 결과 정렬하기

  • 기능: 데이터를 특정 열 기준으로 정렬합니다. (실무에서는 가능하면 늘 정렬을 해서 주는 게 보기에 좋다!)

ASCDESC는 SQL에서 데이터 정렬에 사용됩니다. ASC는 오름차순, DESC는 내림차순 정렬을 의미합니다.

 

 

예시 및 해설 : 전체를 불러오면서, 순서는 Country 열은 내림차순, CustomerID는 오름 차순 🖱️(실습)

SELECT * FROM Customers
ORDER BY Country DESC, CustomerID ASC;

결과를 보면 좀 더 이해하기 편할 것이다. Country를 먼저 보면 내림차순 (문자는 알파벳 역순 V → U로 시작)
CustomerID는 오름차순 (숫자 1,2,..33,35,36)

 

Output14

 

우리가 이 글에서 배운 6가지 기본 명령어들이 바로 SQL 데이터 분석의 핵심입니다. 이 명령어들을 활용하면 기본적인 데이터 분석 작업이 어렵지 않을 거예요. 지금 당장 SQL 공부를 시작하여 데이터 분석 능력을 더욱 향상해 봅시다!

728x90