[sql-server] SQL 문에서 대괄호 []를 사용하는 것은 무엇입니까?

Visual Studio 2008이 SQL에서 열 이름 주위에 대괄호를 배치하고 있음을 알았습니다. 브래킷이 어떤 이점을 제공합니까? 코드 T-SQL을 손으로 만들 때 결코 신경 쓰지 않았습니다.

예:

비주얼 스튜디오:

SELECT [column1], [column2] etc...

내 자신의 방식 :

SELECT column1, column2 etc...



답변

열 이름 또는 식별자에 키워드 또는 특수 문자를 사용하는 경우 대괄호가 필요합니다. [First Name]공백이 있는 열의 이름 을 지정할 수 있지만 해당 열을 참조 할 때마다 대괄호를 사용해야합니다.

최신 도구는 경우에 따라 또는 일관성을 위해 어디서나 추가 할 수 있습니다.


답변

열에 SQL 키워드와 이름이 같거나 공백이 있으면 편리합니다.

예:

create table test ( id int, user varchar(20) )

아뇨! 키워드 ‘user’근처의 구문이 잘못되었습니다. 하지만 이것은:

create table test ( id int, [user] varchar(20) )

잘 작동합니다.


답변

예를 들어 특정 문자가있는 열 이름을 사용하는 경우 유용합니다.

Select First Name From People

작동하지 않지만 열 이름 주위에 대괄호를 넣으면 작동합니다.

Select [First Name] From People

간단히 말해서 객체 이름을 명시 적으로 선언하는 방법입니다. 열, 테이블, 데이터베이스, 사용자 또는 서버.


답변

열 이름에는 쿼리 실행 엔진을 혼란스럽게하는 문자와 예약어가 포함될 수 있으므로 항상 대괄호를 묶으면 이러한 일이 발생하지 않습니다. 문제를 확인한 다음 처리하는 것보다 쉽습니다.


답변

열 이름이 예약어 인 경우 대괄호를 사용할 수 있습니다.

제어하지 않는 열 이름 모음에서 프로그래밍 방식으로 SQL 문을 생성하는 경우 항상 대괄호를 사용하여 문제를 피할 수 있습니다.


답변

예약어 사용을 피하는 명명 규칙을 따르지 않더라도 Microsoft는 새로운 예약어를 추가합니다. 대괄호를 사용하면 클라이언트 코드에서 Microsoft의 새로 예약 된 단어를 편집 할 필요없이 코드를 새로운 SQL Server 버전으로 업그레이드 할 수 있습니다. 그 편집은 중요한 관심사가 될 수 있습니다. 프로젝트가 조기에 종료 될 수 있습니다 ….

대괄호는 스크립트에서 모두 바꾸기를 원하는 경우에도 유용 할 수 있습니다. 배치에 @String이라는 변수와 [String]이라는 열이 포함 된 경우 @String의 이름을 @NewString으로 바꾸지 않고도 열의 이름을 [NewString]으로 바꿀 수 있습니다.


답변

1990 년대의 암흑 시대에는 SQL 디자이너가 사전에 각 단어를 새로운 기능의 끝없는 눈사태를위한 키워드로 추가하려고했기 때문에 SQL3 초안이라고하는 것이 좋습니다.

앞으로 호환성을 유지합니다.

그리고 그것은 또 다른 좋은 부작용이 있음을 발견했습니다. 코드 검토 및 리팩토링에서 grep을 사용할 때 많은 도움이됩니다.