1. 데이터검색 - SELECT, ALIASRS, TOP, DISTINCT, WHERE, ORDER BY

2. 조건 연산자 - 부등호, AND/OR/NOT, NULL, BETWEEN, IN, LIKE, ALL/ANT/SOME

3. 집합 연산자 - UNION, INTERSECT, EXCEPT

4. 그룹 - GROUP BY, HAVING, PARTITION BY, ROLLUP/CUBE, PIVOT/UNPIVOT

5. 순위 함수 - ROW_NUMBER, RANK, DENSE_RANK

6. NULL함수 - NULLIF, ISNULL, COALESCE

7. 집계함수 - MAX/MIN, COUNT/AVG/SUM, COMPUTE

8. 문자열 함수

- ASCII / CHAR, REPLACE/STUFF/UPPER/LOWER/REVERSE/REPLICATE, LEFT/RIGHT/SUBSTRING, CHARINDEX/PATINDEX/LEN, LTRIM/TRTIM/SPACE

9. IS_ - ISNUMERIC, ISDATE

10. 수치 함수

11. 날짜/시간 - CURRENT_TIMESTAMP/GETDATE/SYSDATETIMEM, YEAR/MONTH/DAY, DATEADD/DATEDIFF, DATENAME/DATEPART

12. 조인 - (INNER) JOIN, LEFT(OUTER) JOIN, FULL(OUTER) JOIN, CROSS JOIN

13. 흐름제어 - IF/ELSE, CASE, GOTO, RETURN, WHILE/BREAK/CONTINUE, EXEC, SET

14. 암호화  - PWDENCRYPT, PWDCOMPARE, HASHBYTES

15. 형변환 - CAST, CONVERT

16. 오브젝트 - 데이터베이스, 테이블, 데이터, 뷰, 저장프로시저, 커서

 

 

# 데이터 검색
 
 [SELECT] 모든 컬럼 조회
  SELECT * FROM 테이블
 
 
 [SELECT/Aliasos] 특정컬럼 조회 및 별칭
  SELECT 컬럼1, 컬럼2 AS '별칭' FROM 테이블
 
 
 [TOP] 상위 N개의 데이터 조회
 
 SELECT TOP N * FROM 테이블 --N개의 데이터
 SELECT TOP N PERCENT * FROM 테이블 -- N%개의 데이터


[DISTINCT] 중복 제거
SELECT DISTINCT * FROM 테이블


[WHERE] 조건 데이터
SELECT * FROM 테이블 WHERE 조건


[ORDER BY] 정렬
SELECT * FROM 테이블 ORDER BY 컬럼 -- 디폴트 오름차순(ASC)
SELECT * FROM 테이블 ORDER BY 컬럼 ASC -- 오름차순 정렬
SELECT * FROM 테이블 ORDER BY 컬럼 DESC -- 내림차순 정렬
SELECT * FROM 테이블 ORDER BY 컬럼 ASC, 컬럼 DESE -- 복수 컬럼 정렬




# 조건절 연산자

[=,<>,>,>=,<,<=] 부등호
SELECT * FROM 테이블 WHERE 컬럼 = 'A' -- 컬럼의 값이 A인 데이터
SELECT * FROM 테이블 WHERE 컬럼 <> 'A' -- 컬럼의 값이 A가 아닌 데이터
SELECT * FROM 테이블 WHERE 컬럼 > 5 -- 컬럼의 값이 5보다 큰 데이터
SELECT * FROM 테이블 WHERE 컬럼 >= 5 -- 컬럼의 값이 5와 같거나 5보다 큰 데이터
SELECT * FROM 테이블 WHERE 컬럼 < 5 -- 컬럼의 값이 5보다 작은 데이터
SELECT * FROM 테이블 WHERE 컬럼 <= 5 -- 컬럼의 값이 5와 같거나 5보다 작은 데이터


[AND/OR/NOT] 논리함수
SELECT * FROM 테이블 WHERE 컬럼1 = 'A' AND 컬럼2 = 'B' -- 컬럼1의 값이 A이고, 컬럼2의 갖ㅅ이 B이다
SELECT * FROM 테이블 WHERE 컬럼1 = 'A' OR 컬럼2 = 'B' -- 컬럼1의 값이 A이거나 컬럼2의 값이 B이거나
SELECT * FROM 테이블 WHERE NOT 컬럼 = 'A' -- 컬럼의 값이 A가 아닌 데이터


[NULL]
SELECT * FROM 테이블 WHERE 컬럼 IS NULL -- 컬럼의 값이 NULL인 데이터
SELECT * FROM 테이블 WHERE 컬럼 IS NOT NULL --컬럼의 값이 NULL이 아닌 데이터


[BRTWEEN] 범위
SELECT * FROM 테이블 WHERE 컬럼 BETWEEN 5 AND 10 -- 컬럼의 값이 5와 10 사이인 데이터
SELECT * FROM 테이블 WHERE 컬럼 BETWEEN '2020-01-01' AND '2020-03-16' -- 컬럼값이 '2020-01-01' AND '2020-03-16' 사이인 데이터


[IN] 포함
SELECT * FROM 테이블 WHERE 컬럼 IN('A', 'B') --컬럼의 값이 A이거나, B인 데이터
SELECT * FROM 테이블 WHERE 컬럼1 IN (SELECT 컬럼2 FROM 테이블) -- 컬럼1의 값이 컬럼2인 데이터


[LIKE ( + Wildcards)] 패턴일치
SELECT * FROM 테이블 WHERE 컬럼 LIKE '%A%' -- 컬럼의 값에 A가 포함된 데이터
SELECT * FROM 테이블 WHERE 컬럼 LIKE 'A%' -- 컬럼의 값이 A로 시작하는 데이터
SELECT * FROM 테이블 WHERE 컬럼 LIKE '%A' -- 컬럼의 값이 A로 끝나는 데이터
SELECT * FROM 테이블 WHERE 컬럼 LIKE 'A%Z' -- 컬럼의 값이 A로 시작해서 Z로 끝나는 데이터
SELECT * FROM 테이블 WHERE 컬럼 LIKE '__A' -- 컬럼의 길이가 3이면서 세번째 값이 A인 데이터
SELECT * FROM 테이블 WHERE 컬럼 LIKE '_A%' -- 컬럼의 두번째 값이 A로 시작하는 데이터
SELECT * FROM 테이블 WHERE 컬럼 LIKE '[ABC]%' -- 컬럼의 값이 A 또는 B 또는 C 로 시작하는 데이터
SELECT * FROM 테이블 WHERE 컬럼 LIKE '[^ABC]%' -- 컬럼의 값이 A 또는 B 또는 C로 시작하지 않는 데이터
SELECT * FROM 테이블 WHERE 컬럼 LIKE '[A-D]%' -- 컬럼의 값이 (A~D) 로 시작하는 데이터
SELECT * FROM 테이블 WHERE 컬럼 LIKE '%[%]%' -- 컬럼의 값에 % 가 포함되는 데이터
SELECT * FROM 테이블 WHERE 컬럼 LIKE '%#%%' ESCAPE '#' -- 컬럼의 값에 % 가 포함되는 데이터(# 대신 모든 문자 사용 가능)


[ALL/ANY/SOME] 하위 쿼리에서 값을 둘 이상 반환했을 경우
SELECT * FROM 테이블 WHERE 컬럼 = ALL (SELECT 컬럼 FROM 테이블) -- 하위 쿼리에서 나온 결과 값을 모두 충족(AND)
SELECT * FROM 테이블 WHERE 컬럼 = ANY (SELECT 컬럼 FROM 테이블) -- 하위 쿼리에서 나온 결과 값에서 하나 이상 만족 (OR)
SELECT * FROM 테이블 WHERE 컬럼 = SOME (SELECT 컬럼 FROM 테이블) -- 하위 쿼리에서 나온 결과 값에서 하나 이상 만족 (OR)




# 집합연산자 *조건: 컬럼의 수가 일치해야 함

[UNION] 합집합
SELECT * FROM 테이블 -- 두 테이블의 결과를 합친 데이터(중복제거)
UNION
SELECT * FROM 테이블

SELECT * FROM 테이블 -- 두 테이블의 결과를 합친 데이터
UNION ALL
SELECT * FROM 테이블


[INTERSECT] 교집합
SELECT * FROM 테이블 -- 두 테이블의 일치하는 데이터
INTERSECT
SELECT * FROM 테이블


[EXCEPT] 차집합
SELECT * FROM 테이블 -- 첫번째 테이블을 기준으로 두번째 테이블과 중복을 제외한 데이터
EXCEPT
SELECT * FROM 테이블




# 그룹

[GROUP BY] 그룹
SELECT 컬럼 FROM 테이블 GROUP BY 컬럼 -- 조건: GROUP BY에서 지정한 컬럼만이 SELECT컬럼에 올 수 있음


[HAVING] 그룹 조건
SELECT 컬럼 FROM 테이블 GROUP BY 컬럼 HABING 조건 -- 그룹 함수의 조건 지정


[PARTITION BY] 테이블 분할
SELECT 순위함수 OVER(PARTITION BY 컬럼1 ORDER BY 컬럼2) FROM 테이블 -- 컬럼1을 기준으로 컬럼2 값의 순위를 매김 (학년별 등수)
SELECT 집계함수 OVER(PARTITION BY 컬럼) FROM 테이블 -- 테이블 전체의 집계가 아닌 컬럼을 기준으로 집계 (학년별로 총 점수)


[ROLLUP/CUBE] 그룸별 소계와 총 합계
SELECT 컬럼 FROM 테이블 GROUP BY 컬럼 WITH ROLLUP -- GROUP BY 에 있는 컬럼을 오른쪽에서 왼쪽순으로 그룹생성
SELECT 컬럼 FROM 테이블 GROUP BY ROLLUP(컬럼)
SELECT 컬럼 FROM 테이블 GROUP BY 컬럼 WITH CUBE -- 나올 수 있는 모든 경우의 수로 그룹 생성 (ROLLUP의 결과보다 더 상세함)
SELECT 컬럼 FROM 테이블 GROUP BY CUBE(컬럼)


[PIVOT/UNPIVOT] 행렬변환
SELECT 
컬럼 
FROM 
테이블 PIVOT([집계함수]([집계컬럼명]) FOR [대상 컬럼명] IN ([컬럼이 될 값])) AS 피벗테이블명

SELECT
컬럼
FROM
테이블 UNPIVOT([집계될 데이터의 컬럼명] FOR [UNPIVOT할 컬럼 데이터의 컬럼명] IN ([UNPIVOT할 컬럼명])) AS 언피번테이블명




# 순위 함수

[ROW_NUMBER]
SELECT ROW_NUMBER() OVER(ORDER BY 컬럼) FROM 테이블 -- 동일한 값이 있을 경우 순차적으로 순위를 매김(중복 순위 존재X)
SELECT ROW_NUMBER() OVER(ORDER BY (SELECT 1)) FROM 테이블 -- 정렬 조건 없이 SELECT 해서 나온 결과 그대로 순위를 매김

[RANK]
SELECT ROW_NUMBER() OVER(ORDER BY 컬럼) FROM 테이블 -- 중복 순위 적용 후 다음 순위 변동 (2등이 2명일 경우, 2명 모두 2등, 다음 등수는 4등)

[DENSE_RANK]
SELECT ROW_NUMBER() OVER(ORDER BY 컬럼) FROM 테이블 -- 중복 순위 적용 후 다음 순위 미변동 (2등이 2명일 경우: 2명 모두 2등, 다음 등수는 3등)




# NULL 함수

[NULLIF] 값 비교
SELECT NULLIF(컬럼1, 컬럼2) FROM 테이블 -- 컬럼1과 컬럼2의 값이 동일할 경우 NULL, 아닐 경우 컬럼1 반환)
ex. SELECT NULLIF(4, 4) -- 결과 NULL
ex. SELECT NULLIF(3, 4) -- 결과: 3

[ISNULL] 널 대체
SELECT ISNULL(컬럼1, 컬럼2) FROM 테이블 -- 컬럼1의 값이 NULL일 경우 컬럼2의 값 반환

[COALESCE] 널 체크
SELECT COALESCE(컬럼1, 컬럼2, 컬럼3...) FROM 테이블 -- 컬럼1, 컬럼2, 컬럼3... 첫번째로 NULL이 아닌 값 반환
ex. SELECT COALESCE(NULL, 4, 5) FROM 테이블 -- 결과: 4





# 집계 함수

[MAX/MIN] 최대/최소
SELECT MAX(컬럼) FROM 테이블 -- 컬럼의 최대값
SELECT MIN(컬럼) FROM 테이블 -- 컬럼의 최소값

[COUNT/AVG/SUM] 개수/평균/합계
SELECT COUNT(*) FROM 테이블 -- 전체 데이터 개수
SELECT COUNT(컬럼) FROM 테이블 -- 컬럼이 NULL이 아닌 데이터 개수
SELECT AVG(컬럼) FROM 테이블 -- 컬럼의 평균값
SELECT SUM(컬럼) FROM 테이블 -- 컬럼의 합계

[COMPUTE] 별도 집합 출력
SELECT 컬럼 FROM 테이블 COMPUTE 집계함수(컬럼)




# 문자열 함수

[ASCII/CHAR] 아스키코드
SELECT ASCII(문자열) -- 첫 번째 문자의 아스키 코드 반환
SELECT CHAR(값) -- 정수 아스키 코드의 문자를 반환

[REPLACE/STUFF/UPPER/LOWER/REVERSE/REPLICATE] 문자열 변경
SELECT REPLACE(문자열, 기존문자열, 대체문자열) -- 문자열 변경
SELECT STUFF(문자열, 시작위치, 길이, 대체문자열) --문자열에서 시작위치와 길이를 기준으로 문자열 변경
SELECT UPPER(문자열) -- 대문자로 반환
SELECT LOWER(문자열) -- 소문자로 반환
SELECT REVERSE(문자열) -- 문자열 역순으로 반환
SELECT REPLICATE(문자열, 숫자) -- 문자열을 지정한 수 만큼 복사

[LEFT/RIGHT/SUBSTRING] 문자열 자르기
SELECT LEFT(문자열, 숫자) -- 문자열에서 왼쪽부터 지정한 길이의 문자 반환
SELECT RIFHT(문자열, 숫자) -- 문자열에서  오른쪽부터 지정한 길이의 문자 반환
SELECT SUBSTRING(문자열, 시작위치, 길이) -- 문자열 자르기

[CHARINDEX/PATINDEX/LEN] 위치/길이
SELECT SHARINDEX(문자, 문자열,[시작위치]) -- 문자열에서 문자의 위치를 반환 (문자 이용)
SELECT PATINDEX(패턴, 문자열) -- 문자열에서 문자의 위치를 반환(패턴 이용)
ex. SELECT PARINDEX('%꽁%', '손꽁쥐10살') --결과 2
ex. SELECT PATINDEX(

'iT-Programing > MsSQL' 카테고리의 다른 글

[MSSQL] 전체 정리  (0) 2020.03.16

+ Recent posts