Идентификаторы базы данных
Применимо к:SQL Server
Azure SQL Database
Azure Sql Managed Instance
Azure Synapse Analytics Analytics
Platform System (PDW)
SQL Endpoint in Microsoft Fabric Warehouse in Microsoft Fabric
Имя объекта базы данных называется его идентификатором. Все в Microsoft SQL Server может иметь идентификатор. серверам, базам данных и их объектам, например таблицам, представлениям, столбцам, индексам, триггерам, процедурам, ограничениям и правилам. Для большинства объектов идентификаторы необходимы, а для некоторых, например ограничений, необязательны.
Идентификатор объекта создается при определении объекта. Затем идентификатор используется для обращения к объекту. Например, следующая инструкция создает таблицу с идентификатором TableX
и двумя столбцами с идентификаторами KeyCol
и Description
:
CREATE TABLE TableX
(KeyCol INT PRIMARY KEY, Description nvarchar(80));
Эта таблица также содержит безымянное ограничение. Ограничение PRIMARY KEY
не имеет идентификатора.
Параметры сортировки идентификатора зависят от уровня, для которого определен этот идентификатор. К идентификаторам объектов на уровне экземпляров, таких как имена входа и имена базы данных, применяются параметры сортировки по умолчанию для экземпляра. Идентификаторам объектов в пределах базы данных, например таблиц, представлений или имен столбцов, назначаются параметры сортировки, установленные по умолчанию для базы данных. Например, две таблицы с именами, отличающимися только регистром, могут быть созданы в базе данных с параметрами сортировки c учетом регистра, но не могут быть созданы в базе данных с параметрами сортировки без учета регистра.
Заметка
Имена переменных или параметры функций и хранимых процедур должны соответствовать правилам идентификаторов 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
CREATE TABLE [SalesOrderDetail Table] --Identifier contains a space and uses a reserved keyword.
(
[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 (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)