SQL Server에서는 언제 GO를 사용해야하며 언제 세미콜론을 사용해야합니까?
명령 뒤에 GO 키워드를 사용해야 할 때와 명령 끝에 세미콜론이 필요한지 항상 혼란스러워했습니다. 차이점은 무엇이며 왜 / 언제 사용해야합니까?
SQL Server Management Studio에서 Generate-script를 실행하면 모든 곳에서 GO를 사용하는 것 같지만 세미콜론은 사용하지 않습니다.
GO
SSMS 와만 관련이 있습니다. 실제 Transact SQL이 아니며 SSMS GO
에 개별 일괄 처리에서 순차적으로 SQL 문을 보내도록 지시 합니다.
는 ;
SQL 문 구분 기호이지만, 대부분의 엔진은 문이 깨진 곳 해석 할 수 있습니다.
주된 예외 및 ;
가장 자주 사용되는 장소 는 공통 테이블 표현식 문 앞입니다.
생성 된 DDL 스크립트에 GO가 너무 많이 표시되는 이유 는 배치 에 대한 다음 규칙 때문입니다 .
CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TRIGGER 및 CREATE VIEW 문은 일괄 처리에서 다른 문과 결합 할 수 없습니다. CREATE 문은 일괄 처리를 시작해야합니다. 해당 일괄 처리에서 뒤 따르는 다른 모든 문은 첫 번째 CREATE 문 정의의 일부로 해석됩니다.
생성 된 DDL의 사용 사례 중 하나는 단일 파일에 여러 개체를 생성하는 것입니다. 이 때문에 DDL 생성기는 배치를 생성 할 수 있어야합니다. 다른 사람들이 말했듯이 GO 문은 배치를 종료합니다.
가다
Go는 배치 구분 기호입니다. 이는 해당 배치의 모든 것이 해당 특정 배치에 로컬임을 의미합니다.
변수, 테이블 변수 등의 선언은 GO
명령문을 거치지 않습니다 .
#Temp 테이블은 연결에 로컬이므로 GO 문에 걸쳐 있습니다.
세미콜론
세미콜론은 문 종결 자입니다. 이것은 순전히 특정 명령문이 종료되었음을 식별하는 데 사용됩니다.
대부분의 경우 명령문 구문 자체만으로도 명령문의 끝을 확인할 수 있습니다.
그러나 CTE는 WITH가 첫 번째 문이므로 WITH 앞에 세미콜론이 필요합니다.
세미콜론을 사용하여 모든 SQL 문을 종료해야합니다. 이것은 SQL 표준에 정의되어 있습니다.
물론 SQL Server에서는 문 종결자를 생략 할 수있는 경우가 많지만 왜 나쁜 습관에 빠지게 될까요?
다른 사람들이 지적했듯이 CTE (공통 테이블 식) 앞의 문은 세미콜론으로 끝나야합니다. 결과적으로 세미콜론 종결자를 완전히 수용하지 않은 사람들로부터 우리는 다음을 볼 수 있습니다.
;WITH ...
정말 이상해 보입니다. 붙여 넣을 코드의 품질을 알 수없는 온라인 포럼에서 의미가 있다고 생각합니다.
또한 MERGE
문은 세미콜론으로 종료해야합니다. 여기에 패턴이 보이십니까? 이들은 SQL 표준을 밀접하게 따르는 TSQL에 대한 몇 가지 새로운 추가 사항입니다. SQL Server 팀이 세미콜론 종결 자 사용을 의무화하는 길을 가고있는 것 같습니다.
GO는 배치 종료 자이고 세미콜론은 명령문 종료 자입니다.
create proc이 일괄 처리의 첫 번째 문이어야하므로 하나의 스크립트에 여러 개의 create proc 문이 있어야 할 때 GO를 사용합니다. 공통 테이블 표현식을 사용하는 경우 세미콜론으로 종료해야하는 이전 명령문
'IT story' 카테고리의 다른 글
angularjs의 조건부 ng-include (0) | 2020.09.02 |
---|---|
미니 버퍼에 현재 파일의 전체 경로를 표시하는 기능 (0) | 2020.09.02 |
복제 가능 Java 정보 (0) | 2020.09.02 |
jsonpath로 회원 수? (0) | 2020.09.02 |
Python에서 목록의 첫 번째 위치에 삽입 (0) | 2020.09.02 |