SQL Server 요약 복습(1)

1.TVP,표 변수,임시 표,CTE 의 차이 TVP 와 임시 표 는 모두 색인 할 수 있 습 니 다.항상 tempdb 에 존재 하고 시스템 데이터 베이스 비용 을 증가 합 니 다.표 변수 와 CTE 는 메모리 가 넘 칠 때 만 tempdb 에 기 록 됩 니 다.데이터 양 이 많 고 반복 적 으로 사용 하 며 조회 와 관련 된 것 을 반복 할 경우 임시 표 나 TVP 를 사용 하 는 것 을 권장 합 니 다.데이터 양 이 적 고 표 변수 나 CTE 를 사용 하 는 것 이 좋 습 니 다.2.sqlvariant 만능 형식 은 모든 데이터 형식 을 저장 할 수 있 습 니 다.C\#중의 object 데이터 형식 3.datetime,datetime 2,datetime offset datetime 시간 유효기간 이 적 고 1753-1 이전에 사용 할 수 없습니다.정밀도 가 밀리초 단계 이 고 datetime 2 데이터 범 위 는 C\#중의 datetime 에 해당 합 니 다.정밀도 가 초 뒤의 소수점 후 7 자리 에 달 합 니 다.datetimeofset 은 시간 대의 날짜 유형 을 고려 합 니 다.4.MERGE 의 용법 문법 은 간단 합 니 다.주로 두 장의 표 의 일부 필드 를 비교 한 작업 을 처리 합 니 다.when not matched(by target)와 when not matched by source 의 차 이 를 주의해 야 합 니 다.전 자 는 대비 후 목표 표 에 존재 하지 않 는 기록 이 므 로 insert 작업 을 선택 할 수 있 습 니 다.후 자 는 비교 후 목표 표 가 많이 나 온 기록 에 대해 delete 또는 update 작업 을 선택 할 수 있 습 니 다.rowversion 형식 은 이전의 timestamp,시간 스탬프,8 바이트 바 이 너 리 값 을 대체 하여 동시 다발 작업 문 제 를 해결 하 는 데 자주 사 용 됩 니 다.6.Sysdatetime()은 datetime 2 유형 으로 돌아 가 정밀도 가 datetime 보다 7.with cube,with rollup,grouping sets 연산 자 는 group by 와 연 결 될 수 있 습 니 다.with cube 는 모든 등급 의 조합 을 모 으 고 with rollup 은 등급 에 따라 모 으 며 아래 코드 에서 차이 점 을 자세히 볼 수 있 습 니 다.주의,집합 줄,null 은 모든 값 으로 볼 수 있 으 며,grouping sets 연산 자 는 각 그룹의 최상 위 집합 줄 만 되 돌려 줍 니 다.조회 집합 줄 에서 grouping(문단 이름)=1 을 사용 하여 판단 할 수 있 습 니 다.이 연산 자 는 rollup,cube 와 연결 할 수 있 습 니 다.grouping by sets 와 rollup/cube 에 따라 처 리 된 결과 집합 유 니 온 all 예제 코드 는 다음 과 같 습 니 다.연결 표 의 하위 조 회 를 대체 하여 구조 적 차원 이 더욱 뚜렷 하고 재 귀적 조회 에 도 사용 할 수 있 습 니 다.또한 교묘 한 상수 열 을 통 해 재 귀적 차원 의 예제 코드 는 다음 과 같 습 니 다
 
With cube, With rollup
--
declare @t table(goodsname VARCHAR(max) ,sku1name VARCHAR(max) , sku2name VARCHAR(max), qty INT)
insert @t select ' TX',' ','S',1
insert @t select ' TX',' ','S',2
insert @t select ' TX',' ','L',3
insert @t select ' ',' ','L',4
insert @t select ' ',' ','S',5
insert @t select ' ',' ','L',6
insert @t select ' ',' ','L',7
insert @t select ' ',' ','S',8
SELECT * FROM @t
select goodsname,sku1name,sku2name,sum(qty) sumqty
from @t
group by goodsname,sku1name,sku2name with rollup
ORDER BY goodsname,sku1name,sku2name
select goodsname,sku1name,sku2name,sum(qty) sumqty
from @t
group by goodsname,sku1name,sku2name with cube
ORDER BY goodsname,sku1name,sku2name
-----------------------
declare @t table(goodsname VARCHAR(max) ,sku1name VARCHAR(max) , sku2name VARCHAR(max), qty INT)
insert @t select ' TX',' ','S',1
insert @t select ' TX',' ','S',2
insert @t select ' TX',' ','L',3
insert @t select ' ',' ','L',4
insert @t select ' ',' ','S',5
insert @t select ' ',' ','L',6
insert @t select ' ',' ','L',7
insert @t select ' ',' ','S',8
--GROUPING SETS
SELECT goodsname,sku1name,sku2name, SUM(qty) FROM @t GROUP BY GROUPING SETS(goodsname,sku1name,sku2name)
SELECT goodsname, sku1name, sku2name ,SUM(qty) FROM @t
GROUP BY GROUPING SETS(goodsname), ROLLUP(sku1name,sku2name)
ORDER BY goodsname,sku1name,sku2name
SELECT goodsname, sku1name, sku2name ,SUM(qty) FROM @t
GROUP BY ROLLUP(goodsname,sku1name,sku2name)
ORDER BY goodsname,sku1name,sku2name
SELECT CASE WHEN GROUPING(goodsname) = 1 THEN '[ALL]' ELSE goodsname END goodsname,
CASE WHEN GROUPING(sku1name) = 1 THEN '[ALL]' ELSE sku1name END sku1name,
CASE WHEN GROUPING(sku2name) = 1 THEN '[ALL]' ELSE sku2name END sku2name ,SUM(qty) FROM @t
GROUP BY GROUPING SETS(goodsname), ROLLUP(sku1name,sku2name)
ORDER BY goodsname,sku1name,sku2name
10.pivot 와 unpivot 전 자 는 행 열 에 사 용 됩 니 다.주의:반드시 집합 함수 로 PIVOT 와 함께 사용 해 야 합 니 다.모임 을 계산 할 때 값 열 에 나타 난 어떠한 빈 값 도 고려 하지 않 습 니 다.일반적인 상황 에서 열 에 있 는 하위 조회 로 pivot 문 구 를 대체 할 수 있 습 니 다.그러나 이렇게 하면 효율 이 높 지 않 습 니 다.후 자 는 열 에서 줄 을 바 꿀 수 있 습 니 다.주의:만약 에 일부 열 에 null 값 이 있 으 면 걸 러 지고 새로운 줄 이 생기 지 않 습 니 다.문법 적 으로 For 전에 지정 한 새 열 은 원래 표 에서 지정 한 열 이름 의 값 에 대응 합 니 다.For 후에 지정 한 새 열 은 원래 표 에서 지정 한 열 이름 의 제목 의 값 에 대응 합 니 다.둘 다 공통점 이 있 습 니 다.문법 적 으로 마지막 에 별명 이 있어 야 합 니 다.IN 에서 지정 한 열 형식 은 일치 해 야 합 니 다.예시 코드 는 다음 과 같다.

좋은 웹페이지 즐겨찾기