SELECT 문(1)
기본적인 <SELECT... FROM>
SELECT 문의 구문 형식
/* []는 생략 가능 */
[WITH <common_table_expression>] -- 공통 테이블 표현식을 정의
SELECT select_list [INTO new_table] -- 선택한 컬럼을 반환하고, 선택적으로 새로운 테이블에 저장
[FROM table_source] -- 데이터를 가져올 테이블을 지정
[WHERE search_condition] -- 조건에 맞는 행을 필터링
[GROUP BY group_by_expression] -- 행을 그룹화
[HAVING search_condition] -- 그룹화된 행을 필터링
[ORDER BY order_expression [ASC|DESC]] -- 결과를 정렬
구문 요소 | 설명 |
---|---|
WITH <common_table_expression> | 공통 테이블 표현식을 정의 (생략 가능) |
SELECT select_list [INTO new_table] | 선택한 컬럼을 반환, INTO ... 선택적으로 새로운 테이블에 저장 |
FROM table_source | 데이터를 가져올 테이블을 지정 |
WHERE search_condition | 조건에 맞는 행을 필터링 |
GROUP BY group_by_expression | 행을 그룹화 |
HAVING search_condition | 그룹화된 행을 필터링 |
ORDER BY order_expression [ASCㅣDESC] | 결과를 정렬, ASC = 오름차순 / DESC = 내림차순 |
가장 간단한 SELECT 형식
SELECT 열목록
FROM 테이블
WHERE 조건
USE 구문
USE 데이터베이스_이름
SELECT와 FROM
USE
구문과 SELECT
구문을 사용하는 예제.
USE Adventureworks
SELECT * FROM HumanResources.Employee
SELECT * FROM [HP-PC].AdventureWorks.
HumanResources.Employee
SELECT Name, GroupName FROM
HumanResources.Department
위 예제에서는 Adventureworks
데이터베이스를 사용하고,
HumanResources.Employee
테이블과
HumanResources.Department
테이블에서
데이터를 선택하는 방법
DB 이름, 스키마이름, 테이블 이름 등이 정확히 기억나지 않을 때
데이터 베이스 목록 조회
EXEC sp_helpdb;
테이블 정보 조회
EXEC sp_tables @table_type = "'TABLE'";
열 이름 조회
EXEC sp_columns
@table_name= ‘테이블이름’,
@table_owner= ‘스키마이름’;
조건조회 <SELECT...FROM...WHERE>
기본적인 WHERE 절
SELECT 필드이름 FROM 테이블이름 WHERE 조건식
관계연산자의 사용
SELECT userID, name FROM userTbl
WHERE birthYear >= 1970 AND height >= 182
userTbl 테이블에서 userID와 name을 검색
여기서 birthYear는 1970보다 크고 키는 182보다 커야한다
BETWEEN... AND와 IN()
/* height를 조건으로 180과 183 사이인 사용자 검색 */
SELECT name, height FROM userTbl WHERE height
BETWEEN 180 AND 183
/* addr이 '경남', '전남', '경북' 중 하나인 사용자 검색 */
SELECT name, addr FROM userTbl WHERE addr IN ('경남', '전남', '경북')
ANY / ALL / SOME 그리고 하위쿼리(SubQuery, 서브쿼리)
/* '경남'에 주소를 둔 사용자의 키 중 하나 이상과 같거나 큰 사용자의 이름과 키를 선택합니다. */
SELECT name, height FROM userTbl
WHERE height >= ANY (SELECT height FROM userTbl WHERE addr = '경남')
/* '경남'에 주소를 둔 사용자의 키 중 하나와 정확히 같은 사용자의 이름과 키를 선택합니다. */
SELECT name, height FROM userTbl
WHERE height = ANY (SELECT height FROM userTbl WHERE addr = '경남')
ORDER BY
순서대로 정렬
/* mDate 순서대로 정렬하여 userTbl 에서 name, mDate 조회 */
SELECT name, mDate FROM userTbl ORDER BY mDate
DISTINCT
중복 제거
/* userTbl 에서 addr 컬럼의 중복을 제외한 조회 */
SELECT DISTINCT addr FROM userTbl
TOP(N)
상위 N개만 출력
SELECT TOP(10) CreditCardID FROM Sales.CreditCard
SELECT TOP(0.1) PERCENT CreditCardID FROM
Sales.CreditCard
TABLESAMPLE
일정 샘플 추출
SELECT * FROM Sales.SalesOrderDetail
TABLESAMPLE(5 PERCENT)
SELECT INTO
테이블 복사에 주로 사용
SELECT 복사할열 INTO 새로운_테이블 FROM 기존_테이블
SELECT * INTO buyTbl2 FROM buyTbl
OFFSET과 FETCH NEXT
지정한 행의 수만큼 건너 뛴 후에 출력
SELECT userID, name, birthYear FROM userTBL
ORDER BY birthYear
OFFSET 4 ROWS
FETCH NEXT 3 ROWS ONLY