Идентификаторы базы данных
Применимо к:SQL Server
База данных SQL Azure Управляемый экземпляр SQL Azure
Управляемый экземпляр SQL Azure Конечная точка аналитики аналитики Synapse Analytics Analytics (PDW)
SQL Analytics
в Microsoft Fabric
Хранилище в 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)