알골의세계정복
[MSSQL] SELECT 문 기초 본문
SQL을 Select Query Language라고 할 정도로 SELECT의 역할은 중요하다. DB에 저장된 수 많은 데이터에서 내가 원하는 정보를 꺼내는 SELECT 문, 그 기초에 대해서 알아보도록 하자.
SELECT select_list
(INTO) table_name
FROM source_table_name
WHERE search_condition
GROUP BY group_by_expression
HAVING seach_condition
ORDER BY order_expression
기본적인 SELECT 문
SELECT 문의 가장 기본은 SELECT / FROM / WHERE 이다.
SELECT 나열할 컬럼 목록
FROM 가져올 테이블
[WHERE 가져올 행의 조건]
나열할 컬럼 목록에 전체 컬럼을 가져올 때 : *
일부 컬럼만을 가져올 때 : EXEC sp_help 테이블명, EXEC sp_columns 테이블명
임의의 컬럼 만들기
SELECT '책 번호 : ', title_id FROM titles;
- '책 번호' 라고 채워진 하나의 컬럼이 만들어진다.
컬럼 제목 바꾸기
SELECT title_id Title_no, Title_no = title_id, title_id AS Title_no, title_id AS [Title_no] FROM titles;
- as를 넣어도 되고, 빼도 된다.
- '=' 를 사용하게 되면 순서가 바뀐다.
- 제목에 공백이 있다면, '[' 와 ']' 를 사용하도록 하자. 따옴표를 사용해도 된다.
조건에 맞는 행 가져오기
=, >, <, >=, <=, <>, !=, !>, !<, IS NULL, IS NOT NULL
price IS NULL, price IS NOT NULL
정렬
ORDER BY column_list [ASC/DESC]
몇 개만 검색하기(TOP n)
SELECT TOP 5 title_id FROM titles;
같은 순위의 것을 모두 가져오고 싶으면 : WITH TIES (TOP 5 WITH TIES title_id)
퍼센트를 사용하고 싶으면 : PERCENT (TOP 5 PERCENT title_id)
범위
BETWEEN ... AND ...
WHERE qty BETWEEN 10 AND 20 or qty >= 10 and qty <= 20
목록
WHERE title_id IN ('BU1032', 'BU1111')
문자열 / LIKE와 패턴 매칭
WHERE title LIKE 'computer%'
_ : 어떤 것이든 한 문자가 와야 한다.
% : 아무것도 없는 경우를 포함하여 어떤것이 와도 상관없음
[] : [] 안에 문자
[^] : ^다음에 있는 문자 제외
중복된 행 제거 - DISTINCT
WHERE 절 을 사용할 때 고려할 것
- * 를 사용하지 말자. 전체 컬럼을 조회하는 것을 최대한 자제해라.
- 조건 검색 시, 연산자 앞에는 컬럼만 오도록 하자.