2012-03-28 16 views
18

Mam kopię istniejącej bazy danych z istniejącymi rekordami. kiedy bawiłem się z projektantem stołu i zauważyłem, że niektóre nazwy kolumn mają [] wokół nich. wszystkie wydają się być dowolnie wpisane (float, datetime, netext, nvarchar itd.) i nie ma nic w właściwościach kolumn, które pozbywają się []. Próbowałem zmienić nazwę usunąć [], ale pojawi się ponownie zaraz po wyjściu z edycji.Znaczenie nawiasów kwadratowych [] w projektancie tabel MS-SQL?

według wpisu this, jest to kolumna słów kluczowych dla kolumn xml? ale żadna z tych kolumn nie jest kolumnami xml. Czy ktoś mógłby wyjaśnić cel tego nowicjuszu ms-sql? dzięki

Odpowiedz

39

Kwadratowe nawiasy [] służą do ograniczania identyfikatorów. Jest to konieczne, jeśli nazwa kolumny jest zastrzeżonym słowem kluczowym lub zawiera znaki specjalne, takie jak spacja lub łącznik.

Niektórzy użytkownicy również lubią używać nawiasy kwadratowe, nawet jeśli nie są potrzebne.

Od MSDN:

Delimited identyfikatory

są ujęte w cudzysłów (") lub nawiasach ([]) Identyfikatory, które są zgodne z zasadami dla formatu identyfikatorów mogą lub. nie można ograniczać

SELECT * 
FROM [TableX]   --Delimiter is optional. 
WHERE [KeyCol] = 124 --Delimiter is optional. 

Identyfikatory, które nie spełniają wszystkich reguł dotyczących identyfikatorów, muszą być wytyczone d w instrukcji Transact-SQL.

SELECT * 
FROM [My Table]  --Identifier contains a space and uses a reserved keyword. 
WHERE [order] = 10 --Identifier is a reserved keyword. 
+2

(mogą zacytować dowolny identyfikator, nie tylko kolumny.) –

+0

który ma sens, wszystkie nazwy kolumn, które mają '[]' również mają 'spacje' w swoich nazwach. jednak, usuwając ręcznie 'space' i' [] ', projektant tabel nadal automatycznie dodaje' [] '? – Bonk

+1

@ YonkShi Prawdopodobnie robi to ze względu na spójność (nie trzeba się martwić, czy jest w konflikcie ze słowem kluczowym lub zawiera znaki specjalne itp.), Nawet gdy nie jest to konieczne. O ile nie istnieje * opcja generowania *, aby je wyłączyć (np. Ustawienie globalne?), Pozostanie taka, jaka jest. –

1

nawiasy są znaki specjalne w serwerze SQL, które są używane, aby wyraźnie oddzielić informacje.

mogą być używane w xml zgodnie z artykułem, mogą być również używane do określania nazw meta (kolumna, tabela itp.), Które mają spacje lub inne słowa kluczowe.

declare my column nvarchar(50) 

byłby nieważny składnia, ale można zrobić

declare [my column] nvarchar(50) 

tylko myśleć o nich jak o wyraźnych ograniczników.

4

nawiasy kwadratowe mogą być umieszczone wokół obiektów (np poglądów, baz danych, kolumny itp)

Ich głównym celem jest, jak wspomniano Mark, do hermetyzacji obiektów tak, że znaki specjalne, takie jak spacja lub okres nie przeszkadzają z twoją składnią.

Wiele aplikacji domyślnie korzysta z notacji nawiasów, aby jeszcze bardziej zmniejszyć ryzyko błędów składniowych lub czegokolwiek podobnego.

To zazwyczaj dobra praktyka, aby nie zawierać żadnych spacji

Database_Name < GOOD PRACTICE 

Database Name < GENERALLY TRY TO AVOID 

W każdym razie, jeśli ten ostatni jest używany, można użyć nawiasów kwadratowych tj

select * from [Database Name] 
+1

+1 dla "Wiele aplikacji domyślnie używa notacji w nawiasie, aby jeszcze bardziej zmniejszyć ryzyko błędów składniowych" będącą faktyczną odpowiedzią. – onedaywhen

Powiązane problemy