Identyfikatory

Nazwa obiektu bazy danych jest określane jako jego identyfikator.Everything in Microsoft SQL Server can have an identifier.Serwery baz danych i obiektów bazy danych, takich jak tabele, widoki, kolumny, indeksów, wyzwalacze, procedury, ograniczenia i reguły, mogą mieć identyfikatory.Identyfikatory są wymagane w przypadku większości obiektów, ale są opcjonalne dla niektórych obiektów, takich jak ograniczenia.

Identyfikator obiektu jest tworzony, gdy obiekt jest zdefiniowany.Identyfikator jest następnie używana do odwołania do obiektu.Na przykład poniższa instrukcja tworzy tabela z identyfikatorem TableXoraz dwie kolumny z identyfikatorami KeyCol i Description:

CREATE TABLE TableX
(KeyCol INT PRIMARY KEY, Description nvarchar(80))

Tabela ta zawiera także ograniczeniem bez nazwy.The PRIMARY KEY constraint has no identifier.

Sortowanie identyfikatora zależy od poziomu, na jakim jest zdefiniowany.Identyfikatorom obiektów na poziomie wystąpienia, takim jak nazwy logowania i nazwy baz danych, jest przypisywane domyślne sortowanie wystąpienia.Identyfikatorom obiektów w bazie danych, takim jak nazwy tabel, widoków i kolumn, jest przypisywane domyślne sortowanie bazy danych.Na przykład dwie tabele o nazwach różniących się tylko wielkością liter można utworzyć w bazie danych, w której jest używane sortowanie z uwzględnieniem wielkości liter, ale nie można ich utworzyć w bazie danych, w której jest używane sortowanie bez uwzględnienia wielkości liter.

Identyfikatory klas

Istnieją dwie klasy identyfikatorów:

  • Regularne identyfikatory
    Zgodne z zasadami dla formatu identyfikatorów.Regularne identyfikatorów nie są rozdzielane, gdy są one używane w Transact-SQL instrukcje.

    SELECT *
    FROM TableX
    WHERE KeyCol = 124
    
  • Identyfikatory rozdzielanego
    Czy są ujęte w podwójny cudzysłów ("") lub nawiasów kwadratowych ([]).Identyfikatory, które są zgodne z zasadami dla formatu identyfikatorów nie mogą być rozdzielane.Na przykład:

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

    Identyfikatory, które nie spełniają wszystkie reguły dla identyfikatorów musi być rozdzielane w Transact-SQL Instrukcja. Na przykład:

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

Identyfikatory rozdzielane i regularne musi zawierać od 1 do 128 znaków.W przypadku lokalnych tabel tymczasowych identyfikator może zawierać znaków 116.

Reguły dla identyfikatorów zwykła

Reguły dla formatu regularnych identyfikatory zależą od poziom zgodności bazy danych.Ten poziom zestaw przy użyciu ZMIENIANIE BAZY DANYCH.Gdy jest poziom zgodności 100, obowiązują następujące reguły:

  1. Pierwszy znak musi być jedną z następujących czynności:

    • Litera, jak zdefiniowano w standardzie Unicode 3,2.Definicja Unicode z literami zawiera łacińskie od do z, od A do Z, a także znaki alfabetu pochodzące z innych języków.

    • Znak podkreślenia (_), znak (@) lub znak numeru (#).

      Niektóre symbole na początku identyfikator mają specjalne znaczenie SQL Server. Regularne identyfikator, który zaczyna się od znak zawsze oznacza zmienną lokalną lub parametr i nie może być używany jako nazwa typu obiektu.Identyfikator obiektu, który zaczyna się od znaku krzyżyka oznacza tabela tymczasowa lub procedury.Identyfikator obiektu, który zaczyna się od podwójne znaki numeru (#) określa globalne tymczasowy obiekt.Chociaż znak numeru lub podwójne liczby znaków znaku można użyć do rozpoczęcia nazw innych typów obiektów, firma Microsoft nie zaleca taka praktyka.

      Niektóre Transact-SQL funkcje mają nazwy zaczynające się dwukrotnie na znaki (@@). Aby uniknąć zamieszania z tych funkcji, nie należy używać nazwy zaczynające się @@.

  2. Kolejne znaki mogą być następujące:

    • Litery, jak zdefiniowano w standardzie Unicode 3,2.

    • Liczby dziesiętne z Łaciński podstawowy lub inne skrypty krajowych.

    • Na znak, znak dolara ($), krzyżyk lub podkreślenia.

  3. The identifier must not be a Transact-SQL reserved word.SQL Server reserves both the uppercase and lowercase versions of reserved words.

  4. Osadzone spacje lub znaki specjalne są niedozwolone.

  5. Dodatkowe znaki nie są dozwolone.

Kiedy identyfikatory są używane w Transact-SQL instrukcje identyfikatorów, które nie są zgodne z tymi zasadami musi rozdzielone podwójnego cudzysłowu lub nawiasy.

Uwaga

Nazwy zmiennych, funkcji i procedur przechowywanych, muszą być zgodne z zasadami Transact-SQL identyfikatory.