이 튜토리얼에서는 SQL Server에서 SELECT 문(T-SQL)을 사용하는 방법을 문법과 예제를 통해 자세히 설명합니다.
SELECT는 SQL Server 데이터베이스에서 하나 이상의 테이블로부터 원하는 결과를 조회할 때 사용하는 가장 기본적인 명령어입니다.
SELECT 문 기본 문법
SELECT 문의 간단한 형태는 다음과 같습니다:
SELECT '표현식'
FROM '테이블'
[WHERE '조건'];
전체 형태의 SELECT 문은 다음과 같습니다:
SELECT [ALL | DISTINCT]
[TOP (값) [PERCENT] [WITH TIES]]
'표현식'
FROM '테이블'
[WHERE '조건']
[GROUP BY '표현식']
[HAVING '조건']
[ORDER BY '표현식' [ASC | DESC]];
주요 매개변수 및 키워드 설명
ALL — 선택 사항. 조건에 일치하는 모든 레코드를 반환합니다.
DISTINCT — 선택 사항. 결과 집합에서 중복된 값을 제거하고 고유한 값만 반환합니다.
TOP (값) — 선택 사항. 지정하면 결과 집합에서 처음 N개의 행을 반환합니다. 예를 들어 TOP (10)은 첫 10행을 반환합니다.
PERCENT — 선택 사항. 결과 집합 전체를 기준으로 지정된 백분율만큼의 상위 행을 반환합니다. 예를 들어 TOP (10) PERCENT는 전체 결과의 상위 10%를 반환합니다.
WITH TIES — 선택 사항. 지정하면 마지막 행과 동일한 정렬 값을 가진 추가 행들도 함께 반환됩니다. 이 경우 TOP에서 지정한 개수보다 더 많은 행이 반환될 수 있습니다.
표현식 — 조회하고자 하는 열 또는 계산된 값입니다. 모든 열을 가져오려면 *(아스타리스크)를 사용합니다.
테이블 — 결과를 가져올 대상 테이블입니다. FROM 절에는 최소 1개의 테이블이 반드시 지정되어야 합니다.
WHERE '조건' — 선택 사항. 반환되는 결과가 반드시 충족해야 하는 조건을 지정합니다.
GROUP BY '표현식' — 선택 사항. 여러 레코드의 데이터를 하나 이상의 열 기준으로 그룹화합니다.
HAVING '조건' — 선택 사항. GROUP BY와 함께 사용되며, 조건이 TRUE인 그룹만 결과로 반환합니다.
ORDER BY '표현식' — 선택 사항. 결과 집합을 정렬합니다. ASC는 오름차순, DESC는 내림차순 정렬을 의미합니다.
예제 1: 테이블의 모든 필드 조회하기
SELECT *
FROM hangtonkho
WHERE soluong > 5
ORDER BY hangtonkho_id ASC;
이 예제에서는 *를 사용하여 hangtonkho(재고) 테이블에서 soluong(수량)이 5보다 큰 모든 필드를 조회합니다. 결과 집합은 hangtonkho_id를 기준으로 오름차순 정렬됩니다.
예제 2: 테이블의 일부 필드만 조회하기
SELECT hangtonkho_id, hangtonkho_type, soluong
FROM hangtonkho
WHERE hangtonkho_id >= 555
AND hangtonkho_type = 'phanmem'
ORDER BY soluong DESC, hangtonkho_id ASC;
위 예제에서는 hangtonkho 테이블에서 ID가 555 이상이고 재고 유형이 'phanmem'(소프트웨어)인 레코드에 한해 ID, 유형, 수량(hangtonkho_id, hangtonkho_type, soluong)만 조회합니다. 결과는 수량을 기준으로 내림차순, 재고 ID를 기준으로 오름차순 정렬됩니다.
예제 3: 여러 테이블에서 데이터 조회하기
SELECT hangtonkho.hangtonkho_id, sanpham.sanpham_ten, hangtonkho.soluong
FROM hangtonkho
INNER JOIN sanpham
ON hangtonkho.sanpham_id = sanpham.sanpham_id
ORDER BY hangtonkho_id;
이 예제에서는 INNER JOIN을 사용해 두 개의 테이블을 연결하여 hangtonkho_id, sanpham_ten(제품명), soluong을 조회합니다. hangtonkho 테이블과 sanpham(제품) 테이블의 sanpham_id 값이 일치하는 경우에만 결과에 포함되며, 결과는 hangtonkho_id를 기준으로 오름차순 정렬됩니다.
예제 4: TOP 키워드 활용하기
SELECT TOP (3)
hangtonkho_id, hangtonkho_type, soluong
FROM hangtonkho
WHERE hangtonkho_type = 'phanmem'
ORDER BY hangtonkho_id ASC;
이 예제에서는 hangtonkho 테이블에서 재고 유형이 'phanmem'인 레코드 중 처음 3개만 반환합니다. 조건에 맞는 레코드가 더 있더라도 나머지는 반환되지 않습니다.
예제 5: TOP PERCENT 키워드 활용하기
SELECT TOP (10) PERCENT
hangtonkho_id, hangtonkho_type, soluong
FROM hangtonkho
WHERE hangtonkho_type = 'phanmem'
ORDER BY hangtonkho_id ASC;
반환되는 결과는 hangtonkho 테이블에서 재고 유형이 'phanmem'인 전체 레코드 중 상위 10%입니다. 나머지 90%의 결과는 반환되지 않습니다.