AI 시대 DB 모델링 & SQL 완벽 마스터3-1 SELECT 의 본질
테크타니 LEARN — 섹션 03 · SQL 핵심 문법 — 한방 압축

모든 SQL의 출발점,
SELECT 는 "꺼낸다"입니다

섹션 3 시작입니다. AI가 SQL을 만들어주는 시대에도, 우리는 SQL을 읽을 줄 알아야 검증할 수 있어요 — 그래서 핵심 문법만 빠르게 압축합니다. 첫 강의는 가장 기본인 SELECT. 본질은 한 문장이면 끝나고, 나머지는 DBeaver에서 직접 쳐보면 됩니다.

난이도쉬움소요5분준비물2-3 완료 (shop DB)도구DBeaver

이번 섹션의 여정

3-1 SELECT 의 본질

지금 여기

3-2 ~ 3-3

WHERE · ORDER BY/LIMIT

3-4 ~ 3-5

GROUP BY · HAVING

3-6 ~ 3-8

JOIN ⭐ · CASE/서브쿼리

섹션 4 — DB 모델링

강의 메인

SELECT 는 “꺼낸다” — 한 문장이면 끝

자, 한 문장으로 끝납니다.

SELECT 한 줄 정의

SELECT 는 “데이터베이스에서 데이터를 꺼낸다”는 명령입니다. 그게 다예요. 모든 SQL이 여기서 출발합니다.

기본 형태는 이렇습니다.

SELECT
  [꺼낼 컬럼]
FROM
  [어느 테이블];

순서대로 읽으면 — “이 테이블에서, 이 컬럼들을 꺼내.” 끝. 영어 그대로예요.

SELECT 읽는 법
SELECT member_name FROM members;
 
SELECT = 고른다 FROM = ~로부터
 
"members 테이블로부터, 이름을 고른다" — 이게 SELECT 의 전부
시작 전 체크
2-3 완료 — shop DB에 5테이블 적재됨
DBeaver 실행 + MySQL 연결
막히면? 2-4에서 만든 AI 과외 선생님 세션

첫 쿼리 — SELECT * 로 전부 꺼내기

DBeaver에서 새 SQL Editor를 열고(F3) 첫 쿼리를 칩니다. 실행은 Ctrl + Enter.

SELECT
  *
FROM
  members;

*모든 컬럼을 의미해요. “members 의 모든 컬럼을 다 꺼내.”

DBeaver — SQL Editor (Ctrl + Enter)
SELECT * FROM members;
member_idmember_namegenderagejoined_at
1김철수M352025-01-15
2이영희F282025-02-03
3박민수M422025-02-10
20백서윤F212026-04-02
20 rows fetched — 회원 20명의 모든 정보가 표로 뜹니다

축하합니다 — 방금 첫 SELECT를 직접 실행했습니다. 2-3에서 넣어둔 회원 20명이 전부 나오면 성공이에요.

실무에선 필요한 컬럼만 — 그리고 AS 별칭

근데 매번 * 를 쓰면 안 됩니다. 두 방식의 차이를 먼저 보세요.

✕ 확인용으로만

SELECT * — 일단 다 꺼내

데이터가 수십만·수백만 행으로 커지면 느려집니다. 어떤 컬럼이 나올지 쿼리만 봐서는 알 수도 없어요. 테이블 구조를 잠깐 확인할 때만.

✓ 실무 습관

필요한 컬럼만 명시

SELECT member_name, age — 꺼낼 것만 꺼내니 빠르고, 쿼리만 봐도 의도가 읽힙니다. 지금부터 이 습관을 들이세요.

SELECT
  member_name,
  age
FROM
  members;

이름과 나이만 꺼냅니다. 여기에 한 가지 더 — 별칭(AS). 컬럼 이름이 영어라 보기 불편하면, 출력 헤더만 한글로 바꿔서 보여줄 수 있어요.

SELECT
  product_name AS 상품명,
  price AS 가격
FROM
  products;
DBeaver — 결과 그리드
SELECT product_name AS 상품명, price AS 가격 FROM products;
상품명가격
라운드 티셔츠19000
슬림핏 청바지49000
후드 집업65000
30 rows fetched — 결과 표의 헤더가 한글로 바뀌었습니다
AS 는 헤더만 바꿉니다

테이블의 실제 컬럼 이름이 바뀌는 게 아니라 출력 헤더만 바뀌어요. AI에게 결과를 보여주거나 보고서를 만들 때 바로 읽히는 표가 돼서 정말 유용합니다. AS 는 생략도 되지만(product_name 상품명), 명시적으로 쓰는 게 가독성에 좋아요.

DISTINCT — 30행이 5행으로

자주 쓰는 키워드 하나 더. products 테이블에는 상품이 30개 있지만, 카테고리는 5종류뿐이잖아요. 상품마다 달린 category_id 를 그냥 꺼내면 같은 값이 잔뜩 중복돼 나옵니다. DISTINCT 는 중복을 제거해줘요.

SELECT DISTINCT
  category_id
FROM
  products;

DISTINCT 없이 SELECT category_id FROM products; 를 실행하면 1, 1, 1, 1, 2, 2 … 같은 값이 30행 가득 나옵니다. DISTINCT 를 붙이면 —

DBeaver — 결과 그리드
SELECT DISTINCT category_id FROM products;
category_id
1
2
3
4
5
5 rows fetched — 30행이 5행으로, 중복이 사라졌습니다

산술 연산 — 저장 값은 그대로, 출력만 가공

마지막 하나. SELECT 절에서 컬럼끼리 계산도 됩니다. 10% 할인가를 즉석에서 만들어볼게요.

SELECT
  product_name,
  price,
  price * 0.9 AS 할인가
FROM
  products;
DBeaver — 결과 그리드
SELECT product_name, price, price * 0.9 AS 할인가 FROM products;
product_nameprice할인가
라운드 티셔츠1900017100
슬림핏 청바지4900044100
후드 집업6500058500
30 rows fetched — 할인가 컬럼이 즉석에서 계산됐습니다
개념 — 원본은 안 건드립니다

테이블에 저장된 값을 바꾸는 게 아니라, 출력 결과에 새 컬럼을 만드는 것입니다. 쿼리를 아무리 돌려도 products 의 가격은 그대로예요. 연산자는 + - * / 모두 됩니다.

한눈에 정리

키워드역할예시
SELECT *모든 컬럼SELECT * FROM members;
SELECT a, b특정 컬럼만SELECT member_name, age FROM members;
AS헤더 별칭SELECT price AS 가격 FROM products;
DISTINCT중복 제거SELECT DISTINCT category_id FROM products;
+ - * /산술 연산SELECT price * 0.9 AS 할인가 FROM products;

이게 SELECT 의 전부예요 — 데이터를 꺼내는 명령.

여기까지가 SELECT — 꺼내는 명령의 전부입니다. 하지만 “전체 회원이 아니라 30대 이상만 꺼내고 싶다” 처럼 조건이 들어가면? 그게 다음 강의 WHERE 입니다. 그 전에, 방금 배운 걸 연습 문제로 손에 먼저 익히고 가요.

NEXT LESSON3-1 연습 문제

SELECT · AS · DISTINCT · 산술 연산 — 방금 배운 네 가지를 shop DB에서 직접 쳐보며 손에 익힙니다.

GO ▸ 연습 문제 풀기