모든 SQL의 출발점,
SELECT 는 "꺼낸다"입니다
섹션 3 시작입니다. AI가 SQL을 만들어주는 시대에도, 우리는 SQL을 읽을 줄 알아야 검증할 수 있어요 — 그래서 핵심 문법만 빠르게 압축합니다. 첫 강의는 가장 기본인 SELECT. 본질은 한 문장이면 끝나고, 나머지는 DBeaver에서 직접 쳐보면 됩니다.
이번 섹션의 여정
지금 여기
WHERE · ORDER BY/LIMIT
GROUP BY · HAVING
JOIN ⭐ · CASE/서브쿼리
강의 메인
SELECT 는 “꺼낸다” — 한 문장이면 끝
자, 한 문장으로 끝납니다.
SELECT 는 “데이터베이스에서 데이터를 꺼낸다”는 명령입니다. 그게 다예요. 모든 SQL이 여기서 출발합니다.
기본 형태는 이렇습니다.
SELECT
[꺼낼 컬럼]
FROM
[어느 테이블];순서대로 읽으면 — “이 테이블에서, 이 컬럼들을 꺼내.” 끝. 영어 그대로예요.
첫 쿼리 — SELECT * 로 전부 꺼내기
DBeaver에서 새 SQL Editor를 열고(F3) 첫 쿼리를 칩니다. 실행은 Ctrl + Enter.
SELECT
*
FROM
members;* 는 모든 컬럼을 의미해요. “members 의 모든 컬럼을 다 꺼내.”
| member_id | member_name | gender | age | joined_at |
|---|---|---|---|---|
| 1 | 김철수 | M | 35 | 2025-01-15 |
| 2 | 이영희 | F | 28 | 2025-02-03 |
| 3 | 박민수 | M | 42 | 2025-02-10 |
| ⋮ | ||||
| 20 | 백서윤 | F | 21 | 2026-04-02 |
축하합니다 — 방금 첫 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;| 상품명 | 가격 |
|---|---|
| 라운드 티셔츠 | 19000 |
| 슬림핏 청바지 | 49000 |
| 후드 집업 | 65000 |
| ⋮ | |
테이블의 실제 컬럼 이름이 바뀌는 게 아니라 출력 헤더만 바뀌어요. 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 를 붙이면 —
| category_id |
|---|
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
산술 연산 — 저장 값은 그대로, 출력만 가공
마지막 하나. SELECT 절에서 컬럼끼리 계산도 됩니다. 10% 할인가를 즉석에서 만들어볼게요.
SELECT
product_name,
price,
price * 0.9 AS 할인가
FROM
products;| product_name | price | 할인가 |
|---|---|---|
| 라운드 티셔츠 | 19000 | 17100 |
| 슬림핏 청바지 | 49000 | 44100 |
| 후드 집업 | 65000 | 58500 |
| ⋮ | ||
테이블에 저장된 값을 바꾸는 게 아니라, 출력 결과에 새 컬럼을 만드는
것입니다. 쿼리를 아무리 돌려도 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 입니다. 그 전에, 방금 배운 걸 연습 문제로 손에 먼저 익히고 가요.