-
[내일배움캠프-TIL] SQL 기초 문법 정리 — SELECT부터 ORDER BY까지SQL 2026. 9. 3. 20:05
오늘 학습 키워드
- SELECT / FROM
- 별명(alias)
- WHERE
- 비교연산자, BETWEEN, IN, LIKE
- 집계함수(SUM, AVG, COUNT, MIN, MAX)
- GROUP BY
- ORDER BY
오늘 학습한 내용을 나만의 언어로 정리
SQL 기초 문법
실습 환경과 테이블 개념
DBeaver를 설치해서 실습용 DB(sparta)에 연결하는 것부터 시작했다. 데이터베이스는 데이터를 담는 큰 폴더, 테이블은 그 안의 엑셀 파일 같은 존재이고, 테이블의 각 열을 컬럼(또는 필드)이라 부른다. 앞으로 계속 나오는 food_orders(주문), payments(결제), customers(고객) 세 테이블이 실습 재료다.
SELECT / FROM
SQL은 데이터베이스에 요청을 하기 위한 언어다. SELECT는 데이터를 가져오는 명령어, FROM은 어느 테이블에서 가져올지 지정하는 문법이고, *는 모든 컬럼을 뜻한다.
아래 구문이 SELECT 문의 가장 기본적인 구조다.
SELECT와 FROM은 반드시 있어야한다.
select *
from food_orders원하는 컬럼만 골라서 별명 붙이기
필요한 컬럼만 콤마로 나열해서 조회할 수 있고, as로 별명(alias)도 붙일 수 있다. 영문·언더바 별명은 그냥 적고, 특수문자나 한글 별명은 큰따옴표로 감싼다.
select order_id as ord_no,
restaurant_name "식당 이름"
from food_ordersWHERE로 조건 필터링
전체 데이터 중 조건에 맞는 행만 걸러내는 절이다. 숫자는 그대로, 문자는 작은따옴표로 감싸 비교한다. MySQL은 기본적으로 대소문자를 구분하지 않는데, 이건 DB마다 기본값(collation)이 달라서다 — SQLite·PostgreSQL은 구분하고, SQL Server·MySQL은 구분하지 않는다고 한다.
select *
from customers
where age=21비교연산자, BETWEEN, IN, LIKE
=, <>, >, >=, <, <= 같은 비교연산자에 더해, 범위를 지정하는 BETWEEN, 여러 값 중 하나라도 포함되면 조회하는 IN, 비슷한 값을 찾는 LIKE까지 WHERE 조건을 다양하게 줄 수 있다.
where age between 10 and 20
where age in (15, 21, 31)
where name like '김%'집계와 정렬
집계함수로 계산하기
+, -, *, / 같은 사칙연산 기호를 컬럼에 그대로 쓸 수 있고, 합계·평균은 SUM·AVG, 데이터 개수는 COUNT(DISTINCT로 중복 제거도 가능), 최솟값·최댓값은 MIN·MAX로 구한다.
select sum(food_preparation_time) as total_time,
avg(food_preparation_time) as avg_time
from food_ordersGROUP BY로 카테고리별 계산하기
음식 종류별 평균 가격처럼 카테고리별로 계산하려고 WHERE로 조건마다 쿼리를 나눠 짜는 건 비효율적이다. SELECT에 카테고리 컬럼과 집계함수를 같이 쓰고, 마지막에 GROUP BY로 그 카테고리 컬럼을 다시 지정하면 한 번의 쿼리로 끝낼 수 있다.
select cuisine_type, sum(price)
from food_orders
group by cuisine_typeORDER BY로 정렬하기
SQL 조회 결과는 따로 지정하지 않으면 항상 같은 순서로 나온다는 보장이 없다. ORDER BY로 기준 컬럼을 지정하면 정렬할 수 있는데, 아무것도 안 붙이면 오름차순, desc를 붙이면 내림차순이다.
select cuisine_type, sum(price)
from food_orders
group by cuisine_type
order by sum(price)'SQL' 카테고리의 다른 글
[내일배움캠프-TIL] SQL 포맷 함수 정리 — REPLACE·SUBSTRING·CONCAT부터 IF·CASE까지 (0) 2026.09.08