데이터를 다루는 사람이라면 한 번쯤은 접하게 되는 언어, 바로 SQL입니다.
SQL(Structured Query Language)은 말 그대로 ‘구조화된 질의 언어’로, 데이터베이스에 저장된 정보를 조회, 수정, 삭제, 추가하는 데 사용됩니다.
그중에서도 가장 기본이자 핵심이 되는 구문이 바로 SELECT ... FROM ...
입니다.
이번 글에서는 SQL의 가장 기본이 되는 SELECT 문을 중심으로, 초보자도 바로 이해할 수 있도록 예제와 함께 단계별로 정리해보겠습니다.
1. SELECT FROM의 기본 구조
SQL에서 데이터를 조회할 때 사용하는 기본 문법은 아래와 같습니다.
SELECT 컬럼명
FROM 테이블명;
- SELECT: 어떤 컬럼(열)을 보고 싶은지 지정합니다.
- FROM: 데이터를 가져올 ‘테이블 이름’을 지정합니다.
즉,
“어떤 테이블에서 무엇을 보여줄지”를 명령하는 문장입니다.
예를 들어 고객 정보를 저장한 테이블이 CUSTOMERS
라면, 다음과 같이 작성할 수 있습니다.
SELECT NAME, CITY
FROM CUSTOMERS;
이 구문은 CUSTOMERS 테이블에서 ‘이름(NAME)’과 ‘도시(CITY)’ 컬럼을 불러옵니다.
2. 전체 컬럼을 조회하고 싶다면?
컬럼 이름을 일일이 적기 귀찮다면 *
기호를 사용할 수 있습니다.
SELECT *
FROM CUSTOMERS;
*
는 “모든 컬럼을 보여줘”라는 뜻입니다.
다만 실제 업무 환경에서는 필요한 컬럼만 선택하는 것이 좋습니다.
그 이유는
- 속도 저하
- 불필요한 데이터 노출
- 가독성 저하
와 같은 단점이 있기 때문입니다.
3. SELECT FROM + WHERE: 조건 걸기
모든 데이터를 가져오기보단, 특정 조건을 만족하는 데이터만 보고 싶을 때가 많습니다.
이때 사용하는 구문이 WHERE
입니다.
SELECT NAME, CITY
FROM CUSTOMERS
WHERE CITY = 'Seoul';
이 쿼리는 CITY
가 ‘Seoul’인 고객만 보여줍니다.
또는 여러 조건을 조합할 수도 있습니다.
SELECT NAME, AGE
FROM CUSTOMERS
WHERE CITY = 'Seoul' AND AGE > 30;
이 구문은 서울에 살면서 30세 이상인 고객만 조회합니다.
4. SELECT FROM + ORDER BY: 정렬하기
조회된 결과를 정렬하고 싶을 때는 ORDER BY
를 사용합니다.
SELECT NAME, AGE
FROM CUSTOMERS
ORDER BY AGE DESC;
- ASC: 오름차순 (기본값)
- DESC: 내림차순
즉, 위의 예제는 나이가 많은 순으로 고객을 정렬해 보여줍니다.
5. SELECT FROM + LIMIT: 개수 제한
결과가 너무 많을 때는 LIMIT
으로 출력 개수를 제한할 수 있습니다.
SELECT *
FROM CUSTOMERS
LIMIT 5;
이 쿼리는 상위 5개의 데이터만 보여줍니다.
참고로 MySQL, PostgreSQL 등에서는 LIMIT
을 사용하지만,
Oracle에서는 ROWNUM
, SQL Server에서는 TOP
키워드를 대신 사용합니다.
6. SELECT FROM + DISTINCT: 중복 제거
중복된 값을 제거하고 싶을 때는 DISTINCT
를 사용합니다.
SELECT DISTINCT CITY
FROM CUSTOMERS;
이 구문은 CUSTOMERS
테이블에 있는 도시 목록에서 중복을 제거해 보여줍니다.
7. SELECT FROM + AS: 컬럼 이름 바꾸기
조회 결과의 컬럼 이름을 보기 좋게 바꾸고 싶다면 AS
를 사용합니다.
SELECT NAME AS 고객명, CITY AS 거주지
FROM CUSTOMERS;
결과창에서는 고객명
, 거주지
라는 이름으로 표시됩니다.
이는 분석 리포트나 대시보드용 SQL을 작성할 때 자주 활용되는 문법입니다.
8. 예시 테이블로 한눈에 정리
CUSTOMER_ID | NAME | AGE | CITY |
---|---|---|---|
1 | 김철수 | 35 | Seoul |
2 | 이영희 | 29 | Busan |
3 | 박민수 | 42 | Seoul |
4 | 최지은 | 30 | Incheon |
예시 1
SELECT NAME, CITY
FROM CUSTOMERS;
→ 결과
NAME | CITY |
---|---|
김철수 | Seoul |
이영희 | Busan |
박민수 | Seoul |
최지은 | Incheon |
예시 2
SELECT NAME
FROM CUSTOMERS
WHERE CITY = 'Seoul';
→ 결과
NAME |
---|
김철수 |
박민수 |
9. 정리
문법 | 기능 | 예시 |
---|---|---|
SELECT | 조회할 컬럼 지정 | SELECT NAME, AGE |
FROM | 데이터를 가져올 테이블 지정 | FROM CUSTOMERS |
WHERE | 조건 설정 | WHERE AGE > 30 |
ORDER BY | 정렬 | ORDER BY AGE DESC |
LIMIT | 결과 개수 제한 | LIMIT 10 |
DISTINCT | 중복 제거 | SELECT DISTINCT CITY |
AS | 별칭 설정 | SELECT NAME AS 고객명 |
마무리
SELECT FROM
은 모든 SQL 문법의 출발점입니다.
데이터를 ‘조회한다’는 행위는 분석, 리포팅, 서비스 개선의 첫 단계이기도 합니다.
다음 포스팅에서는 JOIN
, GROUP BY
, HAVING
과 같이
여러 테이블을 연결하거나 데이터를 집계하는 구문을 다뤄보겠습니다.
이 글로 기초를 확실히 다져두면 그다음 단계부터 훨씬 수월해질 거예요.