Идентификаторы базы данных
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в Microsoft Fabric
Имя объекта базы данных называется его идентификатором. Все в SQL Server может иметь идентификатор. серверам, базам данных и их объектам, например таблицам, представлениям, столбцам, индексам, триггерам, процедурам, ограничениям и правилам. Для большинства объектов идентификаторы необходимы, а для некоторых, например ограничений, необязательны.
Идентификатор объекта создается при определении объекта. Затем идентификатор используется для обращения к объекту. Например, следующая инструкция создает таблицу с идентификатором TableX
и двумя столбцами с идентификаторами KeyCol
и Description
:
CREATE TABLE TableX (
KeyCol INT PRIMARY KEY,
Description NVARCHAR(80)
);
Эта таблица также содержит безымянное ограничение. Ограничение PRIMARY KEY
не имеет идентификатора.
Параметры сортировки идентификатора зависят от уровня, на котором он определен. К идентификаторам объектов на уровне экземпляров, таких как имена входа и имена базы данных, применяются параметры сортировки по умолчанию для экземпляра. Идентификаторам объектов в пределах базы данных, например таблиц, представлений или имен столбцов, назначаются параметры сортировки, установленные по умолчанию для базы данных. Например, две таблицы с именами, которые отличаются только в случае, можно создать в базе данных, которая имеет параметры сортировки с учетом регистра, но не может быть создана в базе данных с нечувствительными параметрами сортировки регистра.
Примечание.
Имена переменных или параметры функций и хранимых процедур должны соответствовать правилам идентификаторов Transact-SQL.
Классы идентификаторов
Существует два класса идентификаторов.
Регулярные идентификаторы соответствуют правилам формата идентификаторов. Регулярные идентификаторы не разделяются при использовании в инструкциях Transact-SQL.
USE AdventureWorks2022; GO SELECT * FROM HumanResources.Employee WHERE NationalIDNumber = 153479919;
Идентификаторы с разделителями заключены в двойные кавычки (
"
) или квадратные скобки ([
и]
). Идентификаторы, которые соответствуют правилам форматирования идентификаторов, могут быть не разделяемыми. Например:USE AdventureWorks2022; GO SELECT * FROM [HumanResources].[Employee] --Delimiter is optional. WHERE [NationalIDNumber] = 153479919 --Delimiter is optional.
Идентификаторы, которые не соответствуют всем правилам идентификаторов, должны быть разделены в инструкции Transact-SQL. Например:
USE AdventureWorks2022;
GO
--Identifier contains a space and uses a reserved keyword.
CREATE TABLE [SalesOrderDetail Table] (
[Order] INT NOT NULL,
[SalesOrderDetailID] INT IDENTITY(1, 1) NOT NULL,
[OrderQty] SMALLINT NOT NULL,
[ProductID] INT NOT NULL,
[UnitPrice] MONEY NOT NULL,
[UnitPriceDiscount] MONEY NOT NULL,
[ModifiedDate] DATETIME NOT NULL,
CONSTRAINT [PK_SalesOrderDetail_Order_SalesOrderDetailID] PRIMARY KEY CLUSTERED (
[Order] ASC,
[SalesOrderDetailID] ASC
)
);
GO
SELECT *
FROM [SalesOrderDetail 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.
Параметры сортировки каталога в База данных SQL Azure
Невозможно изменить или задать параметры сортировки логических серверов в База данных SQL Azure. Однако параметры сортировки каждой базы данных можно настроить отдельно для данных в базе данных и для каталога. Параметры сортировки каталога определяют параметры сортировки для системных метаданных, таких как идентификаторы объектов. Оба параметров сортировки можно задать независимо при создании базы данных в портал Azure в T-SQL с помощью CREATE DATABASE в PowerShell с new-AzSqlDatabase.
Дополнительные сведения и примеры см. в статье CREATE DATABASE. Укажите параметры сортировки для базы данных (COLLATE
) и параметры сортировки каталога для системных метаданных и идентификаторов объектов (CATALOG_COLLATION
).
Связанный контент
- Инструкция ALTER TABLE (Transact-SQL)
- CREATE DATABASE
- 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)