СОЗДАТЬ ТАБЛИЦУ
Создает новую таблицу в Azure Synapse Analytics или Analytics Platform System (PDW).
Сведения о таблицах и их использовании см. в статье «Таблицы» в Azure Synapse Analytics.
Обсуждение Azure Synapse Analytics в этой статье относится как к Azure Synapse Analytics, так и к системе платформы аналитики (PDW), если иное не указано.
Для платформ SQL Server и Azure SQL перейдите на страницу CREATE TABLE и выберите нужную версию продукта. Дополнительные сведения о хранилище в Microsoft Fabric см. в статье CREATE TABLE (Fabric).
Бессерверный пул SQL в Azure Synapse Analytics поддерживает только внешние и временные таблицы.
Синтаксис
-- Create a new table. CREATE TABLE < database_name.schema_name.table_name | schema_name.table_name | table_name >( < column_name [ ] > [ . n ] ) [ WITH ( [ . n ] ) ] [;] ::= [ COLLATE Windows_collation_name ] [ NULL | NOT NULL ] -- default is NULL [ IDENTITY [ ( seed, increment ) ] [ ] ::= < DEFAULT constant_expression | PRIMARY KEY NONCLUSTERED NOT ENFORCED -- Applies to Azure Synapse Analytics only | UNIQUE NOT ENFORCED -- Applies to Azure Synapse Analytics only > ::= < CLUSTERED COLUMNSTORE INDEX -- default for Azure Synapse Analytics | CLUSTERED COLUMNSTORE INDEX ORDER (column [. n]) | HEAP --default for Parallel Data Warehouse | CLUSTERED INDEX ( < index_column_name [ ASC | DESC ] >[ . n ] ) -- default is ASC > < DISTRIBUTION = HASH ( distribution_column_name ) | DISTRIBUTION = HASH ( [distribution_column_name [, . n]] ) | DISTRIBUTION = ROUND_ROBIN -- default for Azure Synapse Analytics | DISTRIBUTION = REPLICATE -- default for Parallel Data Warehouse >| PARTITION ( partition_column_name RANGE [ LEFT | RIGHT ] -- default is LEFT FOR VALUES ( [ boundary_value [. n] ] ) ) ::= datetimeoffset [ ( n ) ] | datetime2 [ ( n ) ] | datetime | smalldatetime | date | time [ ( n ) ] | float [ ( n ) ] | real [ ( n ) ] | decimal [ ( precision [ , scale ] ) ] | numeric [ ( precision [ , scale ] ) ] | money | smallmoney | bigint | int | smallint | tinyint | bit | nvarchar [ ( n | max ) ] -- max applies only to Azure Synapse Analytics | nchar [ ( n ) ] | varchar [ ( n | max ) ] -- max applies only to Azure Synapse Analytics | char [ ( n ) ] | varbinary [ ( n | max ) ] -- max applies only to Azure Synapse Analytics | binary [ ( n ) ] | uniqueidentifier
Аргументы
database_name
Имя базы данных, которая будет содержать новую таблицу. Значение по умолчанию — текущая база данных.
schema_name
Схема таблицы. Схема является необязательной. Если пусто, используется схема по умолчанию.
table_name
Имя новой таблицы. Чтобы создать локальную временную таблицу, укажите # перед именем таблицы. Пояснения и рекомендации для временных таблиц см. в разделе Временные таблицы в выделенном пуле SQL в Azure Synapse Analytics.
column_name
Имя столбца таблицы.
Параметры столбца
COLLATE параметры_сортировки_Windows
Задает параметры сортировки для выражения. Параметры сортировки должны быть одним из параметров сортировки Windows, поддерживаемых SQL Server. Список параметров сортировки Windows, поддерживаемых SQL Server, см. в разделе «Имя сортировки Windows» (Transact-SQL)/).
NULL | NOT NULL
Указывает, допустимы ли для столбца значения NULL . Значение по умолчанию — NULL .
[ CONSTRAINT имя_ограничения ] DEFAULT выражение_ограничения
Указывает значение столбца по умолчанию.
| Аргумент | Описание |
|---|---|
| constraint_name | Необязательное имя ограничения. Имя ограничения уникально в пределах базы данных. Имя можно использовать повторно в других базах данных. |
| constant_expression | Значение по умолчанию для столбца. Выражение должно быть литералом или константой. Например, могут использоваться следующие константные выражения: ‘CA’ , 4 . Следующие константные выражения не могут использоваться: 2+3 , CURRENT_TIMESTAMP . |
Параметры структуры таблиц
Рекомендации по выбору типа таблицы см. в разделе «Индексирование таблиц» в Azure Synapse Analytics.
CLUSTERED COLUMNSTORE INDEX
Сохраняет таблицу как кластеризованный индекс columnstore. Кластеризованный индекс columnstore применяется ко всем данным таблицы. Это поведение по умолчанию для Azure Synapse Analytics.
HEAP Сохраняет таблицу в виде кучи. Это поведение по умолчанию для системы платформы аналитики (PDW).
CLUSTERED INDEX ( index_column_name [ . n ] )
Сохраняет таблицу в виде кластеризованного индекса с одним или несколькими ключевыми столбцами. Данные сохраняются по записям. Используйте имя_индексного_столбца для указания имен одного или нескольких ключевых столбцов в индексе. Дополнительные сведения см. в подразделе «Таблицы rowstore» в разделе «Общие замечания».
LOCATION = USER_DB Этот параметр не рекомендуется использовать. Он является допустимым с точки зрения синтаксиса, но больше не требуется и не влияет на поведение.
Параметры распространения таблицы
Чтобы понять, как выбрать лучший метод распространения и использовать распределенные таблицы, ознакомьтесь с проектированием распределенных таблиц с помощью выделенного пула SQL в Azure Synapse Analytics.
Рекомендации по оптимальной стратегии распространения на основе рабочих нагрузок см. в помощнике по распространению Synapse SQL (предварительная версия).
DISTRIBUTION = HASH ( имя_столбца_распределения ) Назначает каждую строку одному распределению путем хэширования значения, которое хранится в столбце распределения с указанным именем_столбца_распределения. Этот алгоритм является детерминированным, то есть при хэшировании он всегда соотносит конкретное значение с конкретным распределением. Столбец распределения должен быть определен как NOT NULL, так как все записи, имеющие значение NULL, назначены одному и тому же распределению.
DISTRIBUTION = HASH ( [distribution_column_name [, . n]] ) Распределяет строки на основе хэш-значений до восьми столбцов, что позволяет более равномерно распределять данные базовой таблицы, уменьшая количество данных с течением времени и повышая производительность запросов.
- Чтобы включить функцию распределения с несколькими столбцами (MCD), измените уровень совместимости базы данных на 50 с помощью этой команды. Дополнительные сведения о настройке уровня совместимости базы данных см. в разделе ALTER DATABASE SCOPED CONFIGURATION. Пример: ALTER DATABASE SCOPED CONFIGURATION SET DW_COMPATIBILITY_LEVEL = 50;
- Чтобы отключить функцию распределения с несколькими столбцами (MCD), выполните следующую команду, чтобы изменить уровень совместимости базы данных на AUTO. Например: ALTER DATABASE SCOPED CONFIGURATION SET DW_COMPATIBILITY_LEVEL = AUTO; существующие таблицы MCD останутся нечитаемыми. Запросы к таблицам MCD будут возвращать эту ошибку: Related table/view is not readable because it distributes data on multiple columns and multi-column distribution is not supported by this product version or this feature is disabled.
- Чтобы восстановить доступ к таблицам MCD, снова включите эту функцию.
- Чтобы загрузить данные в таблицу MCD, используйте инструкцию CTAS, а источник данных должен представлять собой таблицы Synapse SQL.
DISTRIBUTION = ROUND_ROBIN Равномерно распределяет строки между всеми распределениями циклическим способом. Это поведение по умолчанию для Azure Synapse Analytics.
DISTRIBUTION = REPLICATE Сохраняет по одной копии таблицы на каждом вычислительном узле. Для Azure Synapse Analytics таблица хранится в базе данных распространителя на каждом вычислительном узле. Для системы платформы аналитики (PDW) таблица хранится в файловой группе SQL Server, которая охватывает вычислительный узел. Это поведение по умолчанию для системы платформы аналитики (PDW).
Параметры секционирования таблицы
Рекомендации по использованию секций таблицы см. в разделе Секционирование таблиц в выделенном пуле SQL.
PARTITION ( partition_column_name RANGE [ LEFT | RIGHT ] FOR VALUES ( [ boundary_value [. n] ] ))
Создает одну или несколько секций таблицы. Эти секции представляют собой горизонтальные срезы таблицы, которые позволяют применять операции к подмножествам записей независимо от того, хранится ли таблица в виде кучи, кластеризованного индекса или кластерного индекса columnstore. В отличие от столбца распределения секции таблицы не определяют распределений, в которых хранятся записи. Вместо этого секции таблицы определяют группирование и хранение строк в каждом распределении.Если указать предложение, но не указать PARTITION значение границы, Azure Synapse Analytics создает секционированную таблицу с одной секцией. Если это допустимо, вы можете разделить таблицу на две секции в дальнейшем.
Вариант упорядоченного кластеризованного индекса columnstore
Кластеризованный индекс columnstore (CCI) — это значение по умолчанию для создания таблиц в Azure Synapse Analytics. Данные в CCI не сортируются перед сжатием в сегменты columnstore. При создании индекса с ORDER данные сортируются до добавления в сегменты индекса, и производительность запросов можно улучшить. Дополнительные сведения см. в разделе Настройка производительности с упорядоченным кластеризованным индексом columnstore.
Упорядоченная CCI может быть создана для столбцов любых типов данных, поддерживаемых в Azure Synapse Analytics, за исключением строковых столбцов.
Пользователи могут запрашивать столбец column_store_order_ordinal в sys.index_columns для получения списка столбцов, по которым упорядочена таблица, и последовательности упорядочения.
Тип данных
Azure Synapse Analytics поддерживает наиболее часто используемые типы данных. Дополнительные сведения о типах данных и их использовании см. в статье «Типы данных» для таблиц в Azure Synapse Analytics.
Аналогично SQL Server существует ограничение в 8060 байт на строку. Это может стать блокирующей проблемой для таблиц с большим количеством столбцов или столбцов с большими типами данных, такими как nvarchar(max) или varbinary(max) . Вставки или обновления, нарушающие ограничение на 8060 байт, приводят к ошибкам с кодами 511 или 611. Дополнительные сведения см. в разделе Руководство по архитектуре страниц и экстентов.
В следующем списке поддерживаемых типов данных содержатся сведения и байты хранилища:
datetimeoffset [ ( n ) ]
Значение по умолчанию для n равно 7.datetime2 [ ( n ) ]
То же, что datetime , за исключением того, что можно указать количество долей секунды. Значение по умолчанию для n равно 7 .Значение n Точность Масштабировать 0 19 0 1 21 1 2 22 2 3 23 3 4 24 4 5 25 5 6 26 6 7 27 7 datetime
Сохраняет дату и время дня длиной от 19 до 23 символов по Григорианскому календарю. Дата может содержать год, месяц и день. Время содержит часы, минуты и секунды. При необходимости можно отобразить три знака для долей секунды. Размер при хранении составляет 8 байт.smalldatetime
Сохраняет дату и время. Размер при хранении составляет 4 байта.date
Сохраняет дату длиной до 10 символов по григорианскому календарю. Размер при хранении составляет 3 байта. Дата сохраняется в виде целого числа.time [ ( n ) ]
Значение по умолчанию для n равно 7 .float [ ( n ) ]
Типы приблизительных числовых данных, используемые для числовых данных с плавающей запятой. Данные с плавающей запятой являются приблизительными, поэтому не все значения из диапазона могут быть отображены точно. n указывает количество битов, используемых для хранения мантиссы float в экспоненциальном представлении. n определяет точность и размер хранения данных. Если указан параметр n, он должен находиться в диапазоне от 1 до 53 . Значение n по умолчанию — 53 .Значение n Точность Объем памяти 1–24 7 цифр 4 байта 25–53 15 знаков 8 байт Azure Synapse Analytics обрабатывает n как одно из двух возможных значений. Если 1 nn принимает значение 24 . Если 25 nn принимает значение 53 .
Тип данных Azure Synapse Analytics float соответствует стандарту ISO для всех значений n от 1 53 нуля. Синонимом типа double precision является тип float(53) .
real [ ( n ) ]
Определение типа real соответствует определение типа float. Синонимом по стандарту ISO для типа real является float(24) .decimal [ ( точность [ , масштаб ] ) ] | numeric [ ( точность [ , масштаб ] ) ]
Хранит числа с фиксированной точностью и масштабом.precision
Максимальное количество десятичных разрядов числа (как слева, так и справа от десятичной запятой). Точность должна находиться в диапазоне от 1 до 38 . Точность по умолчанию — 18 .scale
Максимальное количество десятичных разрядов числа справа от десятичной запятой. Масштаб должен иметь значение от 0 до точности. Масштаб можно указать только в том случае, если указана точность. Масштаб по умолчанию — 0 , поэтому 0 масштабточность. Максимальный размер хранилища зависит от точности.Точность Байты хранилища 1–9 5 10–19 9 20–28 13 29–38 17 money | smallmoney
Типы данных, представляющие денежные значения.Тип данных Байты хранилища money 8 smallmoney 4 bigint | int | smallint | tinyint
Типы точных числовых данных, использующие целые значения. Размер данных хранения приведен в следующей таблице.Тип данных Байты хранилища bigint 8 int 4 smallint 2 tinyint 1 bit
Целочисленный тип данных, который может принимать значения 1 , 0 или NULL. Azure Synapse Analytics оптимизирует хранение битовых столбцов. Если в таблице имеется 8 или менее столбцов типа bit, они хранятся как 1 байт. Если имеется от 9 до 16 столбцов типа bit, они хранятся как 2 байта и т.д.nvarchar [ ( n | max ) ] — max применяется только к Azure Synapse Analytics.
Символьные данные Юникода с переменной длиной. n может иметь значение от 1 до 4000. Значение max указывает, что максимальный размер при хранении составляет 2^31-1 байт (2 ГБ). Размер для хранения в байтах равен удвоенному числу введенных символов + 2 байта. Введенные данные могут иметь длину в ноль символов.nchar [ ( n ) ]
Символьные данные фиксированной длины в формате Юникод. Длина составляет n символов. n должно иметь значение от 1 до 4000 . Размер хранилища — дважды n байт.varchar [ ( n | max ) ] — max применяется только к Azure Synapse Analytics.
Символьные данные переменной длины не в формате Юникод. Длина составляет n байт. n может иметь значение от 1 до 8000 . Значение max указывает, что максимальный размер при хранении составляет 2^31-1 байт (2 ГБ). Размер хранения равен фактической длине данных плюс два байта.char [ ( n ) ]
Символьные данные фиксированной длины не в формате Юникод. Длина составляет n байт. n может иметь значение от 1 до 8000 . Размер при хранении составляет n байт. Значение n по умолчанию — 1 .varbinary [ ( n | max ) ] — max применяется только к Azure Synapse Analytics.
Двоичные данные с переменной длиной. n может иметь значение от 1 до 8000 . Значение max указывает, что максимальный размер при хранении составляет 2^31-1 байт (2 ГБ). Размер хранения равен фактической длине данных плюс два байта. Значение по умолчанию для n равно 7.binary [ ( n ) ]
Двоичные данные фиксированной длины n байт. n может иметь значение от 1 до 8000 . Размер при хранении составляет n байт. Значение по умолчанию для n равно 7 .uniqueidentifier
16-байтовый идентификатор GUID.Разрешения
Для создания таблицы требуется разрешение в предопределенной роли базы данных db_ddladmin или:
- разрешение CREATE TABLE в базе данных
- ALTER SCHEMA разрешение на схему, содержащую таблицу
Для создания секционированной таблицы требуется разрешение в предопределенной роли базы данных db_ddladmin или
- разрешение ALTER ANY DATASPACE
Имя входа, от имени которого создается локальная временная таблица, получает разрешения CONTROL , INSERT , SELECT и UPDATE для этой таблицы.
Замечания
Минимальные и максимальные ограничения см. в разделе об ограничениях емкости Azure Synapse Analytics.
Определение количества секций таблиц
Каждая пользовательская таблица делится на несколько таблиц меньшего размера, которые хранятся в различных расположениях, называемых распределениями. Azure Synapse Analytics использует 60 дистрибутивов. В системе платформы аналитики (PDW) количество дистрибутивов зависит от количества вычислительных узлов.
Каждое распределение содержит все секции таблицы. Например, для 60 распределений, четырех секций таблицы и одной пустой секции мы получим 300 секций (5 x 60= 300). Если таблица является кластеризованным индексом columnstore, на секцию будет один индекс columnstore, то есть у вас будет 300 индексов columnstore.
Рекомендуется использовать меньшее число секций таблицы, чтобы в каждом индексе columnstore было достаточное количество строк для использования всех преимуществ индексов columnstore. Дополнительные сведения см. в разделах Секционирование таблиц в выделенном пуле SQL и Индексы в таблицах выделенного пула SQL в Azure Synapse Analytics.
Таблица rowstore (куча или кластеризованный индекс)
Таблица rowstore — это таблица, которая хранится в порядке по строкам. Это куча или кластеризованный индекс. Azure Synapse Analytics создает все таблицы rowstore с сжатием страниц; Это поведение не настраивается пользователем.
Таблица columnstore (индекс columnstore)
Таблица columnstore — это таблица, которая хранится в порядке по столбцам. Индекс columnstore — это технология, которая управляет данными, хранящимися в таблице columnstore. Кластеризованный индекс columnstore не влияет на распределение данных. Скорее, это влияет на то, как данные хранятся в каждом распределении.
Чтобы преобразовать таблицу rowstore в таблицу columnstore, удалите все существующие индексы таблицы и создайте кластеризованный индекс columnstore. Пример см. в разделе CREATE COLUMNSTORE INDEX (Transact-SQL).
Дополнительные сведения см. в следующих статьях:
- Новые возможности индексов columnstore
- Индексирование таблиц в Azure Synapse Analytics
- Руководство по индексам columnstore
Ограничения
- Вы не можете определить ограничение DEFAULT для столбца распределения.
- Имя таблицы не может быть больше 128 символов.
- Имя столбца не может превышать 128 символов.
Секции
Столбец секции не может иметь параметры сортировки только для Юникода. Например, следующая инструкция завершается ошибкой:
CREATE TABLE t1 ( c1 varchar(20) COLLATE Divehi_90_CI_AS_KS_WS) WITH (PARTITION (c1 RANGE FOR VALUES (N'')))Если boundary_value является литеральным значением, которое должно быть неявно преобразовано в тип данных в partition_column_name, возникает несоответствие. Литеральное значение отображается с помощью системных представлений Azure Synapse Analytics, но преобразованное значение используется для операций Transact-SQL.
Временные таблицы
Глобальные временные таблицы, начинающиеся с ## , не поддерживаются.
На локальные временные таблицы распространяются следующие ограничения:
- Они видимы только в текущем сеансе. Azure Synapse Analytics автоматически удаляет их в конце сеанса. Для явного удаления этих таблиц используйте инструкцию DROP TABLE.
- Их нельзя переименовать.
- Они не могут иметь секции или представления.
- Изменить их разрешения невозможно. Инструкции GRANT , DENY и REVOKE не могут использоваться с локальными временными таблицами.
- Консольные команды базы данных для временных таблиц блокируются.
- Если в пакете используется несколько локальных временных таблиц, они должны иметь уникальные имена. Если несколько сеансов выполняют один пакет и создают одну и ту же локальную временную таблицу, Azure Synapse Analytics внутренне добавляет числовой суффикс к имени локальной временной таблицы, чтобы сохранить уникальное имя для каждой локальной временной таблицы.
Режим блокировки
Применяет монопольную блокировку к таблице. Применяет совмещаемую блокировку к объектам DATABASE, SCHEMA и SCHEMARESOLUTION.
Примеры для столбцов
А. Указание параметров сортировки столбца
В следующем примере создается таблица MyTable с двумя различными параметрами сортировки столбцов. По умолчанию столбец mycolumn1 имеет параметры сортировки по умолчанию Latin1_General_100_CI_AS_KS_WS. Столбец mycolumn2 имеет параметры сортировки Frisian_100_CS_AS.
CREATE TABLE MyTable ( mycolumnnn1 nvarchar, mycolumn2 nvarchar COLLATE Frisian_100_CS_AS ) WITH ( CLUSTERED COLUMNSTORE INDEX ) ;B. Указания ограничения DEFAULT для столбца
В следующем примере показан синтаксис для указания значения по умолчанию для столбца. Столбец colA имеет ограничение по умолчанию constraint_colA и значение по умолчанию 0.
CREATE TABLE MyTable ( colA int CONSTRAINT constraint_colA DEFAULT 0, colB nvarchar COLLATE Frisian_100_CS_AS ) WITH ( CLUSTERED COLUMNSTORE INDEX ) ;Примеры для временных таблиц
C. Создание локальной временной таблицы
В следующем примере создается локальная временная таблица с именем #myTable. Имя таблицы состоит из трех частей и начинается с #.
CREATE TABLE AdventureWorks.dbo.#myTable ( id int NOT NULL, lastName varchar(20), zipCode varchar(6) ) WITH ( DISTRIBUTION = HASH (id), CLUSTERED COLUMNSTORE INDEX ) ;Примеры структуры таблиц
D. Создание таблицы с кластеризованным индексом columnstore
В следующем примере создается таблица распределения с кластеризованным индексом columnstore. Каждое распределение хранится в виде columnstore.
Кластеризованный индекс columnstore не влияет на способ распределения данных; данные всегда распределены по строкам. Кластеризованный индекс влияет на способ хранения данных в пределах каждого распределения.
CREATE TABLE MyTable ( colA int CONSTRAINT constraint_colA DEFAULT 0, colB nvarchar COLLATE Frisian_100_CS_AS ) WITH ( DISTRIBUTION = HASH ( colB ), CLUSTERED COLUMNSTORE INDEX ) ;Д. Создание упорядоченного кластеризованного индекса columnstore
В следующем примере показано, как создать упорядоченный кластеризованный индекс columnstore. Индекс упорядочен по SHIPDATE.
CREATE TABLE Lineitem WITH (DISTRIBUTION = ROUND_ROBIN, CLUSTERED COLUMNSTORE INDEX ORDER(SHIPDATE)) AS SELECT * FROM ext_LineitemПримеры распределения таблиц
Е. Создание таблицы ROUND_ROBIN
В следующем примере создается таблица ROUND_ROBIN с тремя столбцами и без секций. Данные распространяются между всеми распределениями. Создается таблица с кластеризованным индексом columnstore, который обладает лучшей производительностью и характеристиками сжатия данных по сравнению с кучей или кластеризованным индексом rowstore.
CREATE TABLE myTable ( id int NOT NULL, lastName varchar(20), zipCode varchar(6) ) WITH ( CLUSTERED COLUMNSTORE INDEX );G. Создание таблицы с распределенным хэшем по нескольким столбцам (предварительная версия)
В следующем примере создается точно такая же таблица, как в предыдущем примере. Однако для этой таблицы строки распределяются (по столбцам id и zipCode ). Создается таблица с кластеризованным индексом columnstore, который обладает лучшей производительностью и характеристиками сжатия данных по сравнению с кучей или кластеризованным индексом rowstore.
CREATE TABLE myTable ( id int NOT NULL, lastName varchar(20), zipCode varchar(6) ) WITH ( DISTRIBUTION = HASH (id, zipCode), CLUSTERED COLUMNSTORE INDEX );H. Создание реплицированной таблицы
В следующем примере создается реплицированная таблица, как и в предыдущем примере. Реплицированные таблицы копируются в полном объеме на каждый вычислительный узел. Благодаря наличию копии на каждом вычислительном узле уменьшается объем перемещаемых данных для запросов. В этом примере таблица создается с использованием кластеризованного индекса, который обеспечивает лучшее сжатие данных, чем куча. Куча может не содержать достаточно записей для достижения хорошего сжатия с использованием кластеризованного индекса columnstore.
CREATE TABLE myTable ( id int NOT NULL, lastName varchar(20), zipCode varchar(6) ) WITH ( DISTRIBUTION = REPLICATE, CLUSTERED INDEX (lastName) );Примеры секций таблиц
I. Создание секционированной таблицы
В следующем примере создается такая же таблица, как в примере A, с добавлением секционирования RANGE LEFT для столбца id . В нем указаны четыре граничных значения секций, таким образом, общее количество секций равно пяти.
CREATE TABLE myTable ( id int NOT NULL, lastName varchar(20), zipCode int) WITH ( PARTITION ( id RANGE LEFT FOR VALUES (10, 20, 30, 40 )), CLUSTERED COLUMNSTORE INDEX );В этом примере данные будут отсортированы в следующих секциях:
- Секция 1: столбцы до 10-го
- Секция 2: столбцы с 11-го по 20-й
- Секция 3: столбцы с 21-го по 30-й
- Секция 4: столбцы с 31-го по 40-й
- Секция 5: столбцы с 41-го и далее
Если эта же таблица была секционирована с использованием RANGE RIGHT вместо RANGE LEFT (по умолчанию), данные будут отсортированы в следующих секциях:
- Секция 1: столбцы до 9-го
- Секция 2: столбцы с 10-го по 19-й
- Секция 3: столбцы с 20-го по 29-й
- Секция 4: столбцы с 30-го по 39-й
- Секция 5: столбцы с 40-го и далее
J. Создание секционированной таблицы с одной секцией
В следующем примере создается секционированная таблица с одной секцией. В нем не указаны граничные значения, поэтому создается одна секция.
CREATE TABLE myTable ( id int NOT NULL, lastName varchar(20), zipCode int) WITH ( PARTITION ( id RANGE LEFT FOR VALUES ( )), CLUSTERED COLUMNSTORE INDEX ) ;K. Создание таблицы с секционированием даты
В следующем примере создается новая таблица с именем myTable с секционированием по столбцу date . При использовании RANGE RIGHT и дат в качестве граничных значений в каждой секции будут находиться данные для одного месяца.
CREATE TABLE myTable ( l_orderkey bigint, l_partkey bigint, l_suppkey bigint, l_linenumber bigint, l_quantity decimal(15,2), l_extendedprice decimal(15,2), l_discount decimal(15,2), l_tax decimal(15,2), l_returnflag char(1), l_linestatus char(1), l_shipdate date, l_commitdate date, l_receiptdate date, l_shipinstruct char(25), l_shipmode char(10), l_comment varchar(44)) WITH ( DISTRIBUTION = HASH (l_orderkey), CLUSTERED COLUMNSTORE INDEX, PARTITION ( l_shipdate RANGE RIGHT FOR VALUES ( '1992-01-01','1992-02-01','1992-03-01','1992-04-01','1992-05-01', '1992-06-01','1992-07-01','1992-08-01','1992-09-01','1992-10-01', '1992-11-01','1992-12-01','1993-01-01','1993-02-01','1993-03-01', '1993-04-01','1993-05-01','1993-06-01','1993-07-01','1993-08-01', '1993-09-01','1993-10-01','1993-11-01','1993-12-01','1994-01-01', '1994-02-01','1994-03-01','1994-04-01','1994-05-01','1994-06-01', '1994-07-01','1994-08-01','1994-09-01','1994-10-01','1994-11-01', '1994-12-01' )) );Следующие шаги
- CREATE TABLE AS SELECT (Azure Synapse Analytics)
- DROP TABLE (Transact-SQL)
- Инструкция ALTER TABLE (Transact-SQL)
- sys.index_columns (Transact-SQL)
Создает новую таблицу в хранилище в Microsoft Fabric.
Дополнительные сведения об Azure Synapse Analytics и analytics Platform System (PDW) см. в статье CREATE TABLE (Azure Synapse Analytics). Для платформ SQL Server и Azure SQL перейдите на страницу CREATE TABLE и выберите нужную версию продукта в раскрывающемся списке.
Синтаксис
-- Create a new table. CREATE TABLE < database_name.schema_name.table_name | schema_name.table_name | table_name >( < column_name [ ] > [ . n ] ) [;] ::= [ NULL | NOT NULL ] -- default is NULL ::= datetime2 ( n ) | date | time ( n ) | float [ ( n ) ] | real [ ( n ) ] | decimal [ ( precision [ , scale ] ) ] | numeric [ ( precision [ , scale ] ) ] | bigint | int | smallint | bit | varchar [ ( n ) ] | char [ ( n ) ] | varbinary [ ( n ) ] | binary [ ( n ) ] | uniqueidentifierАргументы
database_name
Имя базы данных, которая будет содержать новую таблицу. Значение по умолчанию — текущая база данных.
schema_name
Схема таблицы. Схема является необязательной. Если пусто, используется схема по умолчанию.
table_name
Имя новой таблицы. Чтобы создать локальную временную таблицу, укажите # перед именем таблицы.
column_name
Имя столбца таблицы.
Параметры столбца
NULL | NOT NULL
Указывает, допустимы ли для столбца значения NULL . Значение по умолчанию — NULL .Тип данных
Microsoft Fabric поддерживает наиболее часто используемые типы данных.
Аналогично SQL Server существует ограничение в 8060 байт на строку. Это может стать блокирующей проблемой для таблиц с большим количеством столбцов или столбцов с большими типами данных, такими как varchar(8000) или varbinary(8000) . Вставки или обновления, нарушающие ограничение на 8060 байт, приводят к ошибкам с кодами 511 или 611. Дополнительные сведения см. в разделе Руководство по архитектуре страниц и экстентов.
В следующем списке поддерживаемых типов данных содержатся сведения и байты хранилища.
datetime2 ( n )
Хранит дату и время дня с 19 до 26 символов в соответствии с григорианским календарем. Дата может содержать год, месяц и день. Время содержит часы, минуты и секунды. В качестве параметра можно хранить и отображать ноль до шести цифр для дробных секунд на основе параметра n . Размер при хранении составляет 8 байт. n может иметь значение от 0 до 6 .Точность по умолчанию, как и другие платформы SQL, отсутствует. Необходимо указать значение точности от 0 до 6 .
Значение n Точность Масштабировать 0 19 0 1 21 1 2 22 2 3 23 3 4 24 4 5 25 5 6 26 6 date
Сохраняет дату длиной до 10 символов по григорианскому календарю. Размер при хранении составляет 3 байта. Дата сохраняется в виде целого числа.time ( n )
n может иметь значение от 0 до 6 .float [ ( n ) ]
Типы приблизительных числовых данных, используемые для числовых данных с плавающей запятой. Данные с плавающей запятой являются приблизительными, поэтому не все значения из диапазона могут быть отображены точно. n указывает количество битов, используемых для хранения мантиссы float в экспоненциальном представлении. n определяет точность и размер хранения данных. Если указан параметр n, он должен находиться в диапазоне от 1 до 53 . Значение n по умолчанию — 53 .Точность по умолчанию, как и другие платформы SQL, отсутствует. Необходимо указать значение точности от 0 до 6 .
Значение n Точность Объем памяти 1–24 7 цифр 4 байта 25–53 15 знаков 8 байт Azure Synapse Analytics обрабатывает n как одно из двух возможных значений. Если 1 nn принимает значение 24 . Если 25 nn принимает значение 53 .
Тип данных Azure Synapse Analytics float соответствует стандарту ISO для всех значений n от 1 53 нуля. Синонимом типа double precision является тип float(53) .
real [ ( n ) ]
Определение типа real соответствует определение типа float. Синонимом по стандарту ISO для типа real является float(24) .decimal [ ( точность [ , масштаб ] ) ] | numeric [ ( точность [ , масштаб ] ) ]
Хранит числа с фиксированной точностью и масштабом.precision
Максимальное количество десятичных разрядов числа (как слева, так и справа от десятичной запятой). Точность должна находиться в диапазоне от 1 до 38 . Точность по умолчанию — 18 .scale
Максимальное количество десятичных разрядов числа справа от десятичной запятой. Масштаб должен иметь значение от 0 до точности. Масштаб можно указать только в том случае, если указана точность. Масштаб по умолчанию — 0 , поэтому 0 масштабточность. Максимальный размер хранилища зависит от точности.Точность Байты хранилища 1–9 5 10–19 9 20–28 13 29–38 17 bigint | int | smallint
Типы точных числовых данных, использующие целые значения. Размер данных хранения приведен в следующей таблице.Тип данных Байты хранилища bigint 8 int 4 smallint 2 bit
Целочисленный тип данных, который может принимать значения 1 , 0 или NULL. Azure Synapse Analytics оптимизирует хранение битовых столбцов. Если в таблице имеется 8 или менее столбцов типа bit, они хранятся как 1 байт. Если имеется от 9 до 16 столбцов типа bit, они хранятся как 2 байта и т.д.varchar [ ( n ) ] Переменная длина, символьные данные Юникода с длиной n байтов. n может иметь значение от 1 до 8000 . Размер хранения равен фактической длине данных плюс два байта. Значение n по умолчанию — 1 .
char [ ( n ) ]
Фиксированной длины, символьные данные Юникода с длиной n байтов. n может иметь значение от 1 до 8000 . Размер при хранении составляет n байт. Значение n по умолчанию — 1 .varbinary [ ( n ) ] Двоичные данные переменной длины. n может иметь значение от 1 до 8000 . Размер хранения равен фактической длине данных плюс два байта. Значение по умолчанию для n равно 7.
uniqueidentifier
16-байтовый идентификатор GUID.Разрешения
Разрешения в Microsoft Fabric отличаются от разрешений Azure Synapse Analytics.
ограничения
- Имена таблиц не могут превышать 128 символов.
- Имена таблиц в хранилище в Microsoft Fabric не могут содержать символы / или \ .
- Имена столбцов не могут превышать 128 символов.
- Значение по умолчанию и только параметры сортировки, поддерживаемые в хранилище, Latin1_General_100_BIN2_UTF8.
Замечания
В хранилище существует ограниченная функциональность Transact-SQL. Дополнительные сведения см. в статье «Область поверхности TSQL» в Microsoft Fabric.
Режим блокировки
Принимает блокировку изменения схемы в таблице, общую блокировку базы данных и блокировку стабильности схемы в схеме.
Следующие шаги
- Создание таблиц в хранилище в Microsoft Fabric
- Что такое хранение данных в Microsoft Fabric?
Создание таблиц. Оператор CREATE TABLE . Примеры
Перед изучением данной темы рекомендуется ознакомиться с темой:
Поиск на других ресурсах:
1. Оператор CREATE TABLE . Создание таблицы. Общая форма
Таблица является основным элементом любой реляционной базы данных. Вся необходимая информация, которая должна храниться в базе данных, размещается в таблицах. Таблицы могут быть связаны между собой. Количество таблиц в базе данных не ограничено и зависит от сложности решаемой задачи.
Для создания таблицы в языке SQL используется оператор CREATE TABLE . В простейшем случае общая форма оператора CREATE TABLE следующая
CREATE TABLE Table_Name ( Field_Name_1 Type_1, Field_Name_2 Type_2, . Field_Name_N Type_N )- Table_Name – имя таблицы базы данных. Если в базе данных есть таблица с таким именем, то возникнет ошибка;
- Field_Name_1 , Field_Name_2 , Field_Name_N – имена полей (столбцов) таблицы базы данных. Имя каждого поля должно быть уникальным. В разных таблицах имена полей могут совпадать;
- Type_1 , Type_2 , Type_N – соответственно типы полей Field_Name_1 , Field_Name_2 , Field_Name_N такие как INTEGER , DECIMAL , DATE и другие.
На поля Field_Name_1 , Field_Name_2 , Field_Name_N могут накладываться ограничения. Каждое ограничение указывается после имени поля. В этом случае общая форма оператора CREATE TABLE выглядит примерно следующим образом:
CREATE TABLE Table_Name ( Field_Name_1 Type_1 Attribute_1, Field_Name_2 Type_2 Attribute_2, . Field_Name_N Type_N Attribute_N )- Attribute_1 , Attribute_2 , Attribute_N – ограничения, накладываемые на поля Field_Name_1 , Field_Name_2 , Field_Name_N . Ограничения задаются одним из возможных слов: NULL , NOT NULL , UNIQUE , CHECK , PRIMARY KEY , FOREIGN KEY и других.
Рассмотрение существующих полей атрибутов в языке SQL не является предметом изучения данной темы.
2. Примеры создания таблиц
2.1. Пример создания простейшей таблицы учета товаров в магазине
Условие задачи.
Решение.
CREATE TABLE [Product] ( [ID_Product] Integer Not Null Primary Key, [Name] VarChar(100) , [Price] Decimal(15, 2), [Count] Integer, [Date] Date, [Note] VarChar(200) )
В Microsoft SQL Server допускается задавать имена полей без их обрамления в квадратные скобки [] . То есть, предыдущая команда может быть переписана следующим образом
CREATE TABLE Product ( ID_Product Integer Not Null Primary Key, Name VarChar(100) , Price Decimal(15, 2), Count Integer, Date Date, Note VarChar(200) )
В приведенном выше коде для поля ID_Product задаются ограничения Not Null и Primary Key . В результате запуска программы на SQL будет создана следующая таблица
ID_Product Name Price Count Date Note … … … … … … На рисунке 1 отображаются поля созданной таблицы в Microsoft SQL Server Management Studio.

Рисунок 1. Этапы создания таблицы Product в Microsoft SQL Server Management Studio 18: 1 – создание файла; 2 – набор SQL-запроса; 3 – запуск запроса на выполнение; 4 – результирующая таблица
Конечно, можно создать таблицу, в которой нет поля ID_Product и нету первичного ключа. Такая таблица не будет обеспечивать уникальность записей, поскольку возможна ситуация, когда данные в двух записях могут совпасть. В этом случае SQL код программы имеет вид
CREATE TABLE Product ( Name VarChar(100) , Price Decimal(15, 2), Count Integer, Date Date, Note VarChar(200) )
2.2. Пример создания таблицы учета телефонов абонентов
Условие задачи.
Используя средства языка SQL (T-SQL) создать таблицу учета телефонов абонентов.
Name Address Phone Number 1 Phone Number 2 Phone Number 3 Ivanov I.I. New York 123456 067-1234567 – Johnson J. Kiev 789012 033-7777778 102 Petrenko P.P. Warshaw 044-2521412 – – … … … … … Обеспечить уникальность и корректное сохранение записей таблицы.
Решение.
Для обеспечения уникальности записей нужно создать дополнительное поле – счетчик. Это поле будет увеличивать свое значение на 1 при каждом добавлении новой записи. Если запись будет удаляться, текущее максимальное значение счетчика не будет уменьшаться. Таким образом, все числовые значения этого поля будут различаться между собой (будут уникальными). В нашем случае добавляется поле ID_Subscriber . Это поле не допускает нулевые значения (NULL).
Для полей Name и [Phone Number 1] целесообразно задать ограничение (атрибут) NOT NULL . Это означает, что в эти поля обязательно нужно ввести значение. Это логично, поскольку абонент в базе данных должен иметь как минимум имя и хотя бы один номер телефона.
После внесенных изменений поля таблицы будут иметь следующие свойства
Название поля Тип данных Объяснение ID_Subscriber INTEGER Первичный ключ, счетчик, NOT NULL Name VARCHAR(50) Фамилия и имя абонента Address VARCHAR(100) Адрес [Phone Number 1] VARCHAR(20) NOT NULL [Phone Number 2] VARCHAR(20) [Phone Number 3] VARCHAR(20) Учитывая вышесказанное, команда CREATE TABLE на языке Transact-SQL (T-SQL) будет выглядеть следующим образом
Create Table Subscriber ( ID_Subscriber Int Not Null Primary Key, [Name] VarChar(50) Not Null, [Address] VarChar(100), [Phone Number 1] VarChar(20) Not Null, [Phone Number 2] VarChar(20), [Phone Number 3] VarChar(20) )
В запросе имена полей
[Phone Number 1] [Phone Number 2] [Phone Number 3]
обязательно должны быть в квадратных скобках [] , поскольку имена состоят из нескольких слов (между словами есть символ пробела).
На рисунке 2 показаны этапы создания таблицы в системе Microsoft SQL Server Management Studio.

Рисунок 2. Окно Microsoft SQL Server Management Studio. Этапы формирования запроса: 1 — создание файла «SQL Query 2.sql» ; 2 — набор SQL-запроса; 3 — выполнение; 4 — результирующая таблица
2.3. Пример создания таблицы учета заработной платы и отчислений в организации
Условие задачи
Используя язык SQL сделать таблицу Account , в которой ведется учет начисленной заработной платы в некой организации. Образец таблицы следующий
Name Position Accrued salary Date of employment Gender Johnson J. Manager 3200.00 01.02.2128 M Petrova M.P. Clerk 2857.35 02.03.2125 F Williams J. Secretary 3525.77 01.08.2127 F Wilson K. Recruiter 1200.63 22.07.2125 F … … … … … Таблицу реализовать так, чтобы обеспечивалась уникальность записей.
Решение.
Чтобы обеспечить уникальность записей, создается дополнительное поле-счетчик ID_Account типа Int. Это поле целесообразно выбрать первичным ключом, если нужно будет использовать данные этой таблицы в других связанных таблицах.
После модификации поля таблицы будут иметь следующие свойства.
Название поля (атрибут) Тип данных Дополнительные объяснения ID_Account Int Автоинкремент (счетчик), первичный ключ (Primary Key), ненулевое поле (Not Null), обеспечивает уникальность записей [Name] VARCHAR(50) Фамилия и имя, не нулевое поле (Not Null) Position VARCHAR(100) Должность, не нулевое поле (Not Null) Salary DECIMAL Тип, предназначенный для сохранения денежных величин [Employment Date] DATE Дата, не нулевое поле (Not Null) Gender CHAR(1) Стать, не нулевое поле (Not Null) В модифицированной таблице поле Salary допускает нулевые ( Null ) значения. Таким случаем может быть, например, когда человек принят на работу, но заработная плата ему еще не начислена. В данной ситуации временно устанавливается Null-значение. Все остальные поля обязательны для заполнения.
Запрос на язык SQL, создающий вышеприведенную таблицу имеет вид
/* Create the Account table */ Create Table Account ( ID_Account Int Not Null Primary Key, [Name] VarChar(50) Not Null, [Position] VarChar(100) Not Null, Salary Decimal Null, [Employment Date] Date Not Null, Gender Char(1) )
Результат выполнения SQL-запроса показан на рисунке 3

Рисунок 3. Результат выполнения запроса на языке Transact-SQL (T-SQL)
Связанные темы
- Microsoft SQL Server Management Studio 18. Пример создания простейшего запроса
- Модификация таблиц. Оператор ALTER TABLE . Примеры
Руководство по SQL. Создание таблицы.
Создание таблицы в базе данных (далее – БД) включает в себя присваивание имени таблице и определение колонок и типа данных каждой из них.
Общий синтаксис создания таблицы имеет следующий вид:
CREATE TABLE имя_таблицы( колонка1 тип_данных, колонка2 тип_данных, колонка3 тип_данных, . PRIMARY KEY( одна или несколько колонок ) );Ключевое слово CREATE TABLE говорит RDBMS, что мы хотим создать новую таблицу. В результате этого происходит её создание, при условии корректного синтаксиса.
Таблица должна иметь уникальное имя внутри БД.Предположим, что мы хотим создать таблицу developers, которая будет иметь следующий вид:
SQL> CREATE TABLE developers( ID INT NOT NULL, NAME VARCHAR (100) NOT NULL, SPECIALTY VARCHAR(100) NOT NULL, EXPERIENCE INT NOT NULL, SALARY INT, PRIMARY KEY (ID) );После создания таблицы и добавления в неё данных, она будет иметь следующий вид:
mysql> SELECT * FROM developers; +----+---------------------+-----------+------------+--------+ | ID | NAME | SPECIALTY | EXPERIENCE | SALARY | +----+---------------------+-----------+------------+--------+ | 1 | Eugene Suleimanov | Java | 2 | 2000 | | 2 | Peter Romanenko | C++ | 3 | 3000 | | 3 | Andrei Komarov | C++ | 1 | 1500 | | 4 | Konstantin Rizhenko | PHP | 2 | 2200 | +----+---------------------+-----------+------------+--------+ 4 rows in set (0.00 sec)Мы также можем создать копию уже существующей таблицы:
mysql> CREATE TABLE developers_copy AS SELECT ID, NAME, SPECIALTY, EXPERIENCE, SALARY FROM developers; Query OK, 4 rows affected (0.16 sec) Records: 4 Duplicates: 0 Warnings: 0В результате мы получим следующую таблицу:
mysql> SELECT * FROM developers_copy; +----+---------------------+-----------+------------+--------+ | ID | NAME | SPECIALTY | EXPERIENCE | SALARY | +----+---------------------+-----------+------------+--------+ | 1 | Eugene Suleimanov | Java | 2 | 2000 | | 2 | Peter Romanenko | C++ | 3 | 3000 | | 3 | Andrei Komarov | C++ | 1 | 1500 | | 4 | Konstantin Rizhenko | PHP | 2 | 2200 | +----+---------------------+-----------+------------+--------+ 4 rows in set (0.00 sec)На этом мы заканчиваем изучение способов создания новых таблиц в БД.
В следующей статье мы рассмотрим удаление существующих таблицы из БД.SQL CREATE TABLE
Инструкция CREATE TABLE используется для создания новой таблицы в базе данных.
Синтаксис CREATE TABLE
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype,
.
);Параметры столбцов задают имена столбцов таблицы.
Параметр datatype указывает тип данных, которые может содержать столбец (например, varchar, integer, date и т.д.).
Совет: Для получения обзора доступных типов данных перейдите Справочник Типы данных.
Пример CREATE TABLE
В следующем примере создается таблица «Persons», содержащая пять столбцов: PersonID, LastName, FirstName, Address, и City:
Пример
CREATE TABLE Persons (
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);Столбец PersonID имеет тип int и будет содержать целое число.
Столбцы LastName, FirstName, Address, and City имеют тип varchar и будут содержать символы, а максимальная длина этих полей составляет 255 символов.
Пустая таблица «Persons» теперь будет выглядеть так:
PersonID LastName FirstName Address City Совет: Пустая таблица «Persons» теперь может быть заполнена данными с помощью инструкции SQL INSERT INTO.
Создать таблицу, используя другую таблицу
Копия существующей таблицы также может быть создана с помощью команды CREATE TABLE.
Новая таблица получает те же определения столбцов. Можно выбрать все столбцы или отдельные столбцы.
Если вы создадите новую таблицу, используя существующую таблицу, новая таблица будет заполнена существующими значениями из старой таблицы.
Синтаксис CREATE TABLE
CREATE TABLE new_table_name AS
SELECT column1, column2.
FROM existing_table_name
WHERE . ;Следующий SQL создает новую таблицу под названием «TestTables» (которая является копией таблицы «Customers»):
Пример
CREATE TABLE TestTable AS
SELECT customername, contactname
FROM customers;Мы только что запустили
SchoolsW3 видеокурс сегодня!
Сообщить об ошибке
Если вы хотите сообщить об ошибке или внести предложение, не стесняйтесь отправлять на электронное письмо:
Ваше предложение:
Спасибо Вам за то, что помогаете!
Ваше сообщение было отправлено в SchoolsW3.
Schoolsw3 оптимизирован для бесплатного обучения, проверки и подготовки знаний. Примеры в редакторе упрощают и улучшают чтение и базовое понимание. Учебники, ссылки, примеры постоянно пересматриваются, чтобы избежать ошибок, но не возможно гарантировать полную правильность всего содержания. Некоторые страницы сайта могут быть не переведены на РУССКИЙ язык, можно отправить страницу как ошибку, так же можете самостоятельно заняться переводом. Используя данный сайт, вы соглашаетесь прочитать и принять Условия к использованию, Cookies и политика конфиденциальности.