Поделиться через


Идентификаторы базы данных

Имя объекта базы данных называется его идентификатором. Все в Microsoft SQL Server может иметь идентификатор. Серверы, базы данных и объекты базы данных, такие как таблицы, представления, столбцы, индексы, триггеры, процедуры, ограничения и правила, могут иметь идентификаторы. Идентификаторы необходимы для большинства объектов, но являются необязательными для некоторых объектов, таких как ограничения.

Идентификатор объекта создается при определении объекта. Затем идентификатор используется для ссылки на объект. Например, следующая инструкция создает таблицу с идентификатором TableXи двумя столбцами с идентификаторами KeyCol и Description:

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

Эта таблица также имеет неназванное ограничение. Ограничение PRIMARY KEY не имеет идентификатора.

Сортировка идентификатора зависит от уровня его определения. К идентификаторам объектов на уровне экземпляров, таких как имена входа и имена базы данных, применяются параметры сортировки по умолчанию для экземпляра. Идентификаторы объектов в базе данных, такие как таблицы, представления и имена столбцов, назначаются коллации по умолчанию базы данных. Например, две таблицы с именами, которые отличаются только в случае, можно создать в базе данных, которая имеет параметры сортировки с учетом регистра, но не может быть создана в базе данных с нечувствительной сортировкой регистра.

Замечание

Имена переменных или параметры функций и хранимых процедур должны соответствовать правилам для идентификаторов Transact-SQL.

Классы идентификаторов

Существует два класса идентификаторов:

Обычные идентификаторы
Соблюдайте правила для формата идентификаторов. Обычные идентификаторы не разделяются, если они используются в операторах Transact-SQL.

SELECT *  
FROM TableX  
WHERE KeyCol = 124  

Делимитированные идентификаторы
Заключены в двойные кавычки (") или квадратные скобки ([ ]). Идентификаторы, соответствующие правилам формата идентификаторов, могут не быть разделены. Рассмотрим пример.

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

Идентификаторы, которые не соответствуют всем правилам идентификаторов, должны быть разделены в инструкции Transact-SQL. Рассмотрим пример.

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

Как обычные, так и разделенные идентификаторы должны содержать от 1 до 128 символов. Для локальных временных таблиц идентификатор может содержать не более 116 символов.

Правила для стандартных идентификаторов

Имена переменных, функций и хранимых процедур должны соответствовать следующим правилам для идентификаторов Transact-SQL.

  1. Первый символ должен быть одним из следующих:

    • Буква, определенная Стандартом Юникода 3.2. Определение букв Юникода включает латинские символы от a до z, от A до Z, а также буквенные символы из других языков.

    • Знак подчеркивания (_), знак (@) или знак номера (#).

      Некоторые символы в начале идентификатора имеют особое значение в SQL Server. Обычный идентификатор, начинающийся с знака, всегда обозначает локальную переменную или параметр и не может использоваться в качестве имени любого другого типа объекта. Идентификатор, начинающийся с знака числа, обозначает временную таблицу или процедуру. Идентификатор, начинающийся с двойных знаков чисел (##), обозначает глобальный временный объект. Хотя символы знака номера или двойного номера можно использовать для начала имен других типов объектов, мы не рекомендуем использовать этот подход.

      Некоторые функции Transact-SQL имеют имена, начинающиеся с двойных знаков (@@). Чтобы избежать путаницы с этими функциями, не следует использовать имена, начинающиеся с @@.

  2. Символы, которые следуют далее, могут включать следующие:

    • Буквы, определенные в Стандарте Юникода 3.2.

    • Десятичные числа из базовой латини или других национальных скриптов.

    • Знак при знаке, знак доллара ($), знак номера или подчеркивание.

  3. Идентификатор не должен быть Transact-SQL зарезервированным словом. SQL Server резервирует версии зарезервированных слов в верхнем и нижнем регистрах. Если идентификаторы используются в операторах Transact-SQL, идентификаторы, которые не соответствуют этим правилам, должны быть разделены двойными кавычками или скобками. Слова, зарезервированные, зависят от уровня совместимости базы данных. Этот уровень можно задать с помощью инструкции ALTER DATABASE .

  4. Внедренные пробелы или специальные символы не допускаются.

  5. Дополнительные символы запрещены.

Если идентификаторы используются в операторах Transact-SQL, идентификаторы, которые не соответствуют этим правилам, должны быть разделены двойными кавычками или скобками.

Замечание

Некоторые правила для формата регулярных идентификаторов зависят от уровня совместимости базы данных. Этот уровень можно задать с помощью ALTER DATABASE.

См. также

ИЗМЕНИТЬ ТАБЛИЦУ (Transact-SQL)
CREATE DATABASE (SQL Server Transact-SQL)
CREATE DEFAULT (Transact-SQL)
СОЗДАТЬ ПРОЦЕДУРУ (Transact-SQL)
CREATE RULE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
CREATE VIEW (Transact-SQL)
DECLARE @local_variable (Transact-SQL)
DELETE (Transact-SQL)
INSERT (Transact-SQL)
Зарезервированные ключевые слова (Transact-SQL)
SELECT (Transact-SQL)
UPDATE (Transact-SQL)