Идентификаторы баз данных
Имя объекта базы данных называется его идентификатором. Идентификаторы в Microsoft SQL Server могут присваиваться любым сущностям: серверам, базам данных и их объектам, например таблицам, представлениям, столбцам, индексам, триггерам, процедурам, ограничениям и правилам. Для большинства объектов идентификаторы необходимы, а для некоторых, например ограничений, необязательны.
Идентификатор объекта создается при определении объекта. Затем идентификатор используется для обращения к объекту. Например, следующая инструкция создает таблицу с идентификатором TableX
и двумя столбцами с идентификаторами KeyCol
и Description
:
CREATE TABLE TableX
(KeyCol INT PRIMARY KEY, Description nvarchar(80))
Эта таблица также содержит безымянное ограничение. Ограничение PRIMARY KEY
не имеет идентификатора.
Параметры сортировки идентификатора зависят от уровня, для которого определен этот идентификатор. К идентификаторам объектов на уровне экземпляров, таких как имена входа и имена базы данных, применяются параметры сортировки по умолчанию для экземпляра. Идентификаторам объектов в пределах базы данных, например таблиц, представлений или имен столбцов, назначаются параметры сортировки, установленные по умолчанию для базы данных. Например, две таблицы с именами, отличающимися только регистром, могут быть созданы в базе данных с параметрами сортировки c учетом регистра, но не могут быть созданы в базе данных с параметрами сортировки без учета регистра.
Примечание
Имена переменных или параметры функций и хранимых процедур должны соответствовать правилам для идентификаторов 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.
Первым символом должен быть один из следующих.
Буква в соответствии со стандартом Unicode Standard 3,2. Определения букв в стандарте Юникод включают латинские символы от «a» до «z», от «A» до «Z», а также буквенные символы других языков;
подчеркивание (_), символ @ или решетка (#).
Определенные символы в начале идентификатора в SQL Serverимеют особое значение. Обычный идентификатор, начинающийся символом @, означает локальную переменную или параметр и не может использоваться в качестве имени объекта какого-либо иного типа. Идентификатор, начинающийся символом решетки (#), означает временную таблицу или процедуру. Идентификатор, начинающийся двойным символом решетки (##), означает глобальный временный объект. Хотя символы решетки и двойной решетки могут использоваться в начале имен объектов других типов, мы не рекомендуем такой способ именования.
Некоторые функции Transact-SQL имеют имена, начинающиеся с двойного знака (@@). Во избежание путаницы с этими функциями не следует использовать имена, начинающиеся символами @@.
Последующие символы могут включать:
Буквы в соответствии со стандартом Unicode Standard 3,2.
Десятичные цифры из набора символов Basic Latin или другого набора символов национального языка.
символ @, знак доллара ($), решетка или подчеркивание.
Идентификатор не должен быть зарезервированным словом Transact-SQL. SQL Server резервирует версии зарезервированных слов как в верхнем, так и в нижнем регистре. Если идентификаторы используются в инструкциях Transact-SQL, идентификаторы, которые не соответствуют этим правилам, должны быть разделены двойными кавычками или квадратными скобками. Состав зарезервированных слов зависит от уровня совместимости базы данных. Этот уровень можно установить с помощью инструкции ALTER DATABASE .
Внутри идентификаторов запрещается использовать символы пробела или специальные символы.
Дополнительные символы недопустимы.
Если идентификаторы используются в инструкциях Transact-SQL, идентификаторы, которые не соответствуют этим правилам, должны быть разделены двойными кавычками или квадратными скобками.
Примечание
Некоторые правила форматирования обычных идентификаторов зависят от уровня совместимости базы данных. Этот уровень можно установить с помощью процедуры ALTER DATABASE.
См. также:
ALTER TABLE (Transact-SQL)
CREATE DATABASE (SQL Server Transact-SQL)
CREATE DEFAULT (Transact-SQL)
CREATE PROCEDURE (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)