목록전체 글 (171)
IT Log
구문 일반적으로 아래 구문을 사용하여 . ^ $ * + ? {} \ [] | () . (Dot) 기본적으로 \n를 제외한 모든 문자와 일치하는 문자 ^ 기본적으로 문자열에 시작을 나타내며, [] 안에서 사용되는 경우 부정문으로 쓰임 $ 기본적으로 문자열 끝의 개행(\n)직전과 일치 * 선행문자 0개 이상 일치 + 선행문자 1개 이상 일치 ? 선행문자 0개 또는 1개 일치 {} 선행문자 일치 수를 지정 {m} : m개 일치 {m,n} : m ~ n개 일치 {,n} : 0 ~ n개 일치 {m,} : m ~ 무한대 일치 {m,n} : m ~ n개 중 가장 먼저 해당하는 내용만 일치 \ 특수문자를 표현하기 위해 특수문자 앞에 지정, '\숫자'인 경우 해당 그룹을 나타냄 [] 문자 집합을 표현하며, []안에 특수..
성능 개선 사항 프로시저 본문에서 'SET NOCOUNT ON'을 사용 > 출력이 최소 수준으로 유지 스키마 이름을 사용 > 개체이름 확인 처리시간 감소 및 권한/액세스 문제 방지 WHERE 및 JOIN 절에서 지정한 열을 함수로 묶지 않기 > 묶일 경우, 비결정적 열이 되어 인덱스를 사용할 수 없음 대량의 행을 반환하는 SELECT문은 스칼라 함수 사용하지 않기 > 스칼라 함수는 모든 행에 적용되어 행 기반 처리와 비슷한 동작이 발생하여 성능저하됨 SELECT * 사용을 피하기 > DB엔진 오류 방지 너무 많은 데이터를 처리하거나 반환하지 않기 > 네트워크를 통해 불필요한 데이터를 보내지 않아 효율적 BEGIN/COMMIT 트랜잭션을 사용하여 명시적 트랜잭션을 사용하고, 짧게 유지 > 트랜잭션이 길면 ..
※ 구문 규칙 참고 규칙 설명 기울임꼴 사용자가 제공하는 매개 변수 굵게 각종 이름및 텍스트를 그대로 정확히 입력 | (세로줄) 구문 항목을 구분하며, 항목 중 하나만 사용 가능 (선택사항) {} (중괄호) 필수 구문이며, 중괄호는 입력하지 않음 [] 생략이 가능한 구문 [ , ...n] 앞의 항목이 n번 반복 가능하며, 각 항목은 쉼표로 구분 [ ... n] 앞의 항목이 n번 반복 가능하며, 각 항목은 공백으로 구분 ; SQL문 종결자로, 대부분 생략하지만 이후 버전에서는 필요 ::== 구문 블록의 이름 ※ 간단 구문 설명 구문 설명 기본 구문 CREATE PROCEDURE 매개변수 전달 @parameter = 기본값 / OUTPUT / 테이블 반환 매개변수 형식 / CURSOR VARYING 데이터 ..
BEGIN...END BREAK CONTINUE GOTO IF...ELSE RETURN THROW TRY...CATCH WAITFOR WHILE BEGIN...END 중첩 가능 BEGIN { sql_statement | statement_block } END 예시 USE AdventureWorks2012 GO BEGIN TRANSACTION GO IF @@TRANCOUNT = 0 BEGIN SELECT FirstName, MiddleName FROM Person.Person WHERE LastName = 'Adams'; ROLLBACK TRANSACTION; PRINT N'Rolling back the transaction two times would cause an error.'; END; ROLLBA..
논리 함수 CHOOSE CHOOSE ( index, val_1, val_2 [, val_n ] ) 예시 -- 3번째 항목 반환 예시 SELECT CHOOSE ( 3, 'Manager', 'Director', 'Developer', 'Tester' ) AS Result; Result ------------- Developer (1 row(s) affected) -- 열을 기반으로 하는 예제 USE AdventureWorks2012; GO SELECT ProductCategoryID, CHOOSE (ProductCategoryID, 'A','B','C','D','E') AS Expression1 FROM Production.ProductCategory; ProductCategoryID Expression1 ..
Cursor 함수 @@CURSOR_ROWS 열려있는 마지막 커서에서 한정하는 행 수를 반환 마지막 Cursor가 비동기적으로 열린 경우 음수를 반환 반환 값 설명 -m 커서가 비동기식으로 채워짐. 반환되는 값은 현재 키 집합에 있는 행의 개수 -1 동적 커서. 모든 변경사항을 반영하므로 커서가 한정하는 행의 수는 계속 변함. 0 열린 커서가 없거나 마지막으로 열린 커서에 한정된 행이 없거나 닫히거나 할당 취소됨 n 커서가 완전히 채워짐. 반환되는 값은 커서에 있는 행의 총 개수 @@CURSOR_ROWS 예시 USE AdventureWorks2012; GO SELECT @@CURSOR_ROWS; -- 열린커서가 없으므로, 0 DECLARE Name_Cursor CURSOR FOR SELECT LastNam..
CURSOR 결과 집합을 한 번에 한 행씩 순차적으로 처리하는 구조 예시 DECLARE vend_cursor CURSOR FOR SELECT * FROM Purchasing.Vendor OPEN vend_cursor FETCH NEXT FROM vend_cursor; SET NOCOUNT ON; DECLARE @vendor_id INT, @vendor_name NVARCHAR(50), @message VARCHAR(80), @product NVARCHAR(50); PRINT '-------- Vendor Products Report --------'; DECLARE vendor_cursor CURSOR FOR SELECT VendorID, Name FROM Purchasing.Vendor WHERE Pr..
변환 함수 CAST / CONVERT / PARSE -- 데이터 형식을 다른 데이터 형식으로 변환 CAST ( expression AS data_type [ ( length ) ] ) CONVERT ( data_type [ ( length ) ] , expression [ , style ] ) PARSE ( string_value AS data_type [ USING culture ] ) TRY_CAST / TRY_CONVERT / TRY_PARSE -- 데이터 형식을 다른 데이터 형식으로 변환, 변환실패 시 NULL을 반환 TRY_CAST ( expression AS data_type [ ( length ) ] ) TRY_CONVERT ( data_type [ ( length ) ] , expressi..