Jaki jest pożytek z nawiasów kwadratowych [] w instrukcjach sql?

163

Zauważyłem, że Visual Studio 2008 umieszcza nawiasy kwadratowe wokół nazw kolumn w sql. Czy wsporniki oferują jakąkolwiek korzyść? Kiedy ręcznie koduję T-SQL, nigdy się nimi nie przejmowałem.

Przykład:

Visual Studio:

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

Po mojemu:

SELECT column1, column2 etc...
Paulj
źródło
Dobrze, że Twój ręcznie kodowany SQL nigdy nie potrzebował nawiasów, a konwencja nazewnictwa bazy danych powinna wykluczać nazwy, które wymagają nawiasów.
Christian Oudard
Powiązana odpowiedź omawia ustawienie QUOTED_IDENTIFIER: stackoverflow.com/questions/19657101/…
Jared Beck
8
Dodam, że nawiasy to dziwactwo Microsoftu. SQL Standard faktycznie używa podwójnych cudzysłowów ( "), które Microsoft również obsługuje. Gdyby Microsoft czuł potrzebę rozgraniczenia wszystkiego, lepszą formą byłoby użycie zamiast tego standardowych podwójnych cudzysłowów. Ale wydaje mi się, że byłoby to zbyt łatwe do przeniesienia do innego DBMS, a to nigdy nie zadziała…
Manngo,

Odpowiedzi:

181

Nawiasy są wymagane, jeśli używasz słów kluczowych lub znaków specjalnych w nazwach kolumn lub identyfikatorach. Możesz nazwać kolumnę[First Name] (ze spacją) - ale wtedy będziesz musiał używać nawiasów za każdym razem, gdy odnosisz się do tej kolumny.

Nowsze narzędzia dodają je wszędzie na wszelki wypadek lub dla spójności.

Michael Haren
źródło
3
czy to jedyny cel nawiasów kwadratowych?
1
@mehow, wygląda na to, że tak, ale nie mam odniesienia, które wyraźnie to wskazywało.
Michael Haren,
2
Powiązane q: stackoverflow.com/questions/9917196/…
Michael Haren
2
sql używa również nawiasów kwadratowych w operatorze like w kwerendzie wybierającej, aby ograniczyć wyniki za pomocą wyrażeń regularnych. codeproject.com/Articles/33941/SQL-LIKE-Operator
Jens Frandsen
2
Możesz także zdefiniować nazwę kolumny o nazwie, selectale select select from mytablespowoduje to błąd, więc select [select] from mytablebędzie to prawidłowe zapytanie. Każde słowo, które stanie się kolorowe w twoim studiu zarządzania SQL, powinno być otoczone nawiasami, jeśli chcesz użyć ich jako nazw kolumn / tabel / sp / itp. W MySQL równoważne byłyby pojedyncze cudzysłowy `` ''.
Barry Guvenkaya
59

Są przydatne, jeśli kolumny mają takie same nazwy jak słowa kluczowe SQL lub zawierają spacje.

Przykład:

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

O nie! Niepoprawna składnia w pobliżu słowa kluczowego „użytkownik”. Ale to:

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

Działa w porządku.

Blorgbeard wyszedł
źródło
@Blordbeard czy jest to coś specyficznego dla Microsoft SQL Server, czy też nawiasy kwadratowe działają tak samo dla Oracle, mySQL, PostgreSQL itp.?
user3700562
4
Nawiasy nie są standardowym SQL, nie jestem pewien, jakich znaków używają wszystkie silniki bazy danych. Na przykład: MySQL używa
odwrotnych znaków
12

Są przydatne, jeśli (z jakiegoś powodu) używasz na przykład nazw kolumn z określonymi znakami.

Select First Name From People

nie zadziała, ale wystarczy umieścić nawiasy kwadratowe wokół nazwy kolumny

Select [First Name] From People

Krótko mówiąc, jest to sposób jawnego zadeklarowania nazwy obiektu; kolumna, tabela, baza danych, użytkownik lub serwer.

GateKiller
źródło
6

Nazwy kolumn mogą zawierać znaki i zarezerwowane słowa, które będą mylić silnik wykonywania zapytań, więc umieszczanie wokół nich nawiasów przez cały czas zapobiega temu. Wydaje mi się, że łatwiejsze niż szukanie problemu i rozwiązywanie go.


źródło
5

Nawiasy mogą być używane, gdy nazwy kolumn są słowami zastrzeżonymi.

Jeśli programowo generujesz instrukcję SQL na podstawie zbioru nazw kolumn, nad którymi nie masz kontroli, możesz uniknąć problemów, zawsze używając nawiasów.

Torlack
źródło
5

Niezależnie od przestrzegania konwencji nazewnictwa, która unika używania słów zastrzeżonych, firma Microsoft dodaje nowe słowa zastrzeżone. Użycie nawiasów umożliwia uaktualnienie kodu do nowej wersji programu SQL Server bez konieczności uprzedniej edycji nowo zastrzeżonych słów firmy Microsoft z kodu klienta. Ta edycja może być poważnym problemem. Może to spowodować przedwczesne wycofanie projektu ...

Nawiasy mogą być również przydatne, gdy chcesz zamienić wszystko w skrypcie. Jeśli Twoja partia zawiera zmienną o nazwie @String i kolumnę o nazwie [String], możesz zmienić nazwę kolumny na [NewString], bez zmiany nazwy @String na @NewString.

Rachunek
źródło
5

W ciemnych epokach SQL w latach 90. była to dobra praktyka, ponieważ projektanci SQL próbowali dodawać każde słowo ze słownika jako słowo kluczowe dla niekończącej się lawiny nowych funkcji i nazwali to szkicem SQL3.

Więc zachowuje kompatybilność z przodu.

I odkryłem, że ma inny fajny efekt uboczny, bardzo pomaga, gdy używasz grep w przeglądach kodu i refaktoryzacji.

Lothar
źródło
4

Ponadto niektóre bazy danych programu Sharepoint zawierają w nazwach łączniki. Użycie nawiasów kwadratowych w instrukcjach SQL umożliwia poprawną analizę nazw.

HSchlarb
źródło
3

Wydaje mi się, że dodaje je tam dla spójności ... są wymagane tylko wtedy, gdy w nazwie kolumny znajduje się spacja lub znak specjalny, ale bardziej przejrzyste jest umieszczanie ich przez cały czas, gdy IDE generuje SQL.

Jeff Donnici
źródło