ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [내일배움캠프-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_orders

     

    WHERE로 조건 필터링

    전체 데이터 중 조건에 맞는 행만 걸러내는 절이다. 숫자는 그대로, 문자는 작은따옴표로 감싸 비교한다. 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_orders

     

    GROUP BY로 카테고리별 계산하기

    음식 종류별 평균 가격처럼 카테고리별로 계산하려고 WHERE로 조건마다 쿼리를 나눠 짜는 건 비효율적이다. SELECT에 카테고리 컬럼과 집계함수를 같이 쓰고, 마지막에 GROUP BY로 그 카테고리 컬럼을 다시 지정하면 한 번의 쿼리로 끝낼 수 있다.

    select cuisine_type, sum(price)
    from food_orders
    group by cuisine_type

     

    ORDER BY로 정렬하기

    SQL 조회 결과는 따로 지정하지 않으면 항상 같은 순서로 나온다는 보장이 없다. ORDER BY로 기준 컬럼을 지정하면 정렬할 수 있는데, 아무것도 안 붙이면 오름차순, desc를 붙이면 내림차순이다.

    select cuisine_type, sum(price)
    from food_orders
    group by cuisine_type
    order by sum(price)

Designed by Tistory.
🏠🏷️💬⬆️