본문 바로가기

반응형

프로그래밍/MSSQL 정리필요

(22)
[DB_MSSQL] return, break, goto RETURN, BREAK, GOTO RETURN쿼리 실행 종료 쿼리문을 수행하다가 RETURN;을 만나게되면 더 이상 다음 쿼리문을 수행하지 않고 끝이난다. 예제 DECLARE @Cnt INT = 500; -- 첫 번째 UPDATE문 UPDATE TEST_A SET 가격 = @Cnt WHERE Seq = 1 IF (@Cnt < 1000) BEGIN RETURN; -- 여기서 쿼리문을 빠져나감 -- 즉 아래에 있는 2번 쿼리문을 수행하지 않는다. END -- 두 번째 UPDATE문 UPDATE TEST_A SET 가격 = @Cnt WHERE Seq = 2 다음과 같은 쿼리문 실행 시 첫 번째 UPDATE문에 해당하는 쿼리문은 수행된다.그러나 @Cnt의 값이 500 이므로 RETURN; 을 만나게 되면서 두..
[DB_MSSQL] WHERE LIKE '%Parameter%' (LIKE절에 파라미터 사용) 조건절 LIKE 에서 파라미터값을 사용해보자 첫 번째 방법 LIKE '%' + @Parameter + '%' DECLARE @Str VARCHAR(10) = '문자' -- '문자' / NULL SELECT * FROM 테이블명 WHERE (@Str '' AND 컬럼명 LIKE '%' + @Str + '%') OR (@Str IS NULL AND 파라미터 없을때 조건) 두 번째 방법 SET @Parameter = '%' + @Parameter + '%' DECLARE @Str VARCHAR(10) = '문자' -- '문자'/ NULL SET @Str = '%' + @Str + '%' SELECT * FROM 테이블명 WHERE (@Str '' AND 컬럼명 LIKE @Str) OR (@Str IS NULL..
[DB_MSSQL] INDEX 인덱스 빠른 쿼리 실행을 돕는 인덱스에 대해 알아보자 인덱스란? 테이블을 만들고 데이터를 입력/수정/삭제 할 때 데이터의 레코드는 내부적으로 순서 없이 힙 (Heap) 영역에 저장된다.만약 인덱스가 없는 테이블의 데이터를 찾을때는 무조건 레코드의 처음부터 차례대로 다 읽으며 데이터를 찾게된다.이를 테이블 스캔(Table Scan) 또는 풀 스캔(Full Scan)이라고 하며, 처리 성능은 좋지 않다. 인덱스는 데이터를 빠르게 조회할 수 있도록 돕는다.책으로 따지면 목차라고 할 수 있다.어떤 페이지를 찾을 때 첫 페이지부터 한 장씩 살피는 것이 아니라, 목차를 보고 찾으면 빨리 찾을 수 있지 않은가 그것과 같다. 클러스터드 인덱스 (Clustered Index)- 테이블 당 한 개만 생성 가능하다.- 범위 검색과..
[DB_MSSQL] 일/주/월/년도/요일 별로 카운트 일별, 주별, 월별, 년도별, 요일별로 카운트를 계산해보자 DATEPART, DATENAME 함수를 이용한다. 일별/주별/월별/년도별/요일별 -- 일 단위로 카운트 SELECT DATEPART(DAY, 날짜), COUNT(*) FROM 테이블명 GROUP BY DATEPART(DAY, 날짜) -- 주 단위로 카운트 SELECT DATEPART(WEEK, 날짜), COUNT(*) FROM 테이블명 GROUP BY DATEPART(WEEK, 날짜) -- 월 단위로 카운트 SELECT DATEPART(MONTH, 날짜), COUNT(*) FROM 테이블명 GROUP BY DATEPART(MONTH, 날짜) -- 년 단위로 카운트 SELECT DATEPART(YEAR, 날짜), COUNT(*) FROM 테이블명..
[DB_MSSQL] 돈 금액 천단위 콤마 찍기 돈 금액에 콤마를 찍어보자 돈 금액을 출력하고자 하는데, 100000 다음과 같이 보여준다면 얼마인지 바로 확인하기가 불편하다.이를 100,000 다음과 같이 콤마를 찍어서 조금 더 보기 편하도록 만들어보자 -- 1단계) MONEY형으로 컨버팅 SELECT CONVERT(MONEY,10000000) AS 'MONEY형' -- 2단계) 콤마를 찍기 위해 VARCHAR형으로 다시 컨버팅 SELECT CONVERT(VARCHAR,CONVERT(MONEY,10000000),1) AS 'VARCHAR형' -- 3단계) 소수점 두자리 (.00)을 제거하길 원하는 경우 SELECT REPLACE(CONVERT(VARCHAR,CONVERT(MONEY,10000000),1), '.00', '') AS '1) 소수점 두자..

반응형