안녕하세요. SQLER의 코난 김대우입니다.
이번 강좌에서는, 10-2. T-SQL 프로그래밍 - 일괄처리(Batch)를 진행 하겠습니다.
SQLER에서 진행되는, 챗GPT와 함께 배우는 SQL Server 강좌 목록
이번에 진행할 강좌는 T-SQL 프로그래밍 - 일괄처리(Batch)입니다.
TL;DR
이번 강좌에서는 T-SQL 프로그래밍의 일괄처리(Batch)에 대해 설명합니다. 일반적인 배치 스크립트의 구성과 실행 원리를 이해하고, 배치 구문을 작성하고 실행하는 방법을 소개합니다.
SQL 강좌를 진행하면서 거의 모든 예제에서 등장한 구문이 있습니다. 바로 GO 구문입니다. 이 GO 구문은 무엇일까요?
일괄처리(배치작업 - Batch) 명령 실행 - GO
현업에서 일괄처리는 보통 배치작업이라고 부르며, 시간이 걸리는 긴 SQL 작업을 의미하기도 합니다. 하지만, 정확한 의미의 배치작업(Batch)은 현업에서 사용하는 용어와 약간 다릅니다.
우리가 SSMS나 SQLCMD와 같은 쿼리 도구에서 쿼리를 작성하고, 작성한 쿼리를 SQL Server 인스턴스로 요청하는 작업을 어떻게 식별할 수 있을까요? 예를 들어, 100 줄의 쿼리면 100줄을 한 번에 SQL Server 인스턴스로 보낼까요? 그렇지 않습니다.
바로 “GO” 명령이 배치 구문을 SQL Server 인스턴스로 전달하는 역할을 하게 됩니다. GO는 배치 종결자(Batch terminator)이라고 불리며, “;” 세미콜론은 명령 구문 종결자(Statement terminator)입니다. 여러 구문이 있을 때 GO 문을 만나면, GO 구문 전까지의 스크립트를 SQL Server로 보내고, 결과를 출력하거나 서버 작업을 한 다음 GO 구문 아래를 실행하게 됩니다. GO 구문을 풀어서 말하면, “여기까지 SQL 구문을 SQL Server로 보내서 실행해”라는 명령입니다.
SQL 스크립트(Script)
그렇다면 일반적으로 말하는 SQL 스크립트는 무엇일까요? 여러 배치 구문으로 이루어진 SQL 구문 집합을 의미합니다. 하나의 실행 단위처럼 보이지만, 정확히는 여러 개의 배치 구문으로 이루어져 있으며, 예를 들면, SQL Server의 예제 데이터베이스 설치 SQL 스크립트처럼 복잡한 스크립트부터, 이 강좌의 예제 구문에서 계속 사용된 - 일반적인 배치 구문 2~3개 정도의 작은 스크립트도 있습니다.
하나의 배치 안에서 같이 실행될 수 있는 명령들
|
이런 구문들은 하나의 배치 안에서 실행될 수 있으나, 아래 구문과 몇몇 작업은 하나의 배치 안에서 실행할 수 없습니다.
|
일반적으로, 다른 데이터베이스 개체와 종속성이 있는 개체를 생성할 경우, 배치 실행에 제한이 있습니다.
예제를 통해 살펴보면, 아래 구문은 VIEW를 생성하고, 뷰를 조회합니다. 하지만 GO 문이 없죠? 배치 실행을 시도하면 오류가 발생합니다.
USE AdventureWorks GO CREATE VIEW vTestView AS SELECT * FROM Production.Product; -- 배치 실행 GO 문이 없음 SELECT * FROM vTestView;
SSMS 인텔리센스 기능이 일괄처리 경고를 알려주고, 오류는 마지막 SELECT 구문의 구문 오류가 발생합니다.
이렇게 몇몇 부분만 주의하면 어렵지 않게 배치 구문을 작성하고 실행 가능합니다.
SQL 강좌 책 구매
강좌가 도움이 되셨다면, 책으로 구매 가능합니다. 책 판매 수익금은 전액 코딩 교육 사회공헌 활동에 기부되며, 아래 링크에서 구매하시면 더 많은 금액이 기부됩니다.