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


163

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

예:

비주얼 스튜디오:

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

내 자신의 방식 :

SELECT column1, column2 etc...

직접 코딩 한 SQL에 대괄호가 필요하지 않은 것이 좋습니다. 데이터베이스 이름 지정 규칙에 대괄호가 필요한 이름은 제외해야합니다.
Christian Oudard

관련 답변 QUOTED_IDENTIFIER 설정에 대해 설명합니다 : stackoverflow.com/questions/19657101/…
Jared Beck

8
괄호는 Microsoft의 특징이라고 덧붙일 수 있습니다. 는 SQL 표준은 실제로 큰 따옴표 (사용 "마이크로 소프트) 지원합니다. Microsoft가 모든 것을 구분할 필요가 있다고 느꼈다면 표준 큰 따옴표를 대신 사용하는 것이 더 좋을 것입니다. 그러나 이것이 다른 DBMS로 포팅하기가 너무 쉬워졌고 결코 그렇게되지 않을 것이라고 생각합니다.
Manngo

답변:


181

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

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


3
이것이 대괄호의 유일한 목적입니까?

1
@ mehow, 그렇게 보이지만 명시 적으로 나타내는 참조는 없습니다.
Michael Haren


2
sql은 또한 선택 쿼리의 유사 연산자에서 대괄호를 사용하여 정규식을 사용하여 결과를 제한합니다. codeproject.com/Articles/33941/SQL-LIKE-Operator
Jens Frandsen

2
호출 된 열 이름을 정의 할 수도 select있지만 select select from mytable오류가 발생 select [select] from mytable하여 유효한 쿼리가됩니다. SQL Management Studio에서 단어가 화려 해지더라도 열 / 테이블 / sp / 등의 이름으로 사용하려면 대괄호로 묶어야합니다. MySQL에서 작은 따옴표 (``)는 이것과 같습니다.
Barry Guvenkaya

59

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

예:

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

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

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

잘 작동합니다.


@Blordbeard는 Microsoft SQL Server에만 해당됩니까? 대괄호는 Oracle, mySQL, PostgreSQL 등에서도 동일하게 작동합니까?
user3700562

4
대괄호는 표준 SQL이 아니며 모든 DB 엔진이 어떤 문자를 사용하는지 잘 모르겠습니다. 예를 들면 : MySQL은 backticks를 사용합니다 : stackoverflow.com/questions/2889871/…
Blorgbeard는

12

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

Select First Name From People

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

Select [First Name] From People

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


6

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


5

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

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


5

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

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


5

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

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

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


4

또한 일부 Sharepoint 데이터베이스에는 이름에 하이픈이 포함되어 있습니다. SQL 문에서 대괄호를 사용하면 이름을 올바르게 구문 분석 할 수 있습니다.


3

일관성을 위해 그것들을 추가한다고 생각합니다 ... 열 이름에 공백이나 특수 문자가있을 때만 필요하지만 IDE가 SQL을 생성 할 때마다 항상 포함시키는 것이 더 깨끗합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.