PromleeBlog
sitemap
aboutMe

posting thumbnail
SQL 조회 문법 총정리 (코딩테스트 대비)
Arranging Lookup SQL Syntax (For Coding Test)

📅

🚀

들어가기 전에 🔗

SQL이란? 🔗

SQL(Structured Query Language)은 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어입니다. SQL은 데이터베이스 스키마 생성 및 수정, 데이터 입력 및 수정, 데이터베이스 객체 접근 제어 등을 위한 명령어를 제공합니다.
쉽게 말해
데이터베이스에서 데이터를 조회하거나 조작하기 위한 언어
라고 할 수 있습니다. 우리는 이번에 자주 사용되는 SQL 문법을 총정리해보겠습니다.

DB 및 테이블 구성 요소 🔗

들어가기 전, 데이터베이스 및 테이블의 구성 요소에 대해 간단히 알아보겠습니다.
데이터베이스(Database, DB)는 여러 개의 테이블(Table)로 이루어져 있습니다. 각 테이블은 행(Row)과 열(Column)로 구성되며, 테이블을 구성하는 요소들은 다음과 같습니다.

예제 테이블 🔗

id(pk)nameageemail
1홍길동25hong@example.com
2이동훈27donghoon099@naver.com
3햄랑이14hamlang@ham.ham
4홍길은25

🚀

SELECT / FROM / WHERE 🔗

SELECT
는 데이터베이스에서 원하는 데이터를 조회할 때 사용하는 가장 기본적인 명령어입니다.
➡️

SELECT 🔗

SELECT name, age FROM Users;
nameage
홍길동25
이동훈27
햄랑이14
홍길은25
➡️

WHERE 🔗

WHERE
절을 사용하면 특정 조건을 만족하는 데이터만 가져올 수 있습니다.
SELECT name FROM Users WHERE age >= 20;
name
홍길동
이동훈
홍길은

🚀

GROUP BY / HAVING / ORDER BY 🔗

데이터를 그룹으로 묶거나 정렬할 때 사용하는 문법입니다.
➡️

GROUP BY 🔗

특정 컬럼을 기준으로 데이터를 그룹화할 때 사용합니다.
SELECT age, COUNT(*) FROM Users GROUP BY age;
ageCOUNT(*)
252
271
141
➡️

HAVING 🔗

GROUP BY로 그룹화한 데이터에서 특정 조건을 걸 때 사용합니다.
SELECT age, COUNT(*) FROM Users GROUP BY age HAVING COUNT(*) > 1;
ageCOUNT(*)
252
WHERE
: GROUP BY 전에 조건을 적용 (개별 행 필터링)
HAVING
: GROUP BY 후 결과 그룹에 조건 적용 (그룹 필터링)
➡️

ORDER BY 🔗

조회한 데이터를 정렬할 때 사용합니다.
SELECT name, age FROM Users ORDER BY age DESC;
nameage
이동훈27
홍길동25
홍길은25
햄랑이14

🚀

JOIN / INNER JOIN / OUTER JOIN 🔗

데이터베이스에서 여러 개의 테이블을 합쳐서 조회할 때 사용합니다.
Orders 테이블을 추가로 생성하고, Users 테이블과 Orders 테이블을 조인하는 예제를 살펴보겠습니다.
id(pk)user_id(fk)product
11Apple
22Banana
31Orange
43Pineapple
54Watermelon
61Strawberry
72Grape
83Melon
94Mango
➡️

INNER JOIN 🔗

Inner Join은 두 테이블에서 일치하는 데이터만 가져옵니다.
SELECT Users.name, Orders.product
FROM Users
INNER JOIN Orders ON Users.id = Orders.user_id;
nameproduct
홍길동Apple
이동훈Banana
홍길동Orange
햄랑이Pineapple
홍길은Watermelon
홍길동Strawberry
이동훈Grape
햄랑이Melon
홍길은Mango
➡️

LEFT JOIN 🔗

Left Join은 왼쪽 테이블(Users)의 데이터는 모두 가져오고, 오른쪽 테이블(Orders)의 데이터는 일치하는 것만 가져옵니다.
SELECT Users.name, Orders.product
FROM Users
LEFT JOIN Orders ON Users.id = Orders.user_id
WHERE Orders.product IN ('Apple', 'Banana', 'Orange');
nameproduct
홍길동Apple
이동훈Banana
홍길동Orange
햄랑이

🚀

UNION / UNION ALL 🔗

두 개 이상의 SELECT 결과를 합칠 때 사용합니다.
Employees 테이블을 추가로 생성하고, Users 테이블과 Employees 테이블을 합치는 예제를 살펴보겠습니다.
id(pk)namedepartment
1홍길동개발팀
2이동훈마케팅팀
3홍길은개발팀
4김철수디자인팀
5박영희마케팅팀
6이순신개발팀
SELECT name FROM Users UNION SELECT name FROM Employees;
name
홍길동
이동훈
햄랑이
홍길은
김철수
박영희
이순신

🚀

COUNT / SUM / AVG 🔗

데이터의 개수, 합, 평균을 구할 때 사용하는 문법입니다.
➡️

COUNT 🔗

데이터의 개수를 구할 때 사용합니다.
SELECT COUNT(*) FROM Users;
COUNT(*)
4
➡️

SUM 🔗

데이터의 합을 구할 때 사용합니다.
SELECT SUM(age) FROM Users;
SUM(age)
91
➡️

AVG 🔗

데이터의 평균을 구할 때 사용합니다.
SELECT AVG(age) FROM Users;
AVG(age)
22.75

🚀

MAX / MIN 🔗

데이터의 최대값, 최소값을 구할 때 사용하는 문법입니다.
➡️

MAX 🔗

데이터의 최대값을 구할 때 사용합니다.
SELECT MAX(age) FROM Users;
MAX(age)
27
➡️

MIN 🔗

데이터의 최소값을 구할 때 사용합니다.
SELECT MIN(age) FROM Users;
MIN(age)
14

🚀

IN / BETWEEN / LIKE 🔗

조건에 따라 데이터를 조회할 때 사용하는 문법입니다.
➡️

IN 🔗

특정 값들 중 하나에 해당하는 데이터를 조회할 때 사용합니다.
SELECT name FROM Users WHERE age IN (25, 27);
name
홍길동
이동훈
홍길은
➡️

BETWEEN 🔗

특정 범위에 해당하는 데이터를 조회할 때 사용합니다.
SELECT name FROM Users WHERE age BETWEEN 20 AND 30;
name
홍길동
이동훈
홍길은
➡️

LIKE 🔗

특정 패턴에 해당하는 데이터를 조회할 때 사용합니다.
SELECT name FROM Users WHERE name LIKE '홍%';
name
홍길동
홍길은

🚀

COALESCE / CASE 🔗

데이터가 NULL인 경우를 처리할 때 사용하는 문법입니다.
➡️

COALESCE 🔗

NULL인 경우 대체할 값을 지정할 때 사용합니다.
SELECT COALESCE(email, '이메일 없음') FROM Users;
COALESCE(email, '이메일 없음')
hong@example.com
donghoon099@naver.com
hamlang@ham.ham
이메일 없음
➡️

CASE 🔗

조건에 따라 다른 값을 반환할 때 사용합니다.
SELECT name, CASE WHEN age >= 20 THEN '성인' ELSE '미성년자' END AS age_group FROM Users;
nameage_group
홍길동성인
이동훈성인
햄랑이미성년자
홍길은성인

🚀

DISTINCT / LIMIT 🔗

중복된 데이터를 제거하거나 조회할 데이터 개수를 제한할 때 사용하는 문법입니다.
➡️

DISTINCT 🔗

중복된 데이터를 제거할 때 사용합니다.
SELECT DISTINCT age FROM Users;
age
25
27
14
➡️

LIMIT 🔗

조회할 데이터 개수를 제한할 때 사용합니다.
SELECT name FROM Users LIMIT 2;
name
홍길동
이동훈

🚀

서브쿼리 🔗

쿼리 안에 또 다른 쿼리를 넣어 사용하는 방법입니다.
SELECT name FROM Users WHERE age = (SELECT MAX(age) FROM Users);

🚀

결론 🔗

SQL은 데이터베이스를 다룰 때 필수적인 언어이며, 코딩 테스트에서도 자주 출제됩니다. 다양한 명령어를 익히고 실습하면서 SQL 실력을 키워 보도록 합시다.

더 생각해 보기 🔗

참고 🔗