안녕하세요. 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개 정도의 작은 스크립트도 있습니다.

 

하나의 배치 안에서 같이 실행될 수 있는 명령들

  • CREATE DATABASE
  • CREATE TABLE
  • CREATE INDEX


이런 구문들은 하나의 배치 안에서 실행될 수 있으나, 아래 구문과 몇몇 작업은 하나의 배치 안에서 실행할 수 없습니다. 

 

  • CREATE PROC[edure]
  • CREATE RULE
  • CREATE DEFAULT
  • CREATE TRIGGER
  • CREATE VIEW


일반적으로, 다른 데이터베이스 개체와 종속성이 있는 개체를 생성할 경우, 배치 실행에 제한이 있습니다. 


예제를 통해 살펴보면, 아래 구문은 VIEW를 생성하고, 뷰를 조회합니다. 하지만 GO 문이 없죠? 배치 실행을 시도하면 오류가 발생합니다.

USE AdventureWorks
GO

CREATE VIEW vTestView
AS
SELECT * FROM Production.Product;
-- 배치 실행 GO 문이 없음

SELECT * FROM vTestView;

 

SSMS 인텔리센스 기능이 일괄처리 경고를 알려주고, 오류는 마지막 SELECT 구문의 구문 오류가 발생합니다.
 
이렇게 몇몇 부분만 주의하면 어렵지 않게 배치 구문을 작성하고 실행 가능합니다.
 

 

SQL 강좌 책 구매

강좌가 도움이 되셨다면, 책으로 구매 가능합니다. 책 판매 수익금은 전액 코딩 교육 사회공헌 활동에 기부되며, 아래 링크에서 구매하시면 더 많은 금액이 기부됩니다. 

 

책구매 링크: 챗GPT와 함께하는 마이크로소프트 SQL Server 2022 

책구매링크.png

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 21597
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 12231
2294 SQL강좌: 12-1. 인덱스 생성과 관리 - 인덱스(Index) 소개 file 코난(김대우) 2023.08.18 61
2293 SQL강좌: 11-8. 관계형 데이터베이스 이해 - 데이터베이스 구현 코난(김대우) 2023.08.18 24
2292 SQL강좌: 11-7. 관계형 데이터베이스 이해 - 데이터베이스 물리적 설계 코난(김대우) 2023.08.18 23
2291 SQL강좌: 11-6. 관계형 데이터베이스 이해 - 데이터베이스 논리적 설계 코난(김대우) 2023.08.18 23
2290 SQL강좌: 11-5. 관계형 데이터베이스 이해 - 데이터베이스 설계 요구사항(Requirements) 분석과 개념적 설계 코난(김대우) 2023.08.18 19
2289 SQL강좌: 11-4. 관계형 데이터베이스 이해 - 데이터베이스 설계 목표와 고려사항 코난(김대우) 2023.08.18 16
2288 SQL강좌: 11-3. 관계형 데이터베이스 이해 - 데이터베이스 설계 단계 file 코난(김대우) 2023.08.18 19
2287 SQL강좌: 11-2. 관계형 데이터베이스 이해 - 데이터베이스 생명주기 file 코난(김대우) 2023.08.18 23
2286 SQL강좌: 11-1. 관계형 데이터베이스 이해 - 관계형 모델 코난(김대우) 2023.08.18 33
2285 SQL강좌: 10-4. T-SQL 프로그래밍 - 공통 테이블 식(CTE-Common Table Expression) 코난(김대우) 2023.08.18 47
2284 SQL강좌: 10-3. T-SQL 프로그래밍 - 변수, 조건문(IF-ELSE), 반복문(WHILE), CASE 표현식 코난(김대우) 2023.08.18 26
» SQL강좌: 10-2. T-SQL 프로그래밍 - 일괄처리(Batch) 코난(김대우) 2023.08.18 31
2282 SQL강좌: 10-1. T-SQL 프로그래밍 - 소개 코난(김대우) 2023.08.18 19
2281 SQL강좌: 9-3. 커서 - 현업에서 커서 사용 및 주의사항 코난(김대우) 2023.08.18 49
2280 SQL강좌: 9-2. 커서 - 커서 구문 코난(김대우) 2023.08.18 23
2279 SQL강좌: 9-1. 커서(CURSOR) - 커서 소개 코난(김대우) 2023.08.18 40
2278 SQL강좌: 8-7. 저장 프로시저 - 프로시저 캐시와 RECOMPILE 코난(김대우) 2023.08.18 40
2277 SQL강좌: 8-6. 저장 프로시저 - 종속성(Dependency) 확인 코난(김대우) 2023.08.18 42
2276 SQL강좌: 8-5. 저장 프로시저 - OUTPUT 파라미터 코난(김대우) 2023.08.18 43
2275 SQL강좌: 8-4. 저장 프로시저 - 동적 SQL(Dynamic SQL)과 SQL 주입(Injection) 공격 코난(김대우) 2023.08.18 54





XE Login