일반 SQL 서적이나 강의들을 보면
SQL 파트 시작 때 Table을 생성하는 CREATE문, 데이터를 추가하는 INSERT문을 배우고
이후 SELECT문을 배운 뒤 UPDATE, DELETE, DROP 등 수정/삭제에 필요한 SQL을 배우는 수순으로 진행됩니다.
하지만, 막상 실무에 와 보면
가장 많이 사용하게 되고 이것만 잘 알아도 반은 간다 싶은게 사실 SELECT문이죠 (개발자나 DBA가 아닌 이상)
실제로 시스템 운영 담당자로 일하던 때에도
신규 기능을 개발하거나 데이터에 큰 이슈가 생겨 조작이 필요했던 때 아닌 이상 데이터 조작을 할 일이 잘 없었습니다.
개발 직군 아닌 분들이 SQL 로 데이터 조회만 하셨던 경우도 많았구요
그래서 '엑셀로 배우는 SQL' 편에서는 SELECT문 위주로 가볍게 다뤄볼까 합니다.
SELECT 문 구성
서론이 길었네요, 이전 게시물(https://jieunkkim.tistory.com/31)에서 했던
음료 재고표 얘기로 돌아가 볼게요
앞서 엑셀로 음료 재고표를 만들고,
이 재고표를 DB Table로 만들어 SELECT 문으로 간단히 조회해 봤습니다.

SELECT 문의 대략적인 구성은 이렇습니다.
SELECT * -- 조회할 컬럼 정보 (*는 전체 컬럼 조회를 의미)
FROM beverage_stock -- 조회할 테이블 정보
WHERE name = '콜라' -- 조회 조건
ORDER BY no ASC; -- 조회 결과 정렬 조건
SELECT 는 조회할 컬럼을 나열할 때 사용하는 키워드 입니다.
만약 제가 name만 조회하고 싶다면 'SELECT name'이라 적습니다.
* 는 Asterisk (아스타 리스크) 또는 줄여서 '아스타'라고 불리며 모든 컬럼을 조회하겠다는 의미를 담고 있어요
FROM 은 조회할 Table 이름을 적는 곳입니다.
위 예제는 이전 미리 만들어 둔 beverage_stock이란 Table에서 조회하겠단 뜻이에요
WHERE 는 앞서 적은 Table에서 어떤 조건으로 데이터를 검색할지 나타낼 때 사용되는 키워드 입니다.
위 예제에서는 name의 값이 '콜라'인 데이터를 찾겠다는 조건이네요
ORDER BY 는 처음 등장하는 구문인데요. 조회 결과가 여러 건일 경우,
해당 결과들을 어떤 순서로 정렬해서 출력시킬 건지 나타낼 때 사용되는 키워드 입니다.
ASC는 오름차순, DESC는 내림차순을 나타내요. 위 예제는 no 오름차순으로 정렬하라고 하네요
SELECT 문을 읽는 순서
이전에 SQL문은 마치 영어 문장같다고 얘기드렸던 적이 있어요.
한글 문장, 영어 문장의 주어/술어/목적어 위치가 다르듯 SQL도 읽는 순서가 조금 다른데요
읽는 순서는 아래와 같습니다.
FROM (and JOIN) - WHERE - GROUP BY - HAVING - SELECT - ORDER BY - LIMIT
저희가 배운 부분만 추려보면
FROM - WHERE - SELECT - ORDER BY
어떤 Table로 부터 - 어떠한 조건으로 - 어떤 Column 들을 조회한다 - 어떤 순서로
예제에 대입해 보면 아래 처럼 해석됩니다.
beverage_stock이란 Table로 부터 - name = '콜라' 조건으로 - 모든 컬럼을 조회한다 - no 오름차순 순서로
SELECT * -- 3. 전체 컬럼을 조회한다.
FROM beverage_stock -- 1. beverage_stock 이란 Table로 부터
WHERE name = '콜라' -- 2. name이 '콜라'와 같다는 조건으로
ORDER BY no ASC; -- 4. no 오름차순 순서로
SELECT 문을 읽는 순서는 당장엔 필요가 없지만, 나중에 쿼리가 더 복잡해 졌을 때 떠올리면 좋아요
SELECT 문 으로 일부 컬럼만 조회하기
만약 위 예제들에서 아스타 리스크 (*) 를 사용하지 않고,
일부 컬럼만 조회하려는 경우는 어떻게 해야 할까요?
SELECT문 구성 때 설명드렸던 대로 조회하고자 하는 Column 이름들을 SELECT 뒤에 나열해 주면 됩니다.
만약 beverage_stock Table에서 name과 price만 조회하고자 할 경우 (조건 없이) 아래 처럼 작성하면 되죠
읽는 순서까지 적용해 본 결과입니다.
SELECT name, price -- 2. name, price를 조회한다.
FROM beverage_stock -- 1. beverage_stock Table 로 부터
ORDER BY name ASC; -- 3. name 오름차순으로
Alias 활용하기
SQL에는 Alias 라는 개념이 있습니다. 일명 '별칭' 인데요.
DB에 정의된 Table 이름이나 Column 이름이 맘에 들지 않아서 출력된 결과엔 다른 이름을 사용하고 싶다 하는 경우,
또는 Back-End 개발 때 Column 이름과 Model을 맵핑할 때 Alias를 활용하기도 하죠
Alias는 AS 라는 키워드와 함께 사용됩니다. 사용 방법은 간단합니다.
이름을 재정의 하고자 하는 Table이나 Column 뒤에 AS를 붙이고 새 이름을 적어주면 됩니다.
beverage_stock 이라는 Table 이름이 너무 기니까 stock이라고 재정의 하고
name, price 는 한글로 각각 "이름", "가격"이라고 재정의 해볼게요

여기서 눈 여겨 볼 포인트가 몇 곳 있습니다.
Q. Column 영역엔 AS 가 붙어 있고, Table 영역엔 AS가 생략되어 있어요
A. AS라는 키워드는 사람마다 명시해서 쓰기도 하고, 생략해서 쓰기도 하는데요.
많은 SQL들이 Table에 AS 사용하는 걸 지원하고 있지만 Oracle은 Table에 AS를 허용하지 않는다고 해요.
Q. ORDER BY 에 name 대신 Alias인 "이름"이 적혀있어요
A. SELECT 문 읽는 순서를 미리 설명드린 이유인데요. SELECT 영역이 ORDER BY 보다 먼저 해석되기 때문에
ORDER BY 영역에서 SELECT 영역에 정의된 Alias를 가져다 쓸 수 있습니다.
추가로, 코멘트를 달면
Alias를 한글로는 잘 달지 않아요. 데이터 출력 결과를 엑셀 리포트로 뽑아야 할 때 아닌 이상
일반 데이터 조회 목적으로 또는 개발 목적으로 Alias 를 활용할 때는 보통 영어로 사용합니다.
나중에 배우겠지만 FROM에 Table을 여러 개 적어서 조회를 하기도 하는데 이럴 때 Table을 구분하기 위해
a, b, c, d 식으로 Alias 를 붙이기도 해요 (별로 좋지 않은 방법이라고 생각하지만.. )
Alias 심화
사실 위 내용으로만 봐선 Alias를 굳이? 써야 하나 싶기도 한데요.
심화 단계에서 배우겠지만, 이런 경우 Alias가 유용하게 쓰입니다. (스킵해도 좋습니다.)
아래와 같은 Table이 하나 더 있다고 가정하고
beverage_stock Table과 beverage_category Table을 JOIN해서 조회한다고 할 때,

두 Table 모두 name이란 동일한 이름의 Column을 가지고 있기 때문에
Table Alias를 걸고 name의 출처를 구분할 때 쓸 수 있고
만약 아래 예제에서 category.name까지 추가로 조회하고 싶을 경우
AS를 이용해서 stock.name과 다른 이름을 지어줄 수도 있죠.

정리
이번엔 SELECT 문 구성과 읽는 순서, Alias(별칭) 개념에 대해 알아봤습니다.
개인적으로 '읽는 순서'는 개념 공부할 때 잘 언급되지 않고 넘어가는 부분인데
저는 이 '읽는 순서'를 알고 나니 SQL이 더 보기 편했어서 내용에 넣어 봤습니다.
Alias 개념도 기초 땐 굳이 왜 사용하지? 싶은 개념이지만 실무에선 자주 활용되는 개념이라 길게 설명해 보았어요
다음 게시물부턴 이 과정에서 가장 중요하게 다룰 WHERE 절에 대해 올려 볼게요
SQL 전체적으로 봤을 때 WHERE 절을 두고 가장 중요할 건 아닌데?
하실 수 있겠지만 실무에 바로 뛰어 든다고 했을 때 저는 이 부분 활용도가 가장 높다고 생각해요
앞으로도 열심히 정리해 보겠습니다 🙂
[ 참고 ]
책 MySQL로 배우는 데이터베이스 개론과 실습
책 SQL 개발자 이론서 + 기출문제
'Database > 엑셀로 배우는 SQL 실무 - 입문' 카테고리의 다른 글
[SQL] 엑셀로 배우는 SQL - WHERE (=, !=, LIKE, NOT LIKE) (0) | 2023.01.02 |
---|---|
[SQL] 엑셀로 배우는 SQL - WHERE (=, >, <, !=, BETWEEN) (0) | 2022.12.30 |
[SQL] 엑셀로 배우는 SQL - Table, Column, Row (0) | 2022.12.28 |
[SQL] 엑셀로 배우는 SQL - SQL의 정의와 종류 (DDL, DML, DCL, TCL) (0) | 2022.12.27 |
[SQL] 엑셀로 배우는 SQL - 관계형 데이터베이스(RDB) (0) | 2022.12.26 |
댓글