Create Table
Команда Create Table SQL предназначена для описания структуры таблицы. Команда SQL Create Table создает пустую таблицу (без строк).
Если вы знакомы с SQL Create Table, то наверняка знаете о пунктах, которые мы перечислим ниже, однако если всё-таки вы что-то подзабыли, то милости просим – как говорится, повторение мать учения. Итак, Create Table MySQL, прежде всего, поддерживает опцию определения локальных столбцов, которые, в свою очередь, определяют тип данных, а также имя данных в столбце. Также определяется опция вычисляемых столбцов, вычисление происходит в тех случаях, когда организуется доступ к таблице. Что касается столбцов, которые основаны на доменах, то для них определение может включать каждое значение по умолчанию. Оно также определяет порядок сортировки. В связи с этим определение домена отменяется автоматически. Есть ряд описаний, которые включают предложение CHARACTER SET, определяя кодировку, присущую одному столбцу. При неиспользовании описаний, кодировка остаётся прежней (базовой). Стоит отметить, что текущие столбцы никак не меняются. Что же касается Create Table Oracle, то оно определяет фрагментацию таблицы.
CREATE TABLE MySQL
Create Table. Пример №1.
CREATE TABLE Persons (
P_Id int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);
Create Table. Пример №2.
CREATE TABLE `blocklist` (
`email` text NOT NULL,
`login` text NOT NULL,
`remote_addr` text NOT NULL,
`browser` text NOT NULL,
`payment_wmid` text NOT NULL,
`payment_account` text NOT NULL,
`payment_raccount` text NOT NULL
);
Oracle Create Table
Синтаксис команды Create Table
Определение ограничений целостности таблицы SQL. Чтобы предохранить поле от разрешения в нем пустых (NULL) указателей для столбца задается ограничение NOT NULL.
Create Table. Пример №3.
CREATE TABLE Student (
Kod_stud integer NOT NULL,
Fam char (30) NOT NULL ,
Adres char (50),
Ball decimal
);
При создании, с помощью CREATE TABLE, любому столбцу с ограничением NOT NULL должно быть установлено значение в каждом предложении INSERT, воздействующем на таблицу.
Создание вспомогательных таблиц
Во вспомогательной таблице хранятся соответствующие сведения для каждой записи, которые можно извлечь для персонализации сообщения кампании или документа формы. Со списком рассылки можно связать один или несколько дополнительных источников данных, используя поля извлечения данных. В отличие от таблицы расширения профиля (PET), в которой хранятся агрегированные данные, вспомогательная таблица содержит неагрегированные сведения. Например, какой-то человек произвел несколько просмотров или совершил несколько покупок.
По умолчанию Oracle Responsys разрешает 250 вспомогательных таблиц на учетную запись. Установите для вспомогательных таблиц, необходимых только временно, дату окончания срока действия.
Совет. Для новых учетных записей, инициализированных после версии 19A, системные администраторы могут определить на основе отраслевой вертикали предварительно определенный набор активов (список профилей, таблицы расширения профилей и вспомогательные таблицы), которые автоматически включаются в учетную запись. Дополнительные сведения см. в разделе Предварительно загружаемые активы данных.
Вспомогательную таблицу можно создать с помощью нескольких разных методов:
- Импортируйте таблицу, которая была сохранена в другой программе в формате с запятыми или знаками табуляции в качестве разделителей.
- Создайте пустую таблицу, определив поля таблицы.
- Создайте пустую таблицу путем извлечения определений полей из документов.
Первичный ключ
Первичный ключ, уникально определяющий запись в таблице. Если во вспомогательной таблице содержатся, например, сведения о покупках получателей, адрес электронной почты получателя может использоваться в качестве первичного ключа для определения покупок, относящихся к этому получателю. Или если во вспомогательной таблице, например, хранится каталог продукции, в качестве первичного ключа для идентификации продукта может использоваться номер складской единицы или идентификатор продукции.
Ключ извлечения данных
В Responsys ключ извлечения данных можно использовать как:
-
Внешний ключ между вспомогательной таблицей и таблицей профиля кампании или формы.
В качестве внешнего ключа ключ (или ключи) извлечения данных используется для сопоставления записи во вспомогательной таблице с записью в списке профилей для персонализации в кампании или форме. Примечание. Ключ извлечения данных будет работать для персонализации только в том случае, если назначенные имена столбцов ключа извлечения существуют и во вспомогательной таблице, и в списке профилей. Например, невозможно сопоставить столбец вспомогательной таблицы CITY со столбцом таблицы профиля HOME_CITY для ключа извлечения данных. Если кампания содержит ссылку на вспомогательную таблицу как на источник данных не для поиска или эта таблица заявлена в предварительной подстановке данных формы, для персонализации используются данные из первой соответствующей записи, найденной базой данных, где значения ключа извлечения данных совпадают со значениями получателя в списке профилей.
Если ключ извлечения данных используется как ключ сопоставления, он предназначен для сохранения данных отправки формы во вспомогательную таблицу с помощью правила формы для привязки вспомогательной таблицы. Responsys пытается сопоставить значения ключа извлечения данных из формы и значения столбцов ключа извлечения данных во вспомогательной таблице. Если совпадение найдено, первая найденная запись во вспомогательной таблице обновляется значением данных формы. Если совпадение не найдено, Responsys вставляет данные формы как новую запись во вспомогательной таблице. Примечание. Имя (или имена) входных данных должны совпадать с именем (или именами) столбца ключей извлечения данных вспомогательной таблицы.
Примечание. Объявление нескольких столбцов в качестве ключей извлечения данных приводит к созданию составного ключа. Для установления соответствия все значения столбцов в списке профилей и вспомогательной таблицы должны совпадать. Объявление нескольких столбцов ключей извлечения данных во вспомогательной таблице не устанавливает последовательности приоритетов сопоставления; набор правил сопоставления приоритетов не может быть установлен через ключи извлечения данных.
Рекомендованной использование
Для персонализации отдельного сообщения на основе списка нескольких квалификационных записей в отдельной вспомогательной таблице. Например, можно перечислить все магазины, соответствующие городу получателя. В этом случае вспомогательная таблица будет объявлена в источниках данных кампании как таблица поиска. Для форм вспомогательная таблица не добавляется в предварительную подстановку данных формы, для ссылки на вспомогательную таблицу будет использоваться встроенная функция lookuprecords().
См. также
- Создание таблиц расширений профилей
- Предварительно загружаемые активы данных
- Списки и источники данных
- Общие сведения о списках и источниках данных
- Создание вспомогательной таблицы с использованием текстового файла с разделителями
- Создание вспомогательной таблицы путем определения полей
- Создание вспомогательной таблицы на основе документов
- Изменение вспомогательной таблицы
Создание таблиц в базе данных Oracle

Как мы уже поняли, основная информация, с которой нам предстоит работать в базе данных, находится в таблицах. Про таблицы важно знать следующие важные сведения:
- каждая таблица обладает уникальным наименованием;
- у таблицы обязательно должны быть колонки, каждая из которых обладает уникальным наименованием в рамках этой таблицы;
- для каждой колонки таблицы задается свой тип данных (про типы данных подробно рассказывается в предыдущем шаге).
Важные замечания
- Имена таблиц, имена колонок в SQL имеют ограничение по количеству символов и не могут называться зарезервированным словом, таким как команда из языка SQL.
Например, нельзя назвать таблицу или колонку GROUP, это зарезервированное слово, часть команды GROUP BY , или же недопустимо называть таблицу или колонку таблицы FROM , SELECT , INSERT , KEY .
- Имена таблиц и имена колонок не могут начинаться с цифр; также принято использовать при именовании таблиц и колонок латинские буквы, хотя, впрочем, вполне возможно назвать таблицы и колонки таблиц на русском, китайском и даже хинди (я видел и такое), но подобные выкрутасы не приветствуются.
- Очень желательно, чтобы наименования таблиц, а также наименования колонок таблиц отражали смыл относительно данных, которые содержатся в этих таблицах, например: MANS, CARS, STAFF – люди, машины, персонал, GOODS – товары, ITEMS – элементы.
Теория и практика
Теперь, когда мы разобрались с теоретической частью, самое время заняться практическими упражнениями. Разберемся на практике, как создавать таблицы в базе, используя язык SQL.
Для создания таблиц используется специальная команда SQL CREATE TABLE . Синтаксис упрощенный.
CREATE TABLE имя таблицы ( Column_NAME1 column_type (NUMBER, или VARCHAR2 (n) или DATE) primary KEY, Column_NAME 2 column_type (NUMBER, или VARCHAR2 (n) или DATE), Column_NAMEn column_type (NUMBER или VARCHAR2 (n) или DATE) );
Для простоты на начальном этапе в наших практических примерах мы будем использовать три основных типа данных.
(NUMBER , VARCHAR2 (n) , DATE ), соответственно, для хранения чисел, строковых данных и данных календарного типа (дата/время).
Для текстового типа VARCHAR2 (n) после VARCHAR2 в скобках указывается количество символов для данной колонки.
Итак, сначала идет команда создания таблицы CREATE TABLE , далее – наименование таблицы: MANS, GOODS, ITEMS или любое другое.
Далее в скобках через запятую перечисляются наименования колонок и тип колонок.
Вот несколько примеров, как создавать таблицы в языке SQL:
- Создать таблицу «Мебель»:
- артикул;
- наименование;
- количество;
- номер партии.
CREATE TABLE furnit (artikl VARCHAR2 (50) PRIMARY KEY, NAME VARCHAR2 (50),partCOUNT NUMBER, partnum NUMBER);
- Создать таблицу «Корзина для веб-магазина»:
- артикул;
- наименование товара;
- имя покупателя;
- количество;
- дата покупки.
CREATE TABLE shopINgcart ( article VARCHAR2 (50) PRIMARY KEY ,itemNAME VARCHAR2 (50) ,buyerNAME VARCHAR2 (50) ,itemCOUNT NUMBER ,dtbuy DATE );
Создать таблицу «Предприятие»:
- название бригады;
- номер бригады;
- количество человек;
- дата создания;
- направление деятельности.
CREATE TABLE plant ( NAMEteam VARCHAR2 (15), numteam NUMBER PRIMARY KEY, MANCOUNT NUMBER, crDATE DATE, dirToDo VARCHAR2 (30) );
Возможные Вопросы
Можно ли использовать заглавные буквы в языке SQL и когда это допустимо?
Язык SQL не зависит от регистра, то есть при составлении команд можно писать и заглавными, и строчными буквами.
SQL-Ex blog

Сравнение оператора Create Table в SQL Server и Oracle
Добавил Sergey Moiseenko on Суббота, 24 сентября. 2022
Если вы работаете с базами данных, то, вероятно, уже знаете как создать таблицу, определить столбцы, указать типы данных, добавить первичный ключ, внешние ключи и ограничения. Помимо стандартных таблиц и столбцов что другое возможно для таблиц в SQL Server и Oracle?
Ниже вы можете найти различные вещи, которые вы можете делать с таблицами и столбцам при определении новой таблицы. Мы рассмотрим возможности SQL Server и Oracle на Windows. Это позволит максимально использовать существующую инфраструктуру, сократив усилия на разработку, или позволит вам выбрать то или иное решение в зависимости от имеющихся требований. Заметим, что некоторые из этих элементов могут быть соединены вместе, а другие взаимно исключают друг друга, и в некоторых случаях свойство нельзя изменить после создания. Приведу ссылки на соответствующие теме разделы документации для Oracle и SQL Server.
Похожие атрибуты оператора Create Table для SQL Server и Oracle
Ниже описывается сходство между SQL Server и Oracle; исключение составляют свойства индексирования, которые могут быть заданы независимо.
Скрытый/невидимый столбец
- В SQL Server это доступно только в темпоральных таблицах (Temporal Tables) с указанием HIDDEN на уровне столбца.
- В Oracle это достигается указанием INVISIBLE на уровне столбца для всех типов таблиц, за исключением EXTERNAL, CLUSTER или TEMPORARY.
Шифрованный столбец
- В SQL Server это осуществляется с помощью ENCRYPTED WITH, что может быть DETERMINISTIC (всегда производится одно и то же значение, позволяя создавать индекс и выполнять соединения) или RANDOMIZED, при этом доступен только один алгоритм — AEAD_AES_256_CBC_HMAC_SHA_256.
- В Oracle используется ENCRYPT USING, имеются следующие алгоритмы: AES256, AS192, AES128, 3DES168, ARIA128, ARIA192, ARIA256, GOST256 и SEED128. Это позволяет вам задавать разные пароли для каждого столбца, выбрать алгоритм целостности SHA-1 (который снижает производительность и не сжимается) или NOMAC, и позволяет добавить SALT (по умолчанию, если не указано) или NO SALT (всегда производит одно и то же значение, позволяя индексирование и соединения); следует отметить, что это является устаревшим по сравнению с шифрованием табличного пространства.
Виртуальный/вычисляемый столбец
- В SQL Server это выполняется с помощью синтаксиса AS .
- В Oracle используется GENERATED ALWAYS AS VIRTUAL, и вы можете указать редакцию функции PL/SQL, которая используется для вычислений или которая не должна использоваться.
Столбец Identity
- В SQL Server это делает с помощью IDENTITY ( , ), и вы можете указать NOT FOR REPLICATION, чтобы не инкрементировать значения во время репликации.
- В Oracle это достигается с помощью GENERATED ( ALWAYS | BY DEFAULT ON NULL ) AS IDENTITY START WITH ( | LIMIT VALUE ) INCREMENT BY MAXVALUE ( | NOMAXVALUE ) MINVALUE ( | NOMINVALUE ) ( CYCLE | NOCYCLE ) ( CACHE | NOCACHE ) ( ORDER | NOORDER ), некоторые из этих опций те же, что и для последовательностей.
Столбец ROWGUIDCOL или ROWID
- В SQL Server это используется в репликации и FileStream заданием ROWGUIDCOL на уровне столбца.
- В Oracle это псевдостолбец с именем ROWID, который уже присутствует во всех таблицах, но является невидимым. Заметим также, что имеется тип данных ROWID, который может использоваться.
Столбец больших объектов
- В SQL Server это делается с помощью FILESTREAM (сохраняется в файловой системе, требует отдельной файловой группы), FileTable (доступной извне, как если бы она находилась в файловой системе, допускает полнотекстовый и семантический поиск, не допускает файлы с отображением в памяти) и Remote Blob Store (файл сохраняется отдельно от базы данных, хранится только ссылка, позволяет управлять доступом и допускает шифрование). Отметим, что имеются также большие/неограниченного-размера типы полей, но они могу хранить максимум 2 Гб, которые могут быть сохранены в отдельной файловой группе с помощью предложения TEXTIMAGE_ON. Этими типами являются: TEXT, IMAGE, XML, VARCHAR(MAX), VARBINARY(MAX), GEOMETRY и GEOGRAPHY.
- В Oracle это называется LOB и может хранить до 128 Тб данных, может секционироваться и обеспечивается любым из следующих типов данных: BLOB (двоичный), CLOB (символьный), NCLOB (национальный набор символов), BFILE (внешний файл, только на чтение), VARRAY STORE AS LOB (или когда размер превышает 4000), XMLType, ORDAudio, ORDDoc, ORDImage, ORDVideo. Отметим, что тип LONG является устаревшим, хранилище может быть задано как BASICFILE (обратная совместимость) или SECUREFILE (высокая производительность, дедупликация, сжатие, шифрование), а также позволяет задавать кэширование и журнализацию.
Архив воспоминаний/версионная строка
- В SQL Server это делается с помощью SYSTEM_VERSIONING = ON HISTORY_TABLE = , DATA_CONSISTENCY_CHECK = ( ON | OFF ).
- В Oracle используется FLASHBACK ARCHIVE RETENTION YEAR | MONTH | DAY.
Временная валидность / Архив / Строка хранения данных
- В SQL Server это выполняется с помощью предложений для столбца GENERATED ALWAYS AS ROW START, GENERATED ALWAYS AS ROW END и PERIOD FOR. Или вы можете выполнить чистку старых или устаревших данных на основе политики с помощью DATA_DELETION = ON FILTER_COLUMN = RETENTION_PERIOD = .
- В Oracle это можно сделать с помощью предложения для таблицы PERIOD FOR и двух столбцов для времени начала и конца, или с помощью табличного предложения ROW ARCHIVAL, которое добавит скрытый столбец для указания, что строка является архивной.
Внешняя таблица
- В SQL Server это делается с помощью CREATE EXTERNAL TABLE ( ) WITH (LOCATION= , DATA_SOURCE= , FILE_FORMAT= , ), где LOCATION — это папка при запросе Hadoop или Windows Azure Storage, DATA_SOURCE должен существовать как описано здесь, FILE_FORMAT должен существовать для Hadoop и Windows Azure Storage описано здесь, а опции отклонения — это те опции для Hadoop или Windows Azure Storage, которые описаны здесь. Заметим, что это позволяет подключаться к другим РСУБД по естественным протоколам или с помощью OBDC.
- В Oracle это выполняется с помощью CREATE TABLE ( ) ORGANIZATION EXTERNAL (TYPE DEFAULT DIRECTORY ACCESS PARAMETERS ( |USING CLOB ) LOCATION ( )) REJECT LIMIT |UNLIMITED, где TYPE может быть ORACLE_LOADER, ORACLE_DATAPUMP, ORACLE_HDFS или ORACLE_HIVE, CLOB используется для вывода параметров доступа и их значений, а LOCATION может быть локальным каталогом, но не обязательно. В Oracle они совместимы с другим спецификациями: in memory, partitioned, parallel, encryption и т.п. Дополнительно к поддержке внешних данных, находящихся в файловых системах и источниках Big Data и форматах типа HDFS и Hive, Oracle поддерживает внешние данные, находящиеся в хранилищах объектов посредством пакета DBMS_CLOUD.
Сжатые таблицы
- В SQL Server это достигается с помощью DATA_COMPRESSION = ROW для нескольких повторяющихся значений или PAGE для повторяющихся значений по столбец + шаблоны на всей странице, вы можете делать это по-разному для каждой секции.
- В Oracle для этого используется ROW STORE COMPRESS BASIC (при вставке непосредственного пути) или ADVANCED (при всех операциях DML).
Сжатая таблица с поколоночным хранением
- В SQL Server это выполняется с помощью DATA_COMPRESSION = ROW | PAGE | COLUMNSTORE | COLUMNSTORE_ARCHIVE (более сильное сжатие, но занимает больше времени). Вы можете выбирать секции и задавать задержку (для использования всего доступного пространства в закрытых дельта-группах строк).
- В Oracle для этого используется COLUMN STORE COMPRESS FOR QUERY или ARCHIVE (более сильное сжатие, больше использования ЦП и больше времени) LOW или HIGH (большее сжатие) ROW LEVEL LOCKING (для производительности). И вы можете выбирать секции.
Таблицы в памяти
- В SQL Server для этого используется MEMORY_OPTIMIZED=ON DURABILITY=SCHEMA_ONLY или SCHEMA_AND_DATA.
- В Oracle для этого служит INMEMORY. Вы можете дифференцировать приоритет наполнения данными среди разных таблиц с помощью PRIORITY ( NONE | LOW | MEDIUM | HIGH | CRITICAL ), и можете распределять данные по экземплярам RAC с помощью DISTRIBUTE ( AUTO | BY ROWID RANGE | BY PARTITION | BY SUBPARTITION ), и можете дублировать данные по экземплярам RAC с помощью DUPLICATE (на одном дополнительном экземпляре) или DUPLICATE ALL (на всех экземплярах).
Временная таблица
- В SQL Server вам достаточно только указать префикс символа номера — # .
- В Oracle вы указываете CREATE PRIVATE TEMPORARY TABLE, и вы можете указать, должна ли таблица удаляться в конце транзакции с помощью ON COMMIT DROP DEFINITION или в конце сессии с помощью ON COMMIT PRESERVE DEFINITION.
Глобальная временная таблица
- В SQL Server задается префиксом в виде двойного значка номера — ## . Данные могут быть доступны в любой сессии, а таблица удаляется, когда сессия, с которой была создана таблица, завершается и завершается последний активный оператор T-SQL, ссылающийся на эту таблицу.
- В Oracle вы задаете CREATE GLOBAL TEMPORARY TABLE, но разделяется только определение таблицы (данные принадлежат только своей сессии), и вы можете указать, удаляются ли строки в конце транзакции с помощью ON COMMIT DELETE ROWS или же в конце сессии с помощью ON COMMIT PRESERVE ROWS.
Секцонная таблица
- В SQL Server это делается с помощью ON ( ), что требует схемы разбиения и функции разбиения.
- В Oracle это делается с помощью PARTITION(SET) BY ( RANGE | (CONSISTENT) HASH | LIST | REFERENCE | SYSTEM ) SUBPARTITION BY ( RANGE | HASH | LIST ) ( INTERNAL | EXTERNAL ) OVERFLOW. Каждый тип имеет разние характеристики и применение.
Пространственная таблица
- В SQL Server для этого применяюются типы данных GEOMETRY и GEOGRAPHY.
- В Oracle используется тип данных SDO_GEOMETRY.
Только в Oracle
Табличное пространство
Это место размещения хранилища данных на логическом уровне, которое позволяет задавать одни и те же характеристики для несколькх таблиц и/или секций, снижая конкуренцию за ресурсы и делая более гибким: использование ограниченного пространства, перевод файлов в автономный режим, делать файлы доступными только на чтение, выполнение резервирования или восстановления только некоторых файлов, распределение файлов по устройствам для улучшения производительности и т.д. Официальную документацию можно найти здесь.
Группа табличных пространств
Позволяет использовать несколько временных табличных пространств по умолчанию в различных сессиях одновременно при сокращении конкуренции. Это помогает избежать проблемы, вызванной ситуацией, когда одно временное табличное пространство не имеет достаточного пространства для размещения записей некоторого рода.
Столбец с ограниченной областью
Для использования меньшего пространства путем хранения указателей или ссылок на существующую строку, а не её значения. Для этого используется SCOPE IS, которое может включать WITH ROWID для улучшения производительности запросов.
Столбцы сопоставления зон
Зоной (zone) является набор непрерывных блоков данных на диске, в которой отслеживается минимальное и максимальное значение столбца (столбцов) в зоне. Используется для сокращения операций ввода/вывода и улучшения производительности посредством устранения карты зоны. Для применения используется WITH MATERIALIZED ZONEMAP.
Столбцы с кластеризацией атрибутов
Для кластеризации данных из нескольких таблиц в непосредственной физической близости для уменьшения операций ввода/вывода и улучшеня производительности. Выполняется с помощью CLUSTERING JOIN ON BY LINEAR | INTERLEAVED ORDER YES | NO ON LOAD YES | NO ON DATA MOVEMENT WITH | WITHOUT MATERIALIZED ZONEMAP , где INTERLEAVED используется для многомерного многостолбцового z-упорядочивания, ON LOAD — для выполнения во время последовательной или параллельной вставки или слияния по прямому пути, ON DATA MOVEMENT — для выполнения во время обслуживания переопределения или секционирования.
Заменяемый тип столбца
Чтобы указать, что объектно-ориентированные столбцы или атрибуты в той же иерархии являются заменяемыми друг для друга (полиморфизм). Это осуществляется с помощью ELEMENT IS OF TYPE ( ONLY ) (NOT) SUBSTITUTABLE AT ALL LEVELS.
Разделяемая таблица
Для разбиения больших таблиц на блоки данных или секции, которые размещаются на отдельных серверах, распределяя нагрузку на ресурсы и улучшая пропускную способность запросов и время отклика. Доступно только в Azure SQL Server, но в Oracle вы указываете SHARDED и можете сделать выбор между RANGE или LIST разделением, дублировать (DUPLICATE) данные во всех блоках, решить, какие таблицы связаны друг с другом через PARENT, уменьшая количество соединений нескольких блоков, и группировать таблицы из различных табличных пространств с помощью TABLESPACE SET.
Таблица блокчейн
Для создания защищенных от несанкционированного доступа таблиц. Это доступно только в Azure SQL Server для таблиц LEDGER, но в Oracle вы указывате BLOCKCHAIN и можете задать IMMUTABLE, чтобы сделать ее свободной, только для вставки.
Общая таблица приложений
Для обмена данными между родительской базой данных и подчиненными базами данных. Вы указываете SHARING и можете решить что разделять: METADATA, DATA или EXTENDED DATA (каждая PDB может иметь свои собственные данные, отделенные от данных CDB).
Таблица, оптимизированная для памяти
Отличается от таблиц в памяти (in-memory). Она хранит только первичный ключ в памяти как хэш-индекс (оптимизированный для памяти пул), чтобы не ыполнять ввод/вывод и избежать конкуренции за ресурсы. Достигается с помощью MEMOPTIMIZE FOR READ | WRITE, где READ используется для быстрого поиска, а WRITE — для быстрой вставки.
Сжатая в памяти таблица (in-memory)
Для оптимизации памяти и сокращения времени выполнения для таблиц в памяти. Это выполняется при помощи MEMCOMPRESS FOR DML (низкая степень сжатия) | QUERY (лучшая производительность) | CAPACITY (лучшая степень сжатия) LOW | HIGH.
Таблица управления жизненным циклом информации (ILM)
Для автоматизации сжатия устаревших данных, перемещения данных между слоями хранения и изменения свойств хранения в памяти. В SQL Server вы можете только архивировать холодные данные в Azure (растягивание таблицы) с помощью REMOTE_DATA_ARCHIVE=ON MIGRATION_STATE=OUTBOUND|PAUSED. В Oracle сжатие достигается указанием его, как и для других типов таблиц, и включая ( SEGMENT | GROUP | ROW ) AFTER OF ( NO ACCESS | NO MODIFICATION | CREATION ), многоуровневость достигается с помощью TIER TO (READ ONLY) ( SEGMENT | GROUP ) AFTER OF ( NO ACCESS | NO MODIFICATION | CREATION ), а для памяти — с помощью указания ( SET | MODIFY | NO ) INMEMORY AFTER OF ( NO ACCESS | NO MODIFICATION | CREATION ).
Кластеризованные таблицы
Для хранения вместе связанных строк из нескольких таблиц, которые нечасто обновляются и не полностью сканируются, уменьшая операции ввода/вывода, время и размер хранилища. Выполняется с помощью CLUSTER ( столбец (столбцы) ) SORT.
Кэшрованная таблица
Для указания того, как хранить блоки в буферном кэше, за исключением непосредственного чтения или параллельного сканирования таблицы. Выполняется с помощью CACHE (частый доступ для небольших поисковых таблиц), NOCACHE (нечастый доступ, для LOB указывает, что он не кэшируется) или CACHE READS (только для LOB, кэширует на чтение, но не на запись).
Таблица/секция/подсекция только на чтение
Осуществялется с помощью READ ONLY на уровне таблицы/серции/подсекции.
Параллельная таблица
Для определения параллельного создания таблицы и степени параллелизма по умолчанию для запросов и операторов DML INSERT, UPDATE, DELETE и MERGE на таблице. Выполняется с помощью PARALLEL, который выбирает степерь параллелизма, равную числу доступных процессоров на всех участвующх экземплярах, умноженное на значение параметра инициализации PARALLEL_THREADS_PER_CPU.
Таблица отслеживания зависимостей на уровне строк
Для того, чтобы каждая строка имела 6-байтовый системный номер изменений (SCN), больший или равный времени фиксации последней транзакции, которая изменяла строку. Это улучшает параллельное распространение в реплицируемой среде, но запрещает сжатие. Достигается с помощью ROWDEPENDENCIES.
Таблица перемещений строк
Позволяет строкам перемещаться при сжатии или обслуживании секционирования, но делает недоступными статичные ROWID. Это достигается с помощью ENABLE ROW MOVEMENT.
Таблица логической репликации
Для дополнительной журнализации, которая автоматически захватывается GoldenGate для репликации. Достигается с помощью ENABLE LOGICAL REPLICATION ( ALL KEYS | ALLOW NOVALIDATE KEYS ).
Объектная таблица
Объектно-ориентированная таблица, базирующаяся на типе объекта, а не на коллекции столбцов. Выполняется с помощью CREATE TABLE OF ( ), где столбцы соответствуют атрибутам , а каждая строка является объектом с уникальным идентификатором объекта OBJECT_ID, генерируемым системой.
Таблица XML
Создается с помощью CREATE TABLE OF XMLTYPE ( ) ( BINARY XML | CLOB | OBJECT RELATIONAL ) XMLSCHEMA ELEMENT , где CLOB не рекомендуется, а OBJECT RELATIONAL позволяет определить индексы и улучшить производительность запросов.
Вложенная таблица
Для связи с подчиненными элементами данных с базовой таблицей, используя ИД объекта (указатель). Создается с помощью CREATE TABLE ( ) NESTED TABLE ( | COLUMN_VALUE ) ( LOCAL | GLOBAL ) STORE AS RETURN AS ( LOCATOR | VALUE ), где LOCAL разбивает вложенную таблицу на разделы с базовой таблицей, — там, где будут находиться данные (не могут быть запрошены непосредственно), VALUE возвращает копию таблицы, а LOCATOR возвращает локатор коллекции.
Только в SQL Server
Разреженный столбец
Для оптимизации хранения NULL-значений в столбце. Выполняется с помощью SPARSE в определении столбца. Вы можете также определить XML COLUMN_SET FOR ALL_SPARSE_COLUMNS для улучшения производительности при работе с многочисленными разреженными столбцами.
Маскированный столбец
Чтобы скрыть содержимое столбца. Выполняется с помощью MASKED WITH ( FUNCTION = ), может быть по умолчанию, электронной почтой, частичной или случайной.
Сохраняемый столбец
Для сохранения вычисляемого значения столба в таблице, позволяя создавать индекс. Выполняется указанием PERSISTED на уровне столбца.
Графовая таблица
Для управленя коллекцией узлов (вершин) и граней (связей), допуская сопоставление с образцом и навигацию с помощью запросов. В SQL Server создается с помощью CREATE TABLE … AS ( NODE | EDGE ). Запросы имеют новый оператор MATCH, а также имеется функция для SHORTEST_PATH (кратчайшего пути). В Oracle имеется отдельный установщик для Graph Server and Graph Client, база данных создается под новой схемой, а запросы должны выполняться на Java, используя язык PGQL.
Заключение
Как вы могли увидеть, для базовых и средней сложности сценариев использования и SQL Server, и Oracle поддерживают один и тот же вид таблиц, при этом Oracle имеет дополнительные опции для некоторых из них. Oracle поддерживает много таблиц других типов для очень специфичных сценариев, которые позволяют улучшить производительность и сократить усилия на разработку, чего не предлагает SQL Server. Помимо этого, SQL Server имеет несколько опций, которые отсутствуют в Oracle и которые весьма привлекательны с коммерческой точки зрения и удовлетворяют большинству требований потребителей.
Обратные ссылки
Нет обратных ссылок
Комментарии
Показывать комментарии Как список | Древовидной структурой
Автор не разрешил комментировать эту запись
