Sql стандарты: НОУ ИНТУИТ | Лекция | Стандарты языка SQL
НОУ ИНТУИТ | Лекция | Стандарты языка SQL
Аннотация: В лекции обсуждаются вопросы стандартизации языка SQL.
Стандартизация управления и обмена данными.
Язык SQL предназначен для доступа к информации и управления реляционной базой данных. Управление различными реляционными базами данных осуществляют программы, называемые СУБД — системы управления базами данных (DBMS — DataBase Management System). Сама реляционная база данных представляет собой хранилище определенным образом организованной информации и СУБД. Однако на практике термин СУБД часто заменяют термином БД (База Данных). Для того чтобы c различными базами данных — такими как Oracle, Microsoft SQL Server, Informix, DB2, Access, MySQL — можно было общаться на одном языке, был разработан язык SQL.
Начиная с 1986 года, комитеты ISO (International Organization for Standardization) и ANSI (American National Standards Institute) приступили к созданию ряда стандартов языка SQL, которые впоследствии были приняты и получили следующие названия: SQL86, SQL89, SQL92 и SQL99.
Стандарт SQL86 зафиксировал минимальный стандартный синтаксис языка SQL.
Стандарт SQL89 был принят в 1989 году. Он вводил набор операторов языка SQL, которые должны были реализовывать все СУБД, заявляющие поддержку стандарта SQL89. На практике каждая реальная коммерческая СУБД предоставляет значительно более широкий набор возможностей, чем предусмотрено стандартом. Так, несмотря на то, что большинство СУБД на момент принятия стандарта уже поддерживали встроенный и динамический SQL, в стандарте SQL89 правила встраивания языка SQL в процедурный язык программирования (такой как язык С) и правила использования динамического SQL прописаны не были.
До последнего времени большинство СУБД поддерживали стандарт SQL92.
В стандарте SQL92 было определено три уровня соответствия:
- основной (Entry) ;
- средний (Intermediate) ;
- полный (Full).
При этом, для того чтобы объявить СУБД поддерживающей стандарт SQL92, большинство производителей реализовывали только основной уровень соответствия.
Новый стандарт SQL99, при разработке именовавшийся как SQL3, стандартизировал объектные расширения языка SQL и некоторые процедурные расширения языка SQL. К моменту принятия этого стандарта большинство коммерческих СУБД, таких как Oracle, уже де-факто ввели использование объектных типов и наследования.
В стандарте SQL99 определено обязательное функциональное ядро (Core) и набор уровней расширенного соответствия. Функциональное ядро SQL99 включает в себя основной уровень соответствия SQL92. Уровни расширенного соответствия не являются обязательными для реализации в СУБД, претендующей на поддержку стандарта SQL99. СУБД может не поддерживать ни одного уровня расширенного соответствия или поддерживать любые из них.
Каждый уровень описывает набор возможностей языка SQL, которые должны поддерживать реализации СУБД, претендующие на данный уровень соответствия.
При этом объявлено, что стандарт SQL99 является открытым для всех последующих уровней расширенного соответствия, которые могут появиться в дальнейшем.
В настоящий момент стандарт SQL99 содержит следующие уровни соответствия:
- Функциональное ядро.
Данный уровень является обязательным для любой реализации СУБД. Он включает в себя основной уровень соответствия SQL92, а также поддержку работы с LOB-объектами (Large Object), вызов из SQL внешних программ, написанных на других языках программирования, и простые типы данных, определяемые пользователем (UDT-типы, User-Defined Datatypes). Вводится поддержка LOB-объектов двух типов: бинарных BLOB-объектов (Binary Large Object) и символьных CLOB-объектов (Character Large Object). Для доступа к LOB-объектам вводятся объекты, называемые локаторами. Локаторы описываются целочисленными переменными, реализующими доступ к LOB-объекту по ссылке. Внешние программы определяются как объекты схемы, так же, как и таблицы. В зависимости от реализации сам код внешней программы может находиться в DLL-библиотеке или в произвольном файле,
а внешняя программа создается оператором языка CREATE PROCEDURE или CREATE FUNCTION с обязательным указанием фраз LANGUAGE и EXTERNAL. Следует отметить, что хотя использование внешних программ входит в функциональное ядро, но поддержка вызова процедур и функций SQL относится к расширенному уровню соответствия » PSM -модули» (Persistent Stored Module). Определяемые пользователем типы данных могут быть простыми и структурированными. Второй случай относится к уровню соответствия «Базовая поддержка объектов». Простой тип данных, определяемый пользователем — это существующий тип данных, для которого определено новое имя и возможно некоторое ограничение по количеству символов или цифр. Простой тип данных, определяемый пользователем, создается оператором CREATE TYPE (например, CREATE TYPE name_of_new_type AS INTEGER (5) FINAL; ). - Поддержка работы с датой/временем.
Этот уровень соответствия вводит типы данных DATETIME и INTERVAL, а для типа DATETIME вводит поля TIMEZONE_HOUR и TIMEZONE_MINUTE, определяющие смещение для зонального времени относительно универсального времени. В стандарте SQL92 полного уровня соответствия типы данных DATETIME и INTERVAL уже были специфицированы.
- Управление целостностью.
Этот уровень соответствия вводит поддержку дополнительных возможностей ссылочной целостности: подзапросы в ограничениях целостности CHECK оператора CREATE TABLE, триггеры, утверждения, создаваемые оператором CREATE ASSERTION. Большинство из этих возможностей входило в стандарт SQL92.
- Активные базы данных.
На этом уровне соответствия определяется поддержка триггеров базы данных, хранимых в базе данных и выполняемых. Триггеры представляют собой фрагменты кода, выполняемые перед или после указанного изменения данных (такого как вставка строки, удаление или изменение строки).
- OLAP.
Этот уровень соответствия определяет средства описания более сложных запросов. Так, в оператор SELECT включена фраза INTERSECT, позволяющая получать пересечения множеств, выданных несколькими запросами. В стандарте SQL92 эта возможность прописывалась только для полного уровня соответствия. В оператор SELECT включена фраза FULL OUTER JOIN, предназначенная для создания полных внешних соединений таблиц.
Такое соединение будет содержать все строки из объединяемых таблиц, в которых при отсутствии совпадений проставляются NULL-значения. Подобная возможность была предусмотрена и в полном уровне соответствия стандарта SQL92. В операторах языка SQL, применяемых для манипулирования данными, определяется поддержка использования конструкторов значений строк и таблиц. Конструкторы значений строк состоят из одного или нескольких выражений (например, (NULL,1,’Field1′) ). Конструкторы значений таблиц представляют собой набор значений конструкторов строк, описывающий группу строк (например, VALUES (1,’A’), (2,’B’) ). - PSM-модули.
Этот уровень соответствия полностью описан в документе SQL/PSM стандарта SQL99. Так, язык SQL расширяется операторами управления CASE, IF, WHILE, REPEAT, LOOP и FOR. Вводится поддержка процедур и функций, создаваемых операторами CREATE PROCEDURE и CREATE FUNCTION. В язык SQL введено использование переменных и применение обработчиков ошибок.
- CLI-интерфейс.
Этот уровень соответствия вводит поддержку интерфейса уровня вызова, определяющего вызов операторов SQL. В свое время на базе CLI -интерфейса был разработан стандарт ODBC, который более подробно будет рассматриваться в последующих лекциях.
- Базовая поддержка объектов (Basic Object Support).
Этот уровень соответствия стандартизирует использование объектов, вводя поддержку объектных типов данных, определяемых пользователем, применение типизированных таблиц (таблиц на базе объектных типов), использование массивов и ссылочных типов данных, а также переопределение внешних процедур.
- Расширенная поддержка объектов (Enhanced Object Support).
Этот уровень соответствия включает все возможности, предоставляемые уровнем базовой поддержки объектов, дополняя их поддержкой множественного наследования для типов данных, определяемых пользователем.
Представленные выше уровни расширенного соответствия напрямую не связаны с документами, соответствующими разделам стандарта. В настоящее время стандарт SQL99 содержит следующие основные разделы:
- SQLFramework — описывает логические основы стандарта.
- SQLFoundation — определяет содержание каждого раздела стандарта и описывает функциональное ядро стандарта (Core SQL99 ).
- SQL/CLI — описывает интерфейс уровня вызова.
- SQL/PSM — определяет процедурные расширения языка SQL.
- SQL/Bindings — определяет механизм взаимодействия языка SQL с другими языками программирования.
- SQL/MM — описываются средства языка SQL, предназначенные для работы с мультимедийными данными.
- SQL/OLB — определяет связь SQL с объектными языками, описывая 0-часть стандарта SQLJ для встраивания операторов SQL в язык Java.
SQL Server стандарты баз данных и лучшие практики
Есть ли какая-либо документация по стандартам баз данных SQL Server & best Practices, которую я могу использовать в качестве ссылки для соглашений об именах, безопасности, использования схем и т. д.?
sql-server
Поделиться
Источник
ntombela
22 апреля 2009 в 07:27
4 ответа
- каковы лучшие практики и стандарты, которым я должен следовать при внедрении службы чата?
Я создаю функцию чата внутри веб-сайта, что-то вроде чата stackoverflow, но проще, есть ли какие-то лучшие практики или стандарты, которым я должен следовать при создании этой функции с помощью MVC .net и javascript? есть ли какие-то статьи, документы или книги, в которых об этом подробно…
- SQL Server Стандарты Разработки Баз Данных
Я должен разработать стандарты разработки баз данных для нашей организации для SQL Server и любого кода, который взаимодействует с ней. Используемый код может быть любым — от .NET кода до VBScript и SQL Server заданий. У кого-нибудь есть хорошая ссылка для такого рода вещей? Мой краткий список…
2
Несколько интересных ссылок:
Поделиться
boflynn
22 апреля 2009 в 20:16
Поделиться
The real napster
22 апреля 2009 в 07:35
1
Я новичок в своей нынешней компании и продвинулся вверх по цепочке с предыдущих мест работы. Это была моя обязанность-разработать некоторые стандарты кодирования и лучшие практики для нашей разработки программного обеспечения, и для начала у меня была куча документов для C#. К моему удивлению, однако, там было не так много для SQL Server. Я думаю, это потому, что это не так ясно, когда дело доходит до баз данных. Это гораздо более субъективная область, и очень многое зависит от вашего дизайна и того, что вам нужно сделать.
Вот несколько ссылок на которые я наткнулся:
Точка спрыгивания: https:/ / web.archive.org / web/1/http: / / blogs.techrepublic%2ecom%2ecom/datacenter/?p=436
Анализатор Лучших Практик: http://esersahin.wordpress.com/2009/01/18/best-practices-design-and-development-guidelines-for-microsoft-sql-server/
Я также хотел бы посетить сайт паттернов и практик:
http://msdn.microsoft.com/en-us/practices/default.aspx
И посмотрите на некоторые конкретные вещи, которые вы делаете, чтобы получить представление о том, что они рекомендуют на стороне базы данных.
Поделиться
John
22 апреля 2009 в 12:18
- SQL Server Плохие И Лучшие Практики
вчера я узнал, что настройка базы данных на автоматический рост-это не очень хорошая вещь. Существуют ли другие базовые практики ‘bad’ (или лучшие практики) при наличии баз данных SQL Server в производстве? спасибо, Ливен Cardoen
- Лучшие Практики Проектирования Баз Данных
Я довольно хорошо разбираюсь в SQL Server, MySQL, Oracle и т. д., Но, отложив эти продукты баз данных в сторону, есть ли ресурс, который поможет мне хорошо проектировать реляционные базы данных? Есть ли что-то вроде шаблонов или лучших практик для проектирования баз данных? Я несколько раз видел,…
Поделиться
Unknown
22 апреля 2009 в 08:12
Похожие вопросы:
Существуют ли какие-либо Лучшие практики НСИ или стандарты кодирования?
Я создаю несколько установщиков NSIS, и по мере того, как мой опыт в этой области растет, я больше не доволен тем, что просто заставляю вещи работать, я хотел бы посмотреть, есть ли какие-то лучшие…
Стандарты кодирования и лучшие практики программирования для C#
Я ищу некоторые достойные стандарты кодирования и лучшие практики программирования для C#? То же самое касается ASP.NET и ASP.NET MVC.
Стандарты кодирования и лучшие практики программирования для JavaScript
Я ищу некоторые достойные стандарты кодирования и лучшие практики программирования для JavaScript? У меня есть предыстория C#. Как называются элементы управления на веб-странице? Если у вас есть…
каковы лучшие практики и стандарты, которым я должен следовать при внедрении службы чата?
Я создаю функцию чата внутри веб-сайта, что-то вроде чата stackoverflow, но проще, есть ли какие-то лучшие практики или стандарты, которым я должен следовать при создании этой функции с помощью MVC…
SQL Server Стандарты Разработки Баз Данных
Я должен разработать стандарты разработки баз данных для нашей организации для SQL Server и любого кода, который взаимодействует с ней. Используемый код может быть любым — от .NET кода до VBScript и…
SQL Server Плохие И Лучшие Практики
вчера я узнал, что настройка базы данных на автоматический рост-это не очень хорошая вещь. Существуют ли другие базовые практики ‘bad’ (или лучшие практики) при наличии баз данных SQL Server в…
Лучшие Практики Проектирования Баз Данных
Я довольно хорошо разбираюсь в SQL Server, MySQL, Oracle и т. д., Но, отложив эти продукты баз данных в сторону, есть ли ресурс, который поможет мне хорошо проектировать реляционные базы данных?…
Hibernate и Sql Server лучшие практики
Наше приложение использует Hibernate с Sql Server 2005. Будучи DBA, я еще не эксперт Hibernate. И наши разработчики не очень хорошо понимают Sql Server, поэтому мне нужна золотая середина,чтобы…
Дополнительные SQL Server примеры баз данных для практики
Я помогаю другу выучить SQL, и мне нужно больше баз данных, чтобы помочь ему получить больше практики. У нас, конечно, есть 30, Нортвинд и пабы. Кто-нибудь знает о каких-либо других образцах баз…
Лучшие практики и стандарты хранения изображений/файлов
Мы создаем сайт для размещения изображений и файлов, и мы будем сохранять эти файлы на наших серверах, поэтому я хочу знать, есть ли какие-либо лучшие практики или стандарты, которые мне нужно…
Справочник по Transact-SQL (компонент Database Engine) — SQL Server
-
- Чтение занимает 2 мин
В этой статье
ОБЛАСТЬ ПРИМЕНЕНИЯ:
SQL Server
База данных SQL Azure
Azure Synapse Analytics
Parallel Data Warehouse
В этом разделе приводится общее описание поиска и использования разделов справки по Microsoft Transact-SQLTransact-SQL (T-SQL).This topic gives the basics about how to find and use the Microsoft Transact-SQLTransact-SQL (T-SQL) reference topics. T-SQL является ключом к использованию продуктов и служб Microsoft SQL.T-SQL is central to using Microsoft SQL products and services. Все средства и приложения, которые взаимодействуют с базами данных SQL, делают это путем отправки команд T-SQL.All tools and applications that communicate with a SQL database do so by sending T-SQL commands.
Соответствие T-SQL стандарту SQLT-SQL compliance with SQL Standard
Подробные технические документы о реализации определенных стандартов в SQL ServerSQL Server см. в документации по поддержке стандартов Microsoft SQL Server.For detailed technical documents about how certain standards are implemented in SQL ServerSQL Server, see the Microsoft SQL Server Standards Support documentation.
Ниже приведены лишь некоторые средства Майкрософт, использующие команды T-SQL.Some of the Microsoft tools that issue T-SQL commands are:
Поиск разделов справочника по Transact-SQLLocate the Transact-SQL reference topics
Чтобы найти разделы T-SQL, воспользуйтесь полем поиска в верхней правой части или оглавлением в левой части этой страницы.To find T-SQL topics, use search at the top right of this page, or use the table of contents on the left side of the page. Можно также ввести ключевое слово T-SQL в окне редактора запросов среды Management Studio и нажать клавишу F1.You can also type a T-SQL key word in the Management Studio Query Editor window, and press F1.
Поиск системных представленийFind system views
Чтобы найти системные таблицы, представления, функции и процедуры, см. ссылки в разделе Использование реляционных баз данных в документации по SQL.To find the system tables, views, functions, and procedures, see these links, which are in the Using relational databases section of the SQL documentation.
Ссылки «Относится к»»Applies to» references
Справочные разделы T-SQL могут охватывать несколько версий SQL Server, начиная с 2008 года, а также другие службы SQL Azure.The T-SQL reference topics encompass multiple versions of SQL Server, starting with 2008, and the other Azure SQL services. В верхней части каждой статьи приведен раздел, указывающий, какие продукты и службы поддерживают описанную в ней функциональность.Near the top of each topic is a section that indicates which products and services support subject of the topic.
Например, текущий раздел применим ко всем версиям и имеет следующую метку.For example, this topic applies to all versions, and has the following label.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
SQL Server
База данных SQL Azure
Azure Synapse Analytics
Parallel Data Warehouse
Еще один пример: следующая метка указывает, что раздел применяется только к Azure Synapse Analytics и Parallel Data Warehouse.Another example, the following label indicates a topic that applies only to Azure Synapse Analytics and Parallel Data Warehouse.
Применимо к:Applies to: Azure Synapse AnalyticsAzure Synapse AnalyticsAzure Synapse AnalyticsAzure Synapse Analytics Параллельное хранилище данныхParallel Data WarehouseПараллельное хранилище данныхParallel Data WarehouseПрименимо к:Applies to: Azure Synapse AnalyticsAzure Synapse AnalyticsAzure Synapse AnalyticsAzure Synapse Analytics Параллельное хранилище данныхParallel Data WarehouseПараллельное хранилище данныхParallel Data Warehouse
В некоторых случаях функциональность раздела используется продуктом или службой, но поддерживаются не все аргументы.In some cases, the topic is used by a product or service, but all of the arguments are not supported. В этом случае другие разделы Относится к вставляются в описания соответствующих аргументов в теле раздела.In this case, other Applies to sections are inserted into the appropriate argument descriptions in the body of the topic.
Получение помощи на странице вопросов и ответов на сайте МайкрософтGet help from Microsoft Q & A
Справку в Интернете ищите на сайте Майкрософт на странице вопросов и ответов на форуме по Transact-SQL.For online help, see the Microsoft Q & A Transact-SQL Forum.
Справочники по другим языкамSee other language references
Документация по SQL включает и другие справочники по языкам.The SQL docs include these other language references:
Дальнейшие действияNext steps
Теперь, когда вы знаете, как найти справочные разделы T-SQL, можно:Now that you understand how to find the T-SQL reference topics, you’re ready to:
PostgreSQL : Документация: 9.5: Приложение D. Соответствие стандарту SQL : Компания Postgres Professional
Приложение D. Соответствие стандарту SQL
В этом разделе в общих чертах отмечается, в какой степени PostgreSQL соответствует текущему стандарту SQL. Следующая информация не является официальным утверждением о соответствии, а представляет только основные аспекты на уровне детализации, достаточно полезном и целесообразном для пользователей.
Формально стандарт SQL называется ISO/IEC 9075 «Язык баз данных SQL». Время от времени выпускается обновлённая версия стандарта; последняя версия стандарта вышла в 2011 г. Эта версия получила обозначение ISO/IEC 9075:2011, или просто SQL:2011. До этого были выпущены версии SQL:2008, SQL:2003, SQL:1999 и SQL-92. Каждая следующая версия заменяет предыдущую, так что утверждение о совместимости с предыдущими версиями не имеет большой ценности. Разработчики PostgreSQL стремятся обеспечить совместимость с последней официальной версией стандарта, оставаясь при этом в рамках традиционной функциональности и здравого смысла. PostgreSQL реализует большую часть требуемой стандартом функциональности, хотя иногда с немного другими функциями или синтаксисом. Можно ожидать, что со временем степень совместимости будет увеличиваться.
SQL-92 определяет три уровня функциональной совместимости: начальный (Entry), промежуточный (Intermediate) и полный (Full). Большинство СУБД заявляют о совместимости со стандартом SQL только на начальном уровне, так как полный набор возможностей на промежуточном и полном уровнях либо слишком велик, либо конфликтует с ранее принятым поведением.
Начиная с SQL:1999, вместо трёх чрезмерно пространных уровней SQL-92 в стандарте SQL определено множество отдельных функциональных возможностей. Большое его подмножество представляет «Основную» функциональность, которую должны обеспечивать все совместимые с SQL реализации. Поддержка остальных возможностей не является обязательной. Некоторые необязательные возможности группируются вместе, образуя «пакеты», о поддержке которых могут заявлять реализации SQL, таким образом, декларируя совместимость с определённой группой возможностей.
Описание стандарта, начиная с версии SQL:2003, также разделяется на несколько частей. Каждая такая часть имеет короткое имя и номер. Заметьте, что нумерация этих частей непоследовательная.
ISO/IEC 9075-1 Структура (SQL/Framework)
ISO/IEC 9075-2 Основа (SQL/Foundation)
ISO/IEC 9075-3 Интерфейс уровня вызовов (SQL/CLI)
ISO/IEC 9075-4 Модули постоянного хранения (SQL/PSM)
ISO/IEC 9075-9 Управление внешними данными (SQL/MED)
ISO/IEC 9075-10 Привязки объектных языков (SQL/OLB)
ISO/IEC 9075-11 Схемы информации и определений (SQL/Schemata)
ISO/IEC 9075-13 Программы и типы, использующие язык Java (SQL/JRT)
ISO/IEC 9075-14 Спецификации, связанные с XML (SQL/XML)
Ядро PostgreSQL реализует части 1, 2, 9, 11 и 14. Часть 3 реализуется драйвером ODBC, а часть 13 — подключаемым расширением PL/Java, но точное соответствие этих компонентов стандарту на данный момент не проверено. Части 4 и 10 в PostgreSQL в настоящее время не реализованы.
PostgreSQL поддерживает почти все основные возможности стандарта SQL:2011. Из 179 обязательных возможностей, которые требуются для полного соответствия «Основной» функциональности, PostgreSQL обеспечивает совместимость как минимум для 160. Кроме того, он реализует длинный список необязательных возможностей. Следует отметить, что на время написания этой документации ни одна существующая СУБД не заявила о полном соответствии «Основной» функциональности SQL:2011.
В следующих двух разделах мы представляем список возможностей, которые поддерживает PostgreSQL, и список возможностей, определённых в SQL:2011, которые ещё не поддерживаются в PostgreSQL. Оба эти списка носят приблизительный характер: какая-то возможность, отмеченная как поддерживаемая, может отличаться от стандарта в деталях, и напротив, для какой-то неподдерживаемой возможности могут быть реализованы ключевые компоненты. Наиболее точная информация о том, что работает, а что нет, содержится в основной документации.
Примечание
Коды возможностей, содержащие знак минус, обозначают подчинённые возможности. При этом, если какая-либо одна подчинённая возможность не поддерживается, основная возможность так же не будет поддерживаться, даже если реализованы все остальные на подуровне.
MaxPatrol сертифицирован CIS для работы c Microsoft SQL Server 2012
Одна из ведущих мировых организаций в области стандартизации ИБ — Center for Internet Security (CIS) — сообщила об успешном прохождении системой контроля защищенности и соответствия стандартам MaxPatrol компании Positive Technologies сертификационных испытаний по профилю Microsoft SQL Server 2012.
Наличие сертификата, выданного подразделением CIS Security Benchmarks, означает, что реализация режима Compliance в MaxPatrol при работе с Microsoft SQL Server 2012 соответствует требованиям, которые предъявляются CIS к автоматизированным системам контроля конфигураций и анализа защищенности.
Сотрудничество CIS и Positive Technologies по вопросам разработки новых и совершенствования уже существующих стандартов идет с 2009 года. В 2012 году Positive Technologies получила статус действительного участника Center for Internet Security — Security Benchmarks. В дальнейшем система MaxPatrol была сертифицирована для работы с Cisco IOS и Cisco Wireless LAN Controller 7.
В настоящее время в поставку MaxPatrol включены проверки более чем по 150 стандартам для широкого спектра различных систем, от сетевого оборудования до АСУ ТП, SAP- и ERP-систем, причем примерно половина используемых стандартов являются стандартами CIS.
Подразделение CIS Security Benchmarks занимается разработкой стандартов и рекомендаций на основе консенсуса о лучших практиках, который вырабатывается внутри IT-сообщества многочисленными экспертами по ИБ. Эти рекомендации помогают миллионам компаний по всему миру адекватно оценивать степень защищенности своих информационных ресурсов и получать самую актуальную информацию о безопасной настройке различных систем. Эксперты Positive Technologies активно участвуют в разработке требований безопасности для стандартов CIS.
Помимо CIS Security Benchmarks, система MaxPatrol сертифицирована SAP, «Газпромом», ФСТЭК, Минобороны РФ и другими организациями.
SQLite, MySQL и PostgreSQL: сравниваем популярные реляционные СУБД
Реляционные базы данных используются уже очень давно. Они стали популярными благодаря успешным реализациям реляционных моделей в системах управления, оказавшимся весьма удобными для работы с данными. В этой статье мы сравним три самые популярные реляционные системы управления базами данных (РСУБД): SQLite, MySQL и PostgreSQL.
Системы управления базами данных
Базы данных — это логически смоделированные хранилища любых типов данных. Каждая база данных, не являющаяся бессхемной, следует модели, которая задаёт определённую структуру обработки данных. СУБД — это приложения (или библиотеки), управляющие базами данных различных форм, размеров и типов.
Чтобы лучше разобраться в СУБД, ознакомьтесь с этой статьёй.
Реляционные системы управления базами данных
Реляционные системы реализуют реляционную модель работы с данными, которая определяет всю хранимую информацию как набор связанных записей и атрибутов в таблице.
СУБД такого типа используют структуры (таблицы) для хранения и работы с данными. Каждый столбец (атрибут) содержит свой тип информации. Каждая запись в базе данных, обладающая уникальным ключом, передаётся в строку таблицы, и её атрибуты отображаются в столбцах таблицы.
Отношения и типы данных
Отношения можно определить как математические множества, содержащие наборы атрибутов, отображающие хранящуюся информацию.
Каждый элемент, формирующий запись, должен удовлетворять определённому типу данных (целое число, дата и т.д.). Различные РСУБД используют разные типы данные, которые не всегда взаимозаменяемы.
Такого рода ограничения обычны для реляционных баз данных. Фактически, они и формируют суть отношений.
Популярные РСУБД
В этой статье мы расскажем о 3 наиболее популярных РСУБД:
- SQLite: очень мощная встраиваемая РСУБД.
- MySQL: самая популярная и часто используемая РСУБД.
- PostgreSQL: самая продвинутая и гибкая РСУБД.
SQLite
SQLite — это изумительная библиотека, встраиваемая в приложение, которое её использует. Будучи файловой БД, она предоставляет отличный набор инструментов для более простой (в сравнении с серверными БД) обработки любых видов данных.
Когда приложение использует SQLite, их связь производится с помощью функциональных и прямых вызовов файлов, содержащих данные (например, баз данных SQLite), а не какого-то интерфейса, что повышает скорость и производительность операций.
Поддерживаемые типы данных
- NULL: NULL-значение.
- INTEGER: целое со знаком, хранящееся в 1, 2, 3, 4, 6, или 8 байтах.
- REAL: число с плавающей запятой, хранящееся в 8-байтовом формате IEEE.
- TEXT: текстовая строка с кодировкойUTF-8, UTF-16BE или UTF-16LE.
- BLOB: тип данных, хранящийся точно в таком же виде, в каком и был получен.
Note: для получения более подробной информации ознакомьтесь с документацией.
Преимущества
- Файловая: вся база данных хранится в одном файле, что облегчает перемещение.
- Стандартизированная: SQLite использует SQL; некоторые функции опущены (
RIGHT OUTER JOIN
илиFOR EACH STATEMENT
), однако, есть и некоторые новые.
- Отлично подходит для разработки и даже тестирования: во время этапа разработки большинству требуется масштабируемое решение. SQLite, со своим богатым набором функций, может предоставить более чем достаточный функционал, при этом будучи достаточно простой для работы с одним файлом и связанной сишной библиотекой.
Недостатки
- Отсутствие пользовательского управления: продвинутые БД предоставляют пользователям возможность управлять связями в таблицах в соответствии с привилегиями, но у SQLite такой функции нет.
- Невозможность дополнительной настройки: опять-таки, SQLite нельзя сделать более производительной, поковырявшись в настройках — так уж она устроена.
Когда стоит использовать SQLite
- Встроенные приложения: все портируемые не предназначенные для масштабирования приложения — например, локальные однопользовательские приложения, мобильные приложения или игры.
- Система доступа к дисковой памяти: в большинстве случаев приложения, часто производящие прямые операции чтения/записи на диск, можно перевести на SQLite для повышения производительности.
- Тестирование: отлично подойдёт для большинства приложений, частью функционала которых является тестирование бизнес-логики.
Когда не стоит использовать SQLite
- Многопользовательские приложения: если вы работаете над приложением, доступом к БД в котором будут одновременно пользоваться несколько человек, лучше выбрать полнофункциональную РСУБД — например, MySQL.
- Приложения, записывающие большие объёмы данных: одним из ограничений SQLite являются операции записи. Эта РСУБД допускает единовременное исполнение лишь одной операции записи.
MySQL
MySQL — это самая популярная из всех крупных серверных БД. Разобраться в ней очень просто, да и в сети о ней можно найти большое количество информации. Хотя MySQL и не пытается полностью реализовать SQL-стандарты, она предлагает широкий функционал. Приложения общаются с базой данных через процесс-демон.
Поддерживаемые типы данных
- TINYINT: очень маленькое целое.
- SMALLINT: маленькое целое.
- MEDIUMINT: целое среднего размера.
- INT или INTEGER: целое нормального размера.
- BIGINT: большое целое.
- FLOAT: знаковое число с плавающей запятой одинарной точности.32 — 1) символов.
- ENUM: перечисление.
Преимущества
- Простота: MySQL легко устанавливается. Существует много сторонних инструментов, включая визуальные, облегчающих начало работы с БД.
- Много функций: MySQL поддерживает большую часть функционала SQL.
- Безопасность: в MySQL встроено много функций безопасности.
- Мощность и масштабируемость: MySQL может работать с действительно большими объёмами данных, и неплохо походит для масштабируемых приложений.
- Скорость: пренебрежение некоторыми стандартами позволяет MySQL работать производительнее, местами срезая на поворотах.
Недостатки
- Известные ограничения: по определению, MySQL не может сделать всё, что угодно, и в ней присутствуют определённые ограничения функциональности.
- Вопросы надёжности: некоторые операции реализованы менее надёжно, чем в других РСУБД.
- Застой в разработке: хотя MySQL и является open-source продуктом, работа над ней сильно заторможена. Тем не менее, существует несколько БД, полностью основанных на MySQL (например, MariaDB). Кстати, подробнее о родстве MariaDB и MySQL можно из нашего интервью с создателем обеих РСУБД — Джеймсом Боттомли.
Когда стоит использовать MySQL
- Распределённые операции: когда вам нужен функционал бо́льший, чем может предоставить SQLite, стоит использовать MySQL.
- Высокая безопасность: функции безопасности MySQL предоставляют надёжную защиту доступа и использования данных.
- Веб-сайты и приложения: большая часть веб-ресурсов вполне может работать с MySQL, несмотря на ограничения. Этот инструмент весьма гибок и прост в обращении, что только на руку в длительной перспективе.
- Кастомные решения: если вы работаете над очень специфичным продуктом, MySQL подстроится под ваши потребности благодаря широкому спектру настроек и режимов работы.
Когда не стоит использовать MySQL
- SQL-совместимость: поскольку MySQL не пытается полностью реализовать стандарты SQL, она не является полностью совместимой с SQL. Из-за этого могут возникнуть проблемы при интеграции с другими РСУБД.
- Конкурентность: хотя MySQL неплохо справляется с операциями чтения, одновременные операции чтения-записи могут вызвать проблемы.
- Недостаток функций: в зависимости от выбора движка MySQL может недоставать некоторых функций.
PostgreSQL
PostgreSQL — это самая продвинутая РСУБД, ориентирующаяся в первую очередь на полное соответствие стандартам и расширяемость. PostgreSQL, или Postgres, пытается полностью соответствовать SQL-стандартам ANSI/ISO.
PostgreSQL отличается от других РСУБД тем, что обладает объектно-ориентированным функционалом, в том числе полной поддержкой концепта ACID (Atomicity, Consistency, Isolation, Durability).
Будучи основанным на мощной технологии Postgres отлично справляется с одновременной обработкой нескольких заданий. Поддержка конкурентности реализована с использованием MVCC (Multiversion Concurrency Control), что также обеспечивает совместимость с ACID.
Хотя эта РСУБД не так популярна, как MySQL, существует много сторонних инструментов и библиотек для облегчения работы с PostgreSQL.
Поддерживаемые типы данных
- bigint: знаковое 8-байтное целое.
- bigserial: автоматически инкрементируемое 8-битное целое.
- bit [(n)]: битовая строка фиксированной длины.
- bit varying [(n)]: битовая строка переменной длины.
- boolean: булевская величина.
- box: прямоугольник на плоскости.
- bytea: бинарные данные.
- character varying [(n)]: строка символов фиксированной длины.
- character [(n)]: строка символов переменной длины.
- cidr: сетевой адрес IPv4 или IPv6.
- circle: круг на плоскости.
- date: календарная дата.
- double precision: число с плавающей запятой двойной точности.
- inet: адрес хоста IPv4 или IPv6.
- integer: знаковое 4-байтное целое.
- interval [fields] [(p)]: временной промежуток.
- line: бесконечная прямая на плоскости.
- lseg: отрезок на плоскости.
- macaddr: MAC-адрес.
- money: денежная величина.
- path: геометрический путь на плоскости.
- point: геометрическая точка на плоскости.
- polygon: многоугольник на плоскости.
- real: число с плавающей запятой одинарной точности.
- smallint: знаковое 2-байтное целое.
- serial: автоматически инкрементируемое 4-битное целое.
- text: строка символов переменной длины.
- time [(p)] [without time zone]: время суток (без часового пояса).
- time [(p)] with time zone: время суток (с часовым поясом).
- timestamp [(p)] [without time zone]: дата и время (без часового пояса).
- timestamp [(p)] with time zone: дата и время (с часовым поясом).
- tsquery: запрос текстового поиска.
- tsvector: документ текстового поиска.
- txid_snapshot: снэпшот ID пользовательской транзакции.
- uuid: уникальный идентификатор.
Преимущества
- Полная SQL-совместимость.
- Сообщество: PostgreSQL поддерживается опытным сообществом 24/7.
- Поддержка сторонними организациями: несмотря на очень продвинутые функции, PostgreSQL используется в многих инструментах, связанных с РСУБД.
- Расширяемость: PostgreSQL можно программно расширить за счёт хранимых процедур.
- Объектно-ориентированность: PostgreSQL — не только реляционная, но и объектно-ориентированная СУБД.
Недостатки
- Производительность: В простых операциях чтения PostgreSQL может уступать своим соперникам.
- Популярность: из-за своей сложности инструмент не очень популярен.
- Хостинг: из-за вышеперечисленных факторов проблематично найти подходящего провайдера.
Когда стоит использовать PostgreSQL
- Целостность данных: если приоритет стоит на надёжность и целостность данных, PostgreSQL — лучший выбор.
- Сложные процедуры: если ваша БД должна выполнять сложные процедуры, стоит выбрать PostgreSQL в силу её расширяемости.
- Интеграция: если в будущем вам предстоит перемещать всю базу на другое решение, меньше всего проблем возникнет с PostgreSQL.
Когда не стоит использовать PostgreSQL
- Скорость: если всё, что нужно — это быстрые операции чтения, не стоит использовать PostgreSQL.
- Простые ситуации: если вам не требуется повышенная надёжность, поддержка ACID и всё такое, использование PostgreSQL — это стрельба из пушки по мухам.
Перевод статьи «SQLite vs MySQL vs PostgreSQL: A Comparison Of Relational Database Management Systems»
★ SQL — язык запросов .. Информация
1.2. История. Стандартизация. (Standardization)
С начала 1980-х лет существовало несколько вариантов СУБД от разных производителей, каждый из которых имел собственную реализацию языка запросов, было принято решение разработать стандарт языка, чтобы обеспечить переносимость из одной СУБД в другую, при условии, что они будут поддерживать этот стандарт.
В 1983 году международной организации по стандартизации ISO и американского Национального института стандартов ANSI (Анси) начата разработка стандарта языка SQL. после многочисленных консультаций и отвергнув несколько вариантов, в 1986 году ANSI (Анси) представил свою первую версию стандарта, описанного в документе ANSI X3.135-1986 (Анси Х3.135-1986) называют «Database Language SQL» язык базы данных SQL. неофициально этот стандарт SQL-86 назывался SQL1. год спустя была завершена работа над версией стандарта ISO 9075-1987 (ИСО 9075-1987) под тем же названием. разработка данного стандарта была проведена под эгидой технического комитета TC97 английский. Technical Committee (TC97 технического комитета), сферу деятельности был процесс вычислений и обработки информации англ. Computing and Information Processing (Вычислений и обработки информации). это его подразделение, именуемое подкомитета SC21 английский. Subcommittee SC21 (Подкомитет SC21), курировал разработку стандарта, который был ключом тож норм ISO и ANSI (Анси) для SQL1 SQL-86 (SQL1 С ПОМОЩЬЮ SQL-86).
Стандарт SQL1 был разделен на два уровня. Первый уровень был подмножеством второго уровня, описывающий весь документ в целом. то есть, эта структура предусматривала, что не все спецификации стандарта SQL1 будет ссылаться на уровень 1. таким образом, поставщик поддерживает этот стандарт, должен был сказать об уровне, который соответствует его реализация языка SQL. это значительно облегчило бы принятие и поддержка стандарта как производители могут реализовать поддержку в два этапа.
С течением времени, стандартный накопилось несколько замечаний и пожеланий, особенно с точки зрения обеспечения целостности и корректности данных, в результате чего в 1989 году этот стандарт был расширен под названием SQL89. В частности, он был добавлен в концепции первичных и внешних ключей. ИСО версии документ называется ISO 9075:1989 «базы данных Language SQL with Integrity (Язык SQL с целостности) язык баз данных SQL с добавлением контроля целостности. параллельно был завершен и ANSI версии.
Сразу после завершения стандартной SQL1 для 1987 году началась работа над новой версией стандарта, который должен был заменить стандарт SQL89, под названием SQL2 с момента принятия документа на тот момент была неизвестна. так что на самом деле SQL89 и SQL2 был разработан параллельно. новая версия стандарта была принята в 1992 году, заменив стандартный SQL89. новый стандарт, под названием SQL92, представляет собой фактически расширение стандарта SQL1, чтобы включить много дополнительных услуг, доступных в предыдущей версии инструкции.
Как SQL1, SQL92 были также разделены на несколько уровней, однако, во-первых, число уровней было увеличено с двух до трех, а во-вторых они получили названия вместо порядковых цифр: начальный англ. entry (запись), среднеанглийский. intermediate (промежуточные) полный инж. full (полный). уровень «полный», как уровень 2 в SQL1 подразумевал весь стандарт целиком. уровень «начальный» является подмножеством уровня «средний», в свою очередь, подмножество уровня «полный». уровень «начальный» был сопоставим с уровнем 2 стандарт SQL1, но этот уровень был несколько расширены. тем самым цепь включения уровней стандартов выглядели примерно так: SQL1 уровень 1 → SQL1 Уровень 2 → SQL92 «Начальный» → SQL92 «Средний» → SQL92 «Полный».
После принятия стандарта SQL92 был добавлен ряд документов, расширяющих функциональность языка. поэтому, в 1995 году был принят стандарт SQL / CLI Call Level Interface (Интерфейс уровне SQL / CLI по вызову), в интерфейс уровня вызовов, позже переименованный в CLI95. следующий год был принят стандарт SQL / PSM Persistent Stored Modules (В SQL / ПСМ модули постоянного хранения), постоянно хранимые модули, называемые PSM-96 (УЗС-96).
Следующим стандартом стал SQL:1999 SQL3. В настоящее время стандарт, принятый в 2003 году SQL:2003 с небольшими изменениями введены позже SQL:2008. история версий стандарта:
Соответствует ли ваша база данных SQL стандартам ANSI? — Узнать сейчас
Раскрытие информации: Ваша поддержка помогает поддерживать работу сайта! Мы зарабатываем реферальный сбор за некоторые услуги, которые мы рекомендуем на этой странице. Подробнее
SQL: стандарты ANSI для администрирования баз данных
Язык структурированных запросов или SQL — это стандартный язык администраторов баз данных (DBA) для доступа к базам данных и управления ими.
На протяжении многих лет SQL развивался, и начали появляться многие версии и языки.Чтобы унифицировать SQL для передового опыта, Американский национальный институт стандартов (ANSI) создал специальные стандарты для языков запросов к базам данных.
Временная шкала SQL
1970: Доктор Эдгар Фрэнк Кодд, специалист по информатике, работающий в IBM, публикует свою знаменитую статью «Реляционная модель данных для больших общих банков данных» в июне 1970 года в Журнал Ассоциации компьютерной техники (ACM). Модель доктора Кодда остается окончательной моделью для систем управления реляционными базами данных (СУБД).
1978: Корпорация IBM разрабатывает систему баз данных System / R вместе с языком баз данных, структурированным английским языком запросов (SEQUEL) в своем исследовательском центре в Сан-Хосе в Калифорнии. Они основывают его на оригинальной модели доктора Кодда и называют ее SEQUEL.
1979: Relational Software, Inc., выпускает первую систему управления реляционными базами данных, названную Oracle. Их СУБД функционирует на миникомпьютере, используя SQL в качестве основного языка запросов.Продукт становится настолько популярным, что компания меняет название на Oracle.
1982: IBM выпускает свою первую коммерческую СУБД на основе SQL, которую они называют SQL / Data System или SQL / DS, а в 1985 году они выпускают систему Database 2 или DB2. Обе системы работают на мэйнфрейме IBM. Позднее IBM перенесла DB2 на другие системы, в том числе работающие в операционных системах Windows и UNIX.
Стандарты ANSI Год за годом
1986: SQL-87 был первоначально формализован ANSI в 1986 году.
1989: Американский национальный институт стандартов (ANSI) публикует первый набор стандартов для языков запросов к базам данных, известный как SQL-89 или FIPS 127-1.
1992: ANSI публикует свои пересмотренные стандарты, ANSI / ISO SQL-92 или SQL2, которые были более строгими, чем SQLI, добавляя некоторые новые функции. Эти стандарты вводят уровни соответствия, которые указывают степень, в которой диалект соответствует стандартам ANSI.
1999: ANSI публикует SQL3 или ANSI / ISO SQL: 1999 с новыми функциями, такими как поддержка объектов.Заменены уровни соответствия основным спецификациям, а также дополнительные спецификации еще для девяти пакетов.
2003: ANSI публикует SQL: 2003, вводя стандартизованные последовательности, функции, связанные с XML, и столбцы идентификации. Создатель первой СУБД доктор Э. Ф. Кодд скончался 18 апреля того же года.
2006: ANSI публикует SQL: 2006, определяя, как использовать SQL с XML и позволяя приложениям интегрировать XQuery в свой существующий код SQL.
2008: ANSI публикует SQL: 2008, вводя триггеры INSTEAD OF, а также оператор TRUNCATE.
2011: ANSI публикует SQL: 2011 или ISO / IEC 9075: 2011, седьмую редакцию стандартов ISO (1987) и ANSI (1986) для языка запросов к базам данных SQL.
Новые стандарты ANSI SQL разбиты на девять частей, в том числе:
Часть 1 — ISO / IEC 9075-1: 2011 SQL / Framework, предлагающая логические концепции.
Часть 2 — ISO / IEC 9075-2: 2011 SQL / Foundation, включает центральные элементы SQL.
Часть 3 ISO / IEC 9075-3: 2008 Интерфейс SQL / уровня вызовов (CLI), объясняет компоненты взаимодействия, такие как процедуры, структуры и привязки переменных для выполнения операторов SQL на различных языках программирования, таких как COBOL и C ++. , Например.
Часть 4 ISO / IEC 9075-4: 2011 SQL / Persistent Stored Modules (PSM), в общих чертах описывает стандарты для процедурных расширений для SQL, включая обработку условий и поток управления, а также сигналы условий операторов и отказываться от них , а также локальные переменные и курсоры.Присваивает выражения параметрам и переменным. Обращается к обслуживанию постоянных подпрограмм языка базы данных, таких как хранимые процедуры.
Часть 9 ISO / IEC 9075-9: 2008 SQL / Управление внешними данными (MED), включает расширения SQL для определения типов связей данных и оболочек сторонних данных, которые позволяют SQL управлять внешними данными. Внешние данные доступны, но не управляются СУБД на основе SQL.
Часть 10 ISO / IEC 9075-10: 2008 SQL / Object Language Bindings (OLB), определяет семантику и синтаксис SQLJ.SQLJ — это встраивание SQL в Java. Стандарт определяет механизмы двоичной переносимости приложений SQLJ. Он также определяет несколько пакетов Java вместе с содержащимися в них классами.
Часть 11 ISO / IEC 9075-11: 2011 SQL / Схема информации и определения, определяет информационную схему и схему определения, предлагая инструменты для самоописания объектов SQL и баз данных. Включает идентификатор объекта SQL, спецификации безопасности и авторизации, а также ограничения безопасности и целостности.Поддерживает функции и пакеты ISO / IEC 9075, а также функции, предоставляемые реализациями СУБД на основе SQL.
Часть 13 — ISO / IEC 9075-13: 2008 ISO / IEC 9075-13: 2008: Процедуры и типы SQL с использованием языка программирования Java (JRT), Определяет возможность использования классов Java в качестве структурированного пользователя SQL -определенные типы, а также вызывать статические методы Java как подпрограммы из приложения SQL, известного как Java в базе данных.
Часть 14 — ISO / IEC 9075-14: 2011 Спецификации, связанные с SQL / XML, определяют расширения на основе SQL при использовании XML с SQL.В нем описаны типы данных, процедуры и функции XML. Он также описывает сопоставления типов данных XML в SQL для хранения и управления XML внутри базы данных SQL.
Мультимедийные и прикладные пакеты ISO / IEC 13249 SQL работают вместе с ISO / IEC 9075 как отдельный, но актуальный стандарт, который определяет различные интерфейсы и пакеты на основе SQL.
Цель этого пакета — предоставить централизованный доступ к наиболее распространенным приложениям баз данных, таким как изображения, текст, пространственные данные и интеллектуальный анализ данных.
Как найти копию стандартов
Печатные копии спецификаций стандартов SQL доступны только для покупки из-за ограничений авторских прав ISO и ANSI. Вы можете найти электронную копию на веб-сайте ANSI, выбрав «Стандарты доступа — Магазин eStandards» и поискав «Язык SQL».
Существует два варианта каждого документа, но они идентичны:
INCITS / ISO / IEC 9075 — * — 2011
ISO / IEC 9075 — *: 2011
Каждые Создатель базы данных стремится соответствовать этим стандартам, благодаря чему различные реализации SQL становятся похожими; однако каждая реализация по-прежнему имеет уникальный диалект для использования SQL, который включает расширения или дополнения к стандартам.
Тестирование SQL
Основные команды и операторы SQL одинаковы для всех диалектов SQL, поэтому, как только администратор баз данных знает, как использовать один, он может легко изучить другие.
Хотя у большинства программ баз данных SQL есть собственные проприетарные расширения, чтобы соответствовать стандартам ANSI, они должны, по крайней мере, поддерживать эти пять основных команд одинаковым образом:
ОБНОВЛЕНИЕ
УДАЛИТЬ
SELECT
INSERT
WHERE
SQL позволяет администратору баз данных выполнять следующие действия в базе данных:
Выполнить запросы
Получить обновление данных
- и удалить записи
Создание новых таблиц и представлений
Создание новых баз данных
Создание хранимых процедур
Установка разрешений для представлений, таблиц и процедур.
Для создания веб-сайта, который может получить доступ к данным из базы данных, необходима программа базы данных системы управления реляционными базами данных (RDBMS). Некоторые популярные программы СУБД включают:
SQL Server
MS Access
MySQL
Postgre SQL
Oracle Database.
Для создания базы данных администратору базы данных также необходимо использовать следующее:
Стандартный язык разметки, например CSS / HTML
Язык сценариев на стороне сервера, например ASP или PHP.
Узнайте, как использовать SQL для получения запрашиваемых данных.
Анатомия базы данных
Система управления реляционными базами данных (СУБД) составляет основу базы данных. Использование СУБД позволяет администраторам баз данных хранить данные в объектах базы данных, называемых таблицами. Таблицы состоят из столбцов и строк связанных данных, организованных в разделы.
Идентификация таблиц базы данных
Большинство баз данных содержат более одной таблицы, поэтому администратор базы данных должен идентифицировать каждую таблицу по имени.Каждая таблица будет содержать ряды записей, содержащих информацию и данные.
Например, бизнес будет использовать базу данных с таблицей клиентов, содержащей следующие данные для каждого клиента:
Имя клиента
Имя контактного лица
Идентификатор клиента
Адрес клиента — улица, город, почтовый индекс и страна
Контактная информация клиента
В этом случае таблица содержит пять записей — по одной для каждого клиента — и восемь столбцов, по одной для каждого блока данных: Имя клиента, Имя контактного лица, Клиент Идентификатор, адрес клиента, включая город, почтовый индекс и страну, а также контактную информацию клиента.
Обмен данными с базой данных SQL
Администраторы баз данных выполняют все действия, необходимые в базе данных, с помощью операторов SQL. Затем результаты сохраняются в таблице результатов, называемой набором результатов.
SQL обычно не чувствителен к регистру, и некоторые системы баз данных требуют использования точки с запятой в конце каждого оператора SQL. Точка с запятой стала стандартным методом отделения операторов SQL друг от друга в системе баз данных.
Это позволяет администратору баз данных выполнять несколько операторов SQL за один вызов сервера.
Некоторые команды SQL включают:
ALTER TABLE Изменяет таблицы.
ALTER DATABASE Изменяет базы данных.
CREATE DATABASE Создает новые базы данных.
CREATE INDEX Создает ключи индекса / поиска.
CREATE TABLE Создает новые таблицы.
УДАЛИТЬ Удаляет данные из баз данных.
DROP INDEX Удаляет индексы.
DROP TABLE Удаляет таблицы
INSERT INTO Вставляет новые данные в базы данных.
SELECT Извлекает данные из баз данных.
ОБНОВЛЕНИЕ Обновляет данные в базах данных.
12 правил Кодда
Когда он создавал первую систему управления реляционными базами данных, доктор Кодд включил 13 правил, предполагая, что если система управления базами данных соответствует всем этим правилам, это настоящая система управления реляционными базами данных.
Поскольку он пронумеровал их от нуля до 12, они называются 12 правил Кодда:
Правило нуля: основы Указывает, что базовая система должна удовлетворять трем основным требованиям: система. Он также должен использовать реляционные возможности исключительно для управления базой данных, чтобы считаться настоящей СУБД.
Правило первое: представление информации Представляйте всю информацию в базе данных единым образом, в частности, помещая значения в позиции столбцов в строках таблиц.
Правило второе: гарантированный доступ Все данные должны быть доступны, как и основное требование для первичных ключей. Каждое отдельное скалярное значение в базе данных должно иметь разумную адресацию путем определения имени содержащей его таблицы и столбца, а также значения первичного ключа для содержащей его строки.
Правило третье: обработка нулевых значений СУБД должна позволять каждому полю оставаться пустым или нулевым. Это означает, что он должен поддерживать обработку представления любой неприменимой или отсутствующей информации систематическим образом, отличным от всех обычных значений, а также независимо от типа данных.
Правило четвертое: Активный онлайн-каталог Система должна поддерживать встроенную, интерактивную, реляционную структуру или каталог, доступный авторизованным пользователям, использующим их обычный язык запросов. Пользователи должны иметь возможность доступа к каталогу базы данных, используя ту же реляционную модель и язык запросов, которые они использовали для доступа к данным внутри базы данных.
Правило пятое: всеобъемлющий подъязык данных Система должна поддерживать как минимум один реляционный язык с линейным синтаксисом.Пользователи должны иметь возможность использовать его как в прикладных программах, так и в интерактивном режиме. Он также должен поддерживать операции манипулирования данными, такие как обновление и извлечение, и операции определения данных, такие как определения представлений, а также операции управления транзакциями, такие как фиксация, начало и откат. Он также должен иметь ограничения целостности и безопасности.
Правило шестое: Обновление Любые представления, которые могут быть обновлены теоретически, должны обновляться системой.
Правило седьмое: обновление, вставка и удаление на высоком уровне Система должна поддерживать операторы обновления, вставки и удаления по умолчанию, чтобы пользователи могли извлекать данные из реляционной базы данных в наборах, состоящих из данных из несколько таблиц и / или строк. Операции обновления, вставки и удаления должны быть включены для любого извлекаемого набора, а не для отдельной строки в одной таблице.
Правило восьмое: Физическая независимость данных Обновления на физическом уровне не должны требовать обновления приложения на основе структуры.Например, изменение способа хранения данных, например, размещение их в массивах или связанных списках.
Правило девятое: независимость логических данных Обновления на логическом уровне, например столбцы, таблицы и строки, не должны требовать обновления приложения на основе структуры. Достичь логической независимости данных труднее, чем независимости физических данных.
Правило 10: Независимость целостности Укажите, что ограничения целостности должны храниться отдельно от прикладных программ и в каталоге.Должна быть возможность обновлять такие ограничения, когда это необходимо, не затрагивая какие-либо существующие в настоящее время приложения.
Правило 11: Независимость распределения Распределение частей базы данных по различным расположениям не должно быть видимым для пользователей базы данных. Все существующие приложения должны иметь возможность работать непрерывно и эффективно перед лицом внедрения распределенной версии СУБД или когда текущие распределенные данные перераспределяются по всей системе.
Правило 12: Без Subversion Если система предоставляет интерфейс с одной записью за раз или низкоуровневый интерфейс, его нельзя использовать для ослабления другой системы. Примером этого может быть акт обхода ограничения реляционной целостности или безопасности.
Язык структурированных запросов, или SQL, прошел долгий путь, но основы, использованные для его создания, по-прежнему прочны. Администраторы баз данных могут открыть для себя больше способов и мест их использования, поскольку облачные вычисления становятся нормой; однако ANSI останется на месте, чтобы указать стандарты для унификации языков запросов к базам данных.
Ресурсы:
ANSI.org
История SQL
W3Resource
Стандарты SQL — JCC Consulting
Эта страница разработана как центральный источник информации о процессе стандартизации SQL и его текущем состоянии. Он также содержит указатели на другие источники информации о стандарте SQL. Информация доступна здесь:
- Текущее состояние
- Части стандарта SQL и временная шкала
- Определение частей
- Хронология
- Количество страниц, посвященных каждой части
- Как получить копии стандартов
- Процесс стандартизации SQL
- SQL / MM
- Заявление об ограничении ответственности и кредиты
Текущее состояние
Хотя стандарт SQL часто воспринимается как устоявшаяся технология, а не как новаторская, передовая технология, как это было, когда процесс стандартизации начался в начале 1980-х годов, он все еще является расширяющимся, развивающимся и актуальным стандартом.
Исходный стандарт SQL был завершен как стандарт США ANSI (Американский национальный институт стандартов) в 1986 году и принят как стандарт ISO (Международная организация по стандартизации) в 1987 году. Расширения и изменения были выпущены в 1989 и 1992 годах.
Чтобы соответствующие части выполнялись с разной скоростью, стандарт SQL разделен на несколько частей. Две из этих частей были завершены в 1990-х годах как дополнения к SQL-1992. SQL / CLI (интерфейс языка вызовов) был завершен в 1995 году, а SQL / PSM (постоянные сохраненные модули) был завершен в 1996 году.Изменения и дополнения к Частям с первой по пятую были завершены в 1999 году.
После завершения SQL: 1999 была проведена значительная работа по SQL с Java (торговая марка Sun) и XML, а также по использованию SQL для управления данными, внешними по отношению к базе данных SQL.
Еще одна ревизия всех частей была завершена как SQL: 2003. Начиная с SQL: 2003, комитеты по стандартам SQL расширили поддержку XML и исправили некоторые ошибки. Расширенный стандарт SQL / XML был опубликован в 2006 году, а полная редакция всех девяти частей была опубликована в 2008 году.
В 2007 году WG3 приняла решение, что после завершения SQL: 2008 четыре из девяти частей будут достаточно стабильными и не нуждаются в дополнительном расширении. Остальные пять частей, SQL / Framework, SQL / Foundation, SQL / PSM, SQL / Schemata и SQL / XML, должны быть завершены в следующей редакции в 2011 году.
В дополнение к стандартам SQL существует отдельный набор спецификаций, называемый SQL / MM, который является мультимедийным расширением стандарта SQL.
Части и события SQL
За прошедшие годы стандарт SQL расширился и множился.Части были разделены и воссоединены. В результате происхождение и статус различных завершенных и разрабатываемых стандартов могут быть весьма запутанными.
Следующие три таблицы могут помочь прояснить части стандарта. В первом дается краткое объяснение детали. Вторая — это временная шкала, показывающая активность каждой части для каждой версии стандарта. Третья показывает количество страниц, посвященных каждой части в каждом из стандартов.
Объяснение частей стандарта | |
---|---|
Часть | Объяснение |
Часть 1 — SQL / Framework | Содержит информацию, общую для всех частей стандарта, и описывает части. |
Часть 2 — SQL / Foundation | SQK Синтаксис и семантика определения данных и манипулирования данными, включая SQL, встроенный в не объектные языки программирования. |
SQL / OLAP | Аналитическая обработка в режиме онлайн: Поправка, описывающая функции и операции, полезные для аналитической обработки. |
Часть 3 — SQL / CLI | Интерфейс уровня вызова: соответствует ODBC. |
Часть 4 — SQL / PSM | Постоянно хранимые модули: хранимые процедуры, внешние процедуры и расширения процедурного языка для SQL. |
Часть 5 — SQL / привязки | Встроенный SQL. |
Часть 6 — SQL / транзакция | Специализация SQL спецификации X-Open XA. Проект отменен. |
Часть 7 — SQL / Temporal | Расширения SQL для работы с типами данных, ориентированными на время. Были некоторые разногласия по поводу требований и деталей Temporal. Дополнительные сведения по этой теме см. В книгах Ричарда Снодграсса и Кристиана Дженсена «Разработка приложений для временных баз данных на языке SQL», а также «Временные данные и реляционная модель» К.Дж. Дате, Хью Дарвен и Никос Лоренцос. Этот проект был отозван. |
Часть 8 — Расширенные объекты SQL / Objects | Во время разработки SQL-1999 было много обсуждений и изменений в поддерживаемой объектной модели. Чтобы изолировать эти изменения, часть объекта была выделена в отдельную часть. Поскольку объектная модель стабилизировалась во время завершения SQL-1999, объектно-ориентированные возможности были снова объединены в SQL / Foundation, поэтому эта часть больше не существует. |
Часть 9 — SQL / MED | Управление внешними данными: добавляет синтаксис и определения в SQL / Foundation, чтобы разрешить SQL-доступ к источникам данных (файлам), отличным от SQL. |
Часть 10 — SQL / OLB | Привязки объектного языка: Определяет синтаксис и семантику встраивания SQL в Java ™. Работает вместе с JDBC, но поддерживает приложения, которым не требуются возможности динамического SQL, предоставляемые JDBC. Это соответствует тому, что группа SQLJ называет частью 0 SQLJ.Мартин Грубер называет это «Встроенный SQL.J» |
Часть 11 — SQL / Схема | Схемы информации и определений |
Часть 12 — SQL / Репликация | Средства репликации для SQL. Этот проект начался в 2000 году. Цель состоит в том, чтобы определить синтаксис и семантику, позволяющие определять схемы и правила репликации, включая правила для разрешения конфликтов обновлений. |
Часть 13 — SQL / JRT | Подпрограммы и типы Java: подпрограммы, использующие язык программирования Java ™ (Persistent Stored SQLJ) |
Часть 14 — SQL / XML | SQL и XML |
Часть 15 — SQL / MDA | Поддержка SQL для многомерных массивов |
Несколько частей стандарта ISO / IEC 9075 SQL были добавлены, обновлены и не обновлены в нескольких выпусках.
Хронология | ||||||
---|---|---|---|---|---|---|
Часть | SQL 1992 | SQL 1999 | SQL 2003 | SQL 2008 | SQL 2011 | SQL 2016 |
Часть 1 — SQL / Framework | Завершено | Завершено | Завершено | Завершено | Завершен | |
Часть 2 — SQL / Foundation | Завершено (включая привязки и таблицы с информацией о схеме) | Завершено | Завершено (SQL / привязки объединены; таблицы с информацией схемы отделены) | Дополнительные расширения и некоторые исправления ошибок. | Добавлена поддержка таблиц с поддержкой версий системы | Поддержка распознавания образов строк — регулярные выражения для последовательностей строк, полиморфные табличные функции и JSON |
SQL / OLAP | Обработано как поправка к SQL / Foundation | OLAP объединена с SQL / Foundation | ||||
Часть 3 — SQL / CLI | Завершено в 95 году как расширение до SQL-92 | Завершено | Завершено | Завершено | Не обновляется | Завершено |
Часть 4 — SQL / PSM | Завершено в 1996 году как расширение до SQL-92 | Завершено (сохраненные подпрограммы и оператор вызова перемещены в SQL / Foundation) | Завершено | Завершено | Завершено | Завершено |
Часть 5 — SQL / привязки | Спецификация встраивания SQL в языки программирования вынесена в отдельную часть. | SQL / привязки снова объединены в SQL / Foundation, | ||||
Часть 6 — SQL / транзакция | Проект отменен за ненадобностью | |||||
Часть 7 — SQL / Temporal | Проект отменен из-за отсутствия прогресса. | |||||
Часть 8 — Расширенные объекты SQL / Objects | объединен с SQL / Foundation | |||||
Часть 9 — SQL / MED | на основе SQL-99 | Пересмотр завершен | Завершено | Не обновляется | Завершено | |
Часть 10 — SQL / OLB | завершен в 98 году как стандарт только ANSI | Версия ISO на основе SQL-99 завершена | Пересмотр завершен | Завершено | Не обновляется | Завершено |
Часть 11 — SQL / Схема | Таблицы информации о схеме, извлеченные из SQL-99, завершены | Завершено | Завершено | Завершено | ||
Часть 12 — SQL / Репликация | Стал проектом в 2000 году с целью определения синтаксиса и семантики для поддержки определения схем и правил репликации, включая правила для разрешения конфликтов обновлений. | Проект отменен из-за отсутствия прогресса. | ||||
Часть 13 — SQL / JRT | завершен в 1999 году как стандарт только ANSI | Пересмотр завершен | Завершено | Не обновляется | Завершено | |
Часть 14 — SQL / XML | Завершено | Расширение завершено в 2006 году. Поддержка XQuery Update добавлена в 2008 году. | Завершено | Завершено | ||
Часть 15 — SQL / MDA | Опубликовано в 2019 г. |
Сравнение необработанного количества страниц в каждой части стандарта дает простую оценку сложности и полноты стандарта SQL.
Страницы, посвященные разным разделам | ||||||
---|---|---|---|---|---|---|
Часть | SQL 1992 Страницы | SQL 1999 Страницы | SQL 2003 Страницы | SQL 2008 Страницы | SQL 2011 Страницы | SQL 2016 Страницы |
85 | 81 | 93 | 90 | 89 | ||
Часть 2 — SQL / Foundation | 628 | 1,147 | 1,267 | 1,366 | 1,422 | 1732 |
Часть 3 — SQL / CLI (1995) | 236 | 421 | 402 | 405 | 404 | |
Часть 4 — SQL / PSM (1996) | 256 | 170 | 184 | 191 | 196 | 201 |
Часть 5 — SQL / привязки | 261 | |||||
Часть 9 — SQL / MED | 498 | 486 | 488 | |||
Часть 10 — SQL / OLB | 405 | 415 | 399 | |||
Часть 11 — SQL / Схема | 296 | 298 | 298 | 338 | ||
Часть 13 — SQL / JRT | 204 | 208 | 162 | |||
Часть 14 — SQL / XML | 266 | 447 | 447 | 459 | ||
Часть 15 — SQL / MDA | 176 | |||||
Итого | 1,120 | 2,084 | 3 606 | 3 906 | 2,456 | 4 348 |
Получение копий стандартов
Из-за ограничений авторских прав ANSI и ISO копии спецификаций стандартов SQL доступны только для покупки.
Электронные (PDF) печатные копии стандартов SQL доступны из нескольких источников.
- ISO — http://www.iso.ch, щелкните «ISO STORE» и выполните поиск 9075. Цены указаны в швейцарских франках.
- ANSI — http://www.ansi.org/, щелкните «Стандарты доступа — Магазин электронных стандартов» и выполните поиск «Язык SQL».
- Убедитесь, что вы выбрали версию 2016 года
- Обратите внимание, что существует два варианта каждого документа:
- INCITS / ISO / IEC 9075 — * — 2016
- ISO / IEC 9075 — *: 2016
(Варианты документов «INCITS / ISO / IEC» стоят 30 долларов США.00 за документ. Варианты «ISO / IEC» варьируются от 180 до 451 доллар США за документ. Содержание документов идентично.)
Процесс стандартизации SQL
Процесс создания стандарта требует большой работы множества людей и определенного количества бюрократии.
Международный (ISO)
На международной арене стандарт SQL разрабатывается комитетом, обозначенным как ISO / IEC JTC 1 / SC 32 Управление данными и обмен / WG 3 — Языки баз данных.Этот комитет состоит из делегаций стран-участниц.
- Офицеры
- Руководитель — Кейт Хейр — США
- Редактор — Джим Мелтон — США
- Активных участников:
- США
- Канада
- Великобритания
- Нидерланды
- Германия
- Япония
- Китай
WG3 обычно собирается два раза в год для обсуждения и обработки предлагаемых изменений, дополнений и / или исправлений от различных участников.
Каждая из стран-участниц имеет разные организации и процедуры для определения того, кто будет членами делегации в WG3 и какие предложенные изменения будут поддержаны.
США
В США работа над стандартами SQL выполняется комитетом по базам данных ANSI INCITS DM32.2.
Примечание: DM32.2 раньше назывался INCITS h3 до середины 2009 года, когда INCITS реорганизовал комитеты в соответствии со структурой ISO / IEC SC 32.
INCITS (Международный комитет по стандартам информационных технологий) является аккредитованной организацией по разработке стандартов ANSI (Американский национальный институт стандартов).По данным веб-сайта INCITS (http://www.incits.org):
INCITS спонсируется Советом индустрии информационных технологий (ITI), торговой ассоциацией, представляющей ведущих американских поставщиков продуктов и услуг в области информационных технологий.
В DM32.2 принимают участие технические эксперты компаний — один голос на компанию. Текущий состав комитета:
- Офицеры
- Председатель: Дон Дойч — Oracle Corporation
- Вице-председатель: Кейт Хэйр — JCC Consulting, Inc.
- Секретарь — Майк Горман — Уайтмарш
- Международный представитель — Кришна Кулкарни — IBM
- — Джим Мелтон — Oracle
Редактор
- компаний-участников
- Actian
- IBM
- Интерсистемс
- JCC Consulting, Inc.
- Microsoft
- Neo4J
- Корпорация Oracle
- Sybase / SAP
- Терадата
- Информационные системы Уайтмарша
SQL / MM
В рамках усилий по разработке международных стандартов SQL за SQL / MM отвечает комитет ISO / IEC JTC 1 / SC 32 / WG 4 SQL / Multimedia и пакеты приложений.Текущие части SQL / MM:
- SQL / MM, часть 1: Framework
- SQL / MM Часть 2: Полный текст
- SQL / MM Часть 3: Пространственный
- SQL / MM Часть 5: Неподвижное изображение
- SQL / MM, часть 6: интеллектуальный анализ данных
Заявление об ограничении ответственности
Страница стандартов JCC SQL была создана и поддерживается Кейт У. Хэйр (этот адрес электронной почты защищен от спам-ботов. Для его просмотра необходимо включить JavaScript) из JCC Consulting, Inc.Кейт является членом INCITS DM32.2 с правом голоса, участвует в процессе разработки стандартов ANSI SQL с 1988 года, в настоящее время является заместителем председателя комитета США и руководителем (председателем) ISO / IEC JTC 1 / SC32 WG3 ( Международный комитет по стандартам SQL). Любые мнения или позиции, выраженные здесь, принадлежат Китаю и не обязательно отражают мнение или позицию INCITS DM32.2, ISO / IEC JTC1 / SC 32 / WG3 DBL или любого другого члена любого комитета.
История стандартов SQL
Изменился ли стандарт SQL за 30 с лишним лет его существования? Абсолютно! Узнайте о пути от SQL-86 к современному SQL, стандартному сегодня языку данных.
SQL был создан в начале 1970-х годов компанией IBM. В 1974 году Дональд Чемберлин и Раймон Бойс опубликовали статью SEQUEL: A Structured English Query Language, которая представила миру SQL. Статья содержала грамматику BNF (подробное техническое описание синтаксиса языка) для языка, что позже сочла ошибкой IBM. Публикация грамматики позволила различным поставщикам внедрять SQL в свои собственные механизмы баз данных. Однако между реализациями SQL поставщиков было довольно много различий, поскольку каждый поставщик вводил свои собственные расширения SQL.К середине 1980-х годов между различными версиями SQL возникла существенная несовместимость.
Также в 1980-х годах Американский национальный институт стандартов (ANSI) начал работу над стандартом SQL. Целью введения стандарта было обеспечение переносимости приложений SQL между соответствующими продуктами.
SQL-86
Первым стандартом SQL был SQL-86 . Он был опубликован в 1986 году как стандарт ANSI, а в 1987 году как стандарт Международной организации по стандартизации (ISO).Отправной точкой для стандарта ISO стала реализация стандарта IBM SQL. Эта версия стандарта SQL также известна как SQL 1 .
Стандарт SQL-86 — 120 страниц. Он содержит синтаксис для операторов SELECT
, INSERT
, UPDATE
и DELETE
. Синтаксис SELECT
позволяет фильтровать с помощью WHERE
, используя GROUP BY
с несколькими столбцами (но не по выражениям) и фильтруя группы с HAVING
.Нет явного синтаксиса JOIN
; вы можете перечислить несколько таблиц в предложении FROM
, чтобы получить, по сути, перекрестное соединение, которое вы можете позже отфильтровать с помощью WHERE
. Невозможно выполнить ВНЕШНИЕ СОЕДИНЕНИЯ
с этим синтаксисом. Однако синтаксис SELECT
допускает подзапросы.
Стандарт также имеет синтаксис определения схемы: вы можете создавать таблицы (только с ограничениями UNIQUE
и NOT NULL
), создавать представления и предоставлять привилегии.Типы данных, представленные в стандарте, — это символьные строки и числа ( NUMERIC
, DECIMAL
, INTEGER
, SMALLINT
, FLOAT
, REAL
и DOUBLE PRECISION
). Нет операторов ALTER
, DROP
или REVOKE
. Также существует встраивание SQL в различные языки программирования (Cobol, Fortran, Pascal и PL / 1).
Как правило, вы можете купить стандартные документы ISO или ANSI, даже старые и отозванные версии.Однако, как рассказывает Эван Кэрролл в своем сообщении о переполнении стека, в настоящее время нелегко овладеть стандартом SQL-86. Но если вам интересно, вы можете найти SQL-86 под названием FIPS-127.
SQL-89
Следующим стандартом SQL был SQL-89 , опубликованный в 1989 году. Это была небольшая редакция более раннего стандарта, надмножество SQL-86, пришедшее на смену SQL-86. Размер стандарта не изменился.
Самыми важными новыми функциями были ограничения целостности: в дополнение к UNIQUE
, NOT NULL
и опциям проверки в уже доступных представлениях были добавлены первичные ключи, внешние ключи и DEFAULT
и CHECK
ограничения. .Стандарт также добавил новые языковые привязки для C и Ada.
SQL-92
Следующей версией стандарта была SQL-92 — и это была основная версия. Язык, представленный в SQL-92, иногда называют SQL 2 . Стандартный документ вырос со 120 до 579 страниц. Однако большая часть роста произошла за счет более точных спецификаций существующих функций.
Наиболее важными нововведениями были:
- Явный синтаксис
JOIN
и введение внешних соединений:LEFT JOIN
,RIGHT JOIN
,FULL JOIN
. - Введение
NATURAL JOIN
иCROSS JOIN
- Введение операций над множествами (объединение множеств, пересечение множеств и разность множеств).
- Введение условного выражения
CASE WHEN
. - Новые скалярные операции: конкатенация строк, извлечение подстроки и математика даты и времени.
- Оператор
CAST
, который позволяет явное преобразование значений в типы.
SQL-92 также представил новые операторы определения данных: ALTER
и DROP
для таблиц и представлений, а также новые типы данных ( дата
, время
, временная метка
, интервал
, бит
строка, varchar
строка и национальных символов
строк).В этой версии добавлена информационная схема (стандартный способ получения метаданных базы данных, таких как имена таблиц, столбцы таблицы, типы столбцов и ограничения таблицы). Он также представил временные таблицы, уровни изоляции транзакций и динамическое выполнение запросов (динамический SQL).
Стандарт SQL
был разделен на три уровня соответствия: начальный уровень (SQL-92 начального уровня был аналогичен SQL-89 с ограничениями целостности), промежуточный и полный.
SQL-92 — это основа языка запросов, используемого сегодня в реляционных базах данных.Когда они говорят о «SQL», большинство людей имеют в виду SQL-92. Базы данных, которые уже существовали в 1992 году, изменили свою реализацию SQL в соответствии со стандартом. В более новых базах данных стандарт использовался в качестве справочного материала для их реализации.
SQL-92 по-прежнему преподается как «SQL» в школах. И это правильно — SQL-92 — очень хорошая отправная точка для изучения SQL. Многим достаточно заниматься повседневной работой. Вы можете изучить дополнительные функции позже, когда они вам понадобятся.И большинство баз данных поддерживают SQL-92. Ни одна реализация не соответствует стандарту на 100%, но несовместимость не так важна, особенно когда вы только начинаете.
На LearnSQL.com стандартный SQL — самый важный диалект, которому мы обучаем. Мы считаем, что если вы выучите стандартный язык, вы сможете использовать его для работы с большинством баз данных. Это основа наших курсов для начинающих; Основы SQL научат вас оператору SELECT
со всеми функциями, доступными в SQL-92, включая различные виды JOIN
, GROUP BY
, операции набора и подзапросы.Курс INSERT, UPDATE и DELETE Data в SQL научит вас операторам INSERT
, UPDATE
и DELETE
, в то время как SQL JOINs позволит вам практиковать различные типы JOINs
.
Для людей, заинтересованных в создании таблиц, мы рекомендуем нашу обучающую программу «Создание структуры базы данных». Дорожка состоит из пяти курсов, которые научат вас создавать таблицы, определять ограничения, выбирать соответствующие типы данных и создавать представления с использованием стандартного синтаксиса SQL, который легко переносится между различными ядрами баз данных.
SQL: 1999
SQL: 1999 (также называемый SQL 3 ) был четвертой версией стандарта SQL. Начиная с этой версии, в названии стандарта вместо дефиса использовалось двоеточие, чтобы соответствовать названиям других стандартов ISO. Этот стандарт был опубликован несколькими частями в период с 1999 по 2002 год.
Первый выпуск SQL: 1999 состоял из пяти частей:
- Часть 1: SQL / Framework (100 страниц) определяет фундаментальные концепции SQL.
- Часть 2: SQL / Foundation (1050 страниц) определяет основной синтаксис и операции SQL: типы, схемы, таблицы, представления, запросы и операторы обновления, выражения и т. Д. Эта часть наиболее важна для обычных пользователей SQL.
- Часть 3: SQL / CLI (интерфейс уровня вызова) (514 страниц) определяет интерфейс прикладного программирования для SQL.
- Часть 4: SQL / PSM (Persistent Stored Modules) (193 страницы) определяет расширения, которые делают SQL процедурным.
- Часть 5: SQL / привязки (270 страниц), определяющие методы встраивания операторов SQL в прикладные программы, написанные на стандартном языке программирования.
Еще три части, также считающиеся частью SQL: 1999, были опубликованы позже.
SQL: 1999 представил множество важных функций, которые являются частью современного SQL. Среди наиболее важных были общие табличные выражения (CTE). Это очень полезная функция, которая позволяет вам организовывать длинные и сложные SQL-запросы и делать их более удобочитаемыми. При использовании синтаксиса WITH [RECURSIVE]
CTE также могут рекурсивно обрабатывать иерархические данные. Вы можете научиться писать рекурсивные запросы на SQL с помощью LearnSQL.com по интерактивному курсу Рекурсивные запросы.
SQL: 1999 также представил возможности OLAP (онлайн-аналитической обработки), которые включают функции, полезные при подготовке бизнес-отчетов. В это время в стандарт вошли GROUP BY
extension ROLLUP
, CUBE
и GROUPING SETS
. Вы можете изучить их в нашем курсе GROUP BY Extensions (или прочитать о курсе и расширениях в нашей статье из серии курсов за ноябрь 2020 года).
Некоторые незначительные дополнения к SQL в стандарте SQL: 1999 включают использование выражений в ORDER BY, включение типов данных для больших двоичных объектов ( LOB
и CLOB
) и введение триггеров.
Размер стандарта SQL значительно вырос в период с 1992 по 1999 год. Стандарт SQL-92 имел почти 600 страниц, но он все еще был доступен для обычных пользователей SQL. В таких книгах, как «Руководство по стандарту SQL » Кристофера Дейта и Хью Дарвена, обсуждается и объясняется стандарт SQL-92.
Начиная с SQL: 1999 стандарт — теперь более 2000 страниц — больше не был доступен для обычных пользователей SQL. Он стал ресурсом для экспертов по базам данных и поставщиков баз данных. Стандарт определяет разработку SQL в основных базах данных; он показывает, какие новые языковые функции стоит внедрить, чтобы оставаться в актуальном состоянии. Он также стандартизирует синтаксис новых функций SQL, гарантируя, что основные базы данных реализуют их аналогичным образом, используя аналогичный синтаксис и семантику.
Изменение роли стандарта SQL подчеркивается тем фактом, что больше не существует официального органа, удостоверяющего соответствие стандарту.До 1996 года программа стандартов управления данными Национального института стандартов и технологий (NIST) сертифицировала соответствие СУБД SQL стандарту SQL. Теперь поставщики самостоятельно подтверждают соответствие своей продукции.
SQL: 2003 и более поздние версии
В 21 веке стандарт SQL регулярно обновлялся.
Стандарт SQL: 2003 был опубликован 1 марта 2004 года. Его главным дополнением стали оконные функции, мощная аналитическая функция, которая позволяет вычислять сводную статистику без сворачивания строк.Оконные функции значительно увеличили выразительность SQL. Они чрезвычайно полезны при подготовке всех видов бизнес-отчетов, анализе данных временных рядов и анализе тенденций. Добавление оконных функций к стандарту совпало с популярностью OLAP и хранилищ данных. Люди начали использовать базы данных для принятия бизнес-решений на основе данных. Эта тенденция только набирает обороты благодаря растущему объему данных, которые собирают все компании. Вы можете изучить оконные функции в нашем курсе «Оконные функции».(Прочтите об этом курсе или о том, почему здесь стоит изучить оконные функции SQL.) В SQL: 2003 также были представлены функции, связанные с XML, генераторы последовательностей и столбцы идентификации.
После 2004 года в язык не было никаких серьезных новаторских дополнений. Изменения в стандарте SQL отразили изменения в технологии того времени. SQL: 2003 представил функции, связанные с XML, чтобы обеспечить возможность взаимодействия между базами данных и технологиями XML, которые были актуальной новинкой в начале 2000-х годов. SQL: 2006 дополнительно уточняет, как использовать SQL с XML. Это не был пересмотр полного стандарта SQL, а только часть 14, которая касается взаимодействия SQL-XML.
Следующие версии стандарта внесли незначительные улучшения в язык. SQL: 2008 узаконил использование определений внешних курсоров ORDER BY
(!) И добавил триггеры INSTEAD OF
, оператор TRUNCATE
и предложение FETCH
. SQL: 2011 добавил временные данные и некоторые улучшения оконных функций и предложения FETCH
.
SQL: 2016 добавил функции сопоставления строк и полиморфных таблиц, а также долгожданную поддержку JSON. В 2010-х JSON заменил XML в качестве общего формата обмена данными; современные Интернет-приложения используют JSON вместо XML в качестве формата данных. Возникающее движение за NoSQL также популяризировало JSON; в базах данных документов хранятся файлы JSON, а хранилища значений ключей совместимы с форматом JSON. В стандарт SQL добавлена поддержка JSON для обеспечения взаимодействия с современными приложениями и новыми типами баз данных.
Текущий стандарт SQL — SQL: 2019 . Добавлена часть 15, в которой определяется поддержка многомерных массивов в SQL.
Каково ваше будущее с SQL?
Оглядываясь на более чем 30-летнюю историю SQL, вы можете увидеть различные этапы его развития. SQL 1 в 1980-х (SQL-86, SQL-89) был первой попыткой стандартизировать и формализовать определение языка. SQL-92 заложил основу для стабильного языка, который мы знаем сегодня, того, который сейчас является стандартным языком данных для всех основных технологий обработки данных.
SQL: 1999 и SQL: 2003 обеспечили основу для современного SQL с добавлением оконных функций, общих табличных выражений и расширений GROUP BY
. После 2003 года язык достиг фазы стабильности и зрелости. Основной язык не меняется, но добавляются новые функции для улучшения существующего языка и поддержки новых технологий, таких как XML или JSON.
Стандарт SQL больше не является справочником для обычных пользователей SQL. Однако преимущества наличия стандарта многочисленны.Стандарт:
- Указывает, какие языковые расширения важны и полезны.
- Руководит разработкой реализаций SQL в базах данных и других технологиях обработки данных.
- Предоставляет общий синтаксис и семантику, которые реализует большинство технологий обработки данных.
Стандарт не гарантирует полной совместимости всех реализаций SQL, но гарантирует, что они по большей части согласованы и все они развиваются в одном направлении.
На LearnSQL.com вы можете изучить все современные функции SQL с помощью наших интерактивных курсов:
- Основы SQL учит всем функциям оператора
SELECT
, доступному в SQL-92, включая различные видыJOIN,
,GROUP BY
, операции над множествами и подзапросы. - Как INSERT, UPDATE и DELETE данные в SQL учит операторам
INSERT
,UPDATE
иDELETE
. - SQL JOINs позволяет вам практиковать различные типы
JOIN
. - Создание базовых отчетов SQL исследует
CASE WHEN
выражений и способы их эффективного комбинирования сGROUP BY
. - Window Functions демонстрирует оконные функции SQL на реалистичных бизнес-примерах.
- Recursive Queries углубляется в общие табличные выражения (CTE), включая рекурсивные CTE, которые позволяют обрабатывать графы и иерархии в SQL.
- GROUP BY Extensions в SQL фокусируется на полезных аналитических расширениях для
GROUP BY: ROLLUP
,CUBE
иGROUPING SETS
. - Или просто изучите все это с помощью нашего SQL от А до Я.
Итак, теперь, когда вы знаете историю SQL, каким будет ваше будущее с этим языком? Мы надеемся, что вы научитесь этому и убедитесь на собственном опыте, насколько мощным и эффективным является SQL!
Источники:
Стандарт SQL — ISO / IEC 9075: 2016 (ANSI X3.135)
SQL (расшифровывается как язык структурированных запросов) — это стандартный язык для систем управления реляционными базами данных.Когда он возник еще в 1970-х годах, предметно-ориентированный язык был предназначен для удовлетворения потребности в выполнении запроса к базе данных, который мог перемещаться по сети указателей для поиска желаемого местоположения. Его применение для обработки структурированных данных стало популярным в эпоху цифровых технологий. Фактически, мощные возможности SQL по манипулированию базой данных и определениям, а также его интуитивно понятное табличное представление стали доступны в той или иной форме практически на каждой важной компьютерной платформе в мире.
Некоторые примечательные особенности SQL включают способность обрабатывать наборы данных как группы, а не отдельные единицы, автоматическую навигацию к данным и использование сложных и мощных операторов по отдельности.Используемый для множества задач, таких как запрос данных, контроль доступа к базе данных и ее объектам, обеспечение согласованности базы данных, обновление строк в таблице, а также создание, замена, изменение и удаление объектов, SQL позволяет пользователям работать с данными в логическом режиме. уровень.
«Стандарт ANSI» для SQL
Не существует такого понятия, как «Стандарты ANSI», поскольку ANSI не разрабатывает стандарты. Вместо этого существуют американские национальные стандарты и другие документы, написанные одобренными ANSI комитетами организаций по разработке стандартов.Тем не менее, мы получаем много запросов о «стандарте ANSI» для SQL. Стоит отметить, что, хотя эта фраза вводит в заблуждение и является неточной по многим причинам, она относится к существующим стандартным документам. SQL, как и многие другие великие вещи, пережившие 70-е годы, имеет богатую историю, удачно переплетенную со стандартами. При разработке спецификаций SQL использовался ANSI (еще один великий подвиг за всю нашу 100-летнюю историю).
Текущая редакция ISO / IEC 9075 для SQL
Если вы не хотите читать всю историю SQL, которая подробно описана ниже, короче говоря, SQL был стандартизирован в ANSI X3.135 в 1986 году, и через несколько месяцев он был принят ISO как ISO 9075-1987. Хотя большинство поставщиков модифицируют SQL в соответствии со своими потребностями, они обычно основывают свои программы на текущей версии этого стандарта. С тех пор международный стандарт (ныне ISO / IEC 9075) периодически пересматривался, последний раз в 2016 году. Он состоит из 9 частей:
ISO / IEC 9075-1: 2016 — Информационные технологии — Языки баз данных — SQL — Часть 1: Framework (SQL / Framework)
ISO / IEC 9075-2: 2016 — Информационные технологии — Языки баз данных — SQL — Часть 2: Foundation (SQL / Foundation)
ISO / IEC 9075-3: 2016 — Информационные технологии — Языки баз данных — SQL — Часть 3: Интерфейс уровня вызовов (SQL / CLI)
ISO / IEC 9075-4: 2016 — Информационные технологии — Языки баз данных — SQL — Часть 4: Постоянно хранимые модули (SQL / PSM)
ISO / IEC 9075-9: 2016 — Информационные технологии — Языки баз данных — SQL — Часть 9: Управление внешними данными (SQL / MED)
ISO / IEC 9075-10: 2016 — Информационные технологии — Языки баз данных — SQL — Часть 10: Объектный язык привязки (SQL / OLB)
ISO / IEC 9075-11: 2016 — Информационные технологии — Языки баз данных — SQL — Часть 11: Информация Схемы формирования и определения (SQL / Schemata)
ISO / IEC 9075-13: 2016 — Информационные технологии — Языки баз данных — SQL — Часть 13: Процедуры и типы SQL с использованием языка программирования Java TM (SQL / JRT)
ISO / IEC 9075-14: 2016 — Информационные технологии — Языки баз данных — SQL — Часть 14: Спецификации, связанные с XML (SQL / XML)
Обратите внимание, что разработчик исходного стандарта ANSI X3.135-1986, был Аккредитованный комитет по стандартам (ASC) X3, который в настоящее время является аккредитованной ANSI организацией по разработке стандартов INCITS. Сегодня, когда Объединенный технический комитет ISO / IEC (JTC) 1 по информационным технологиям разрабатывает международный стандарт, INCITS принимает серию ISO / IEC 9075 в американские национальные стандарты.
Прочтите, если вам интересно, как появился SQL.
SQL: стандартизированная история
Когда SQL был создан в начале 70-х годов, он назывался SEQUEL (структурированный английский язык запросов).Однако из-за проблемы с авторскими правами он был изменен на SQL. Фактически, сегодня SQL обычно произносится как «продолжение», но некоторые предпочитают неакронимное произношение «ess-cue-el» (если вы не знали, аббревиатура — это аббревиатура, которую вы можете произносить как слово, например SQL или ANSI).
Родители SQL, Дональд Чемберлин и Рэй Бойс, опираясь на модель, установленную Э. Ф. Коддом в его статье «Реляционная модель данных для больших общих банков данных», разработали язык программирования в своей собственной статье «SEQUEL: A Структурированный английский язык запросов.Они взяли языки Кодда с целью разработки реляционного языка, который был бы более доступен для пользователей без формального обучения математике или информатике. Эта оригинальная версия SQL, которую они разработали, использовалась для управления и извлечения данных, хранящихся в исходных системах реляционных баз данных IBM, известных как System R.
В последующие годы SQL не был общедоступным. Однако в 1979 году Oracle, тогда известная как Relational Software, выпустила свою собственную версию SQL под названием Oracle V2, которая была коммерчески выпущена.Важно отметить, что SQL не был первым языком программирования для навигации по базам данных, но он безупречно выглядел благодаря своей интуитивности, мощности и надежности. Есть причина, по которой мы до сих пор об этом говорим.
Однако длительный успех SQL нельзя объяснить только его качествами. Рука помощи стандартов не только помогла SQL приблизиться к универсальности, но также добавила ключевые атрибуты к тому, что превратилось в его современные спецификации.Все началось, когда к этому подключился ANSI.
В 1986 году язык SQL был официально принят, и Технический комитет баз данных ANSI (ANSI X3h3) Аккредитованного комитета по стандартам (ASC) X3 разработал первый стандарт SQL, ANSI X3.135-1986. Это было началом того, что люди ошибочно называют стандартом ANSI для SQL. По правде говоря, нет никаких стандартов ANSI, только стандарты, разработанные одобренными ANSI комитетами, многие из которых работают в соответствии с основными требованиями ANSI (американскими национальными стандартами).В течение нескольких месяцев ISO опубликовала технически идентичный стандарт ISO 9075-1987, выведя SQL, который когда-то был ограничен базами данных IBM в зачаточном состоянии, на международном уровне.
Примерно во время первой публикации этого стандарта, безусловно, потребовались более глубокие спецификации SQL, но ANSI X3.135-1986 действительно помог заложить основу для некоторых важных возможностей языка кодирования. Этот стандарт давал возможность использовать возможности SQL из четырех языков программирования: COBOL, FORTRAN, Pascal и PL / I.
Эти стандарты были пересмотрены согласованно, сначала в 1989 году (ANSI X3.135-1989 и ISO / IEC 9075: 1989), а затем в 1992 году (ANSI X3.135-1992 и ISO / IEC 9075: 1992). В редакцию 1989 года добавлена поддержка двух дополнительных языков программирования, Ada и C. Эти редакции в просторечии стали называться SQL-86, SQL-89 и SQL-92. Итак, если вы слышите эти имена в отношении формата SQL, обратите внимание, что это относится к различным редакциям этого стандарта.
Перед следующей редакцией был изменен Аккредитованный комитет по стандартам X3, Информационные технологии.С 1961 по 1996 год этот комитет по разработке стандартов, аккредитованный ANSI, работал во многих отраслях промышленности при поддержке ITI, торговой ассоциации, известной тогда как Ассоциация компьютеров и оборудования для бизнеса (CBEMA). Однако в конце этого периода. ASC X3 стал INCITS (Международный комитет по стандартам информационных технологий), аккредитованной ANSI организацией по разработке стандартов.
Стандарт был снова пересмотрен в 1993 (SQL3), 2003, 2008, 2011 и 2016 годах, и остается действующей редакцией.Стандарт SQL с начала века состоит из нескольких частей, но, начиная с издания 2003 года, он разделен на 9 частей, каждая из которых охватывает различные аспекты общего стандарта и подпадает под общим названием «Информационные технологии — База данных». языки — SQL.
Международный стандарт ISO / IEC 9075 для SQL разработан Объединенным техническим комитетом (JTC) 1 ISO / IEC по информационным технологиям. В текущей редакции ISO / IEC 9075: 2016 каждая из 9 частей была принята INCITS в качестве национальных стандартов США.
Этот полувековой процесс разработки принес нам более жизнеспособную форму языка SQL, которую мы знаем и от которой зависим сегодня. SQL используется многочисленными поставщиками, и, хотя большинство основных поставщиков действительно модифицируют язык в соответствии со своими желаниями, большинство из них основывают свои программы SQL на стандартной версии. ИСО / МЭК 9075: 2016, как и многие другие существующие стандарты добровольного консенсуса, призван способствовать инновациям и конкурентоспособности, а не препятствовать им.
Стандарт SQL — SQL в двух словах [Книга]
Чтобы обеспечить большее соответствие между поставщиками,
Американец
Национальный институт стандартов (ANSI) опубликовал свой первый стандарт SQL
в 1986 г. и второй широко принятый стандарт в 1989 г.Выпущен ANSI
обновления 1992 г., известные как SQL92 и
SQL2, и снова в
1999, названный как SQL99, так и SQL3. Каждый раз ANSI добавлял новые функции
и включил в язык новые команды и возможности.
Уникальной особенностью стандарта SQL99 является группа возможностей, которые позволяют
объектно-ориентированные расширения типов данных. В
Международная организация по стандартизации (ISO)
также одобрил SQL99. Важным отличием от SQL92 является то, что SQL99
расширяет уровней соответствия SQL92.
SQL92 впервые представлен
уровни соответствия путем определения
три категории: начальный, средний и полный.Продавцы были вынуждены
достичь начального уровня
соответствие заявлению о соответствии ANSI SQL. Соединенные штаты.
Национальный институт стандартов и
Технология (NIST) позже добавила переходный уровень между входом.
и промежуточные уровни. Так,
Уровни соответствия NIST были: Входной, Переходный,
Промежуточный и полный, в то время как
ANSI были только Entry, Intermediate и Full. Каждый выше
уровень стандарта был надмножеством нижестоящего уровня,
это означает, что каждый более высокий уровень стандарта включал все
особенности нижнего уровня соответствия.
SQL99 изменен
базовые уровни соответствия. Исчезли начальные, промежуточные и
Полный уровень соответствия. С SQL99 поставщики должны реализовать все
особенности самого низкого уровня соответствия, Core
, чтобы заявить (и опубликовать), что они
SQL: 1999
SQL99 готов.
Core SQL: 1999 — или Core SQL99,
для краткости — включает старый набор функций Entry SQL92, функции
из других уровней SQL92, а также некоторые новые функции. Это обновление до
стандарт SQL позволил поставщикам быстро перейти от Entry SQL92
набор функций для набора функций Core SQL99.
В то время как SQL92 имел промежуточный и полный уровни
соответствие, SQL99 имеет Enhanced
SQL: 1999
. Любая СУБД, поддерживающая Core SQL99.
тесты, плюс один или несколько из девяти дополнительных пакетов функций,
теперь считается, что он соответствует стандартам Enhanced SQL: 1999, определенным в SQL99 (также
называется Enhanced SQL99).
Пакеты дополнительных функций
Стандарт SQL99 представляет
идеально, но очень немногие производители сразу же соответствуют требованиям Core SQL99 или превосходят их.
требования.Стандарт Core SQL99 подобен межгосударственной скорости
предел: одни драйверы идут выше, другие — ниже, но немногие идут точно
Ограничение скорости. Точно так же реализации поставщиков могут сильно различаться.
Два комитета — один в ANSI, а другой в ISO
— состоит из представителей практически всех поставщиков СУБД
составили эти определения. В этом совместном и в некотором роде
политическая среда, поставщики должны идти на компромисс в отношении того,
предлагаемая функция и реализация будут включены в новую
стандарт.Много раз новая функция в стандарте ANSI выводится
из существующего продукта или является результатом новых исследований и
развитие со стороны академического сообщества. Следовательно, многие производители
принять некоторые функции в стандарте, а позже добавить еще больше.
Девять дополнительных пакетов функций, представляющих различные
подмножества команд не являются обязательными для поставщика. Некоторые функции SQL99 могут
появляются в нескольких пакетах, в то время как другие не появляются ни в одном из
пакеты. Эти пакеты и их функции описаны в
Таблица 1.1.
Таблица 1-1. Пакеты дополнительных функций SQL99
ID | Имя | Характеристики |
---|---|---|
PKG001 | Расширенные возможности даты и времени | |
PKG002 | Улучшенное управление целостностью |
ESC Триггеры действие ОГРАНИЧЕНИЕ |
PKG003 | Возможности OLAP |
|
PKG004 | Модули постоянного хранения SQL (PSM) |
|
PKG005 | Интерфейс уровня вызовов SQL (CLI) | |
PKG006 | Базовая опора объекта |
|
PKG007 | Расширенная поддержка объектов |
|
PKG008 | Активные функции базы данных | |
PKG009 | Поддержка мультимедиа SQL (MM) |
Имейте в виду, что поставщик СУБД может заявить о соответствии Enhanced SQL99, встретившись с Core
Стандарты SQL99 плюс только один из девяти добавленных пакетов ; поэтому прочтите мелкий шрифт продавца, чтобы
описание его программных возможностей.Понимая, какие особенности
составляют девять пакетов, программисты и разработчики получают четкое
представление о возможностях конкретной СУБД и о том, как различные
функции работают, когда код SQL переносится в другую базу данных
товары.
ANSI
стандарты — которые охватывают поиск, манипулирование и управление
данных в командах, например SELECT
,
JOIN
, ALTER TABLE
и
DROP
— формализованы многие поведения SQL и
синтаксические структуры в различных продуктах.Эти стандарты
становятся еще более важными как продукты баз данных с открытым исходным кодом, такие как
MySQL, miniSQL и PostgreSQL становятся все популярнее и разрабатываются.
виртуальными командами, а не крупными корпорациями.
SQL в двух словах
объясняет SQL
реализация четырех популярных СУБД. Эти поставщики не подходят для всех
стандарты SQL99; Фактически, все поставщики РСУБД постоянно играют в
тега с органами по стандартизации. Часто, как только продавцы
близко к стандарту, органы по стандартизации обновляют, уточняют или
в противном случае измените эталон.
Сравнение классов операторов дает дальнейшее определение
SQL92 и SQL99. В SQL92 операторы SQL сгруппированы в три
широкие категории: манипуляция данными
Язык (DML), определение данных
Язык (DDL) и Data Control
Язык (DCL). DML предоставляет конкретные
команды обработки данных, такие как SELECT
,
ВСТАВИТЬ
, ОБНОВЛЕНИЕ
и
УДАЛИТЬ
. DDL содержит команды, которые обрабатывают
доступность и манипулирование объектами базы данных, в том числе
CREATE
и DROP
, а
DCL содержит команды, связанные с разрешениями GRANT
и
ОТМЕНА
.
Напротив, SQL99 предоставляет семь основных категорий, которые обеспечивают
общая структура для типов команд, доступных в SQL. Эти
оператор «классы» немного отличается от SQL92
классы операторов, поскольку они пытаются идентифицировать утверждения
внутри каждого класса точнее и логичнее. Кроме того, поскольку
SQL постоянно находится в разработке, появляются новые функции и команды.
стандарт и может потребовать новых классов операторов. Итак, чтобы
чтобы приспособиться к будущему росту, SQL99 разработал новые наборы инструкций
классы, сделав их несколько более понятными и логичными.Кроме того, новые классы операторов теперь позволяют
«Осиротевшие» заявления, которые не вписывались в
любая из старых категорий — для правильной классификации.
В таблице 1.2 указаны классы операторов SQL99.
и перечисляет несколько команд в каждом классе, каждая из которых полностью
обсудим позже. На этом этапе важно запомнить утверждение
название класса.
Таблица 1-2. Классы операторов SQL
Класс | Описание | Примеры команд |
---|---|---|
Операторы подключения SQL | Запуск и завершение клиентского соединения | |
Управляющие операторы SQL | Управлять выполнением набора операторов SQL | |
Операторы данных SQL | Оказывает стойкое и продолжительное влияние на данные | |
Диагностические сообщения SQL | Предоставляет диагностическую информацию и вызывает исключения и ошибки | |
Операторы схемы SQL | Имеет постоянное и продолжительное влияние на схему базы данных и | |
Операторы сеанса SQL | Управление поведением по умолчанию и другими параметрами сеанса | |
Операторы транзакций SQL | Установить начальную и конечную точку транзакции | |
Тем, кто регулярно работает с SQL, следует ознакомиться с обоими
старые (SQL92) и новые (SQL99) классы операторов, поскольку многие
программисты и разработчики до сих пор используют старую номенклатуру для обозначения
текущие возможности SQL.
MySQL :: Справочное руководство по MySQL 8.0 :: Соответствие стандартам MySQL 1.7
1.7 Соответствие стандартам MySQL
В этом разделе описывается, как MySQL соотносится с ANSI / ISO SQL.
стандарты. MySQL Server имеет множество расширений стандарта SQL,
а здесь вы можете узнать, что это такое и как ими пользоваться. Ты
также можно найти информацию о функциях, отсутствующих в MySQL.
Server и способы устранения некоторых различий.
Стандарт SQL развивается с 1986 года и имеет несколько версий.
существовать.В этом руководстве «SQL-92» относится к
стандарт выпущен в 1992 году. «SQL: 1999»,
«SQL: 2003», «SQL: 2008» и
«SQL: 2011» относится к версиям стандарта.
выпущены в соответствующие годы, причем последние
последняя версия. Мы используем фразу «стандарт SQL»
или «стандартный SQL» для обозначения текущей версии
Стандарт SQL в любое время.
Одна из наших основных целей с продуктом — продолжать работать
к соответствию стандарту SQL, но без ущерба для
скорость или надежность.Мы не боимся добавлять расширения в SQL
или поддержка функций, отличных от SQL, если это значительно увеличивает
удобство использования MySQL Server для большого сегмента нашей пользовательской базы.
Интерфейс HANDLER
является примером
этой стратегии. См. Раздел 13.2.4, «Заявление ОБРАБОТЧИКА».
Мы продолжаем поддерживать транзакционные и нетранзакционные
баз данных, чтобы удовлетворить как критически важное использование 24/7, так и тяжелые
Использование Интернета или ведения журнала.
Сервер MySQL изначально был разработан для работы со средними
базы данных (10-100 миллионов строк или около 100 МБ на таблицу) на небольших
Компьютерные системы.Сегодня MySQL Server обрабатывает файлы размером в терабайт.
базы данных.
Мы не нацелены на поддержку в реальном времени, хотя репликация MySQL
возможности предлагают значительную функциональность.
MySQL поддерживает уровни ODBC от 0 до 3.51.
MySQL поддерживает кластеризацию баз данных с высокой доступностью, используя
NDBCLUSTER
накопитель. Видеть
Глава 23, MySQL NDB Cluster 8.0 .
Мы реализуем функциональность XML, которая поддерживает большую часть W3C.
Стандарт XPath.См. Раздел 12.12, «Функции XML».
MySQL поддерживает собственный тип данных JSON, как определено в RFC 7159, и
основан на стандарте ECMAScript (ECMA-262). Видеть
Раздел 11.5, «Тип данных JSON». MySQL также реализует подмножество
Функции SQL / JSON, указанные в предварительном проекте публикации
SQL: стандарт 2016; см. Раздел 12.18, «Функции JSON», чтобы узнать больше.
Информация.
Выбор режимов SQL
Сервер MySQL может работать в разных режимах SQL и может применять
эти режимы по-разному для разных клиентов, в зависимости от
значение системы sql_mode
Переменная.Администраторы баз данных могут установить глобальный режим SQL в соответствии с сервером сайта.
эксплуатационные требования, и каждое приложение может установить свой сеанс
Режим SQL в соответствии с собственными требованиями.
Режимы влияют на синтаксис SQL, который поддерживает MySQL, и на проверку данных.
проверяет, выполняет ли он. Это упрощает использование MySQL в разных
среды и использовать MySQL вместе с другой базой данных
серверы.
Для получения дополнительной информации о настройке режима SQL см.
Раздел 5.1.11, «Режимы SQL сервера».
Запуск MySQL в режиме ANSI
Чтобы запустить MySQL Server в режиме ANSI, запустите mysqld
с опцией --ansi
. Запуск
сервер в режиме ANSI аналогичен запуску со следующей
опции:
--transaction -olated = SERIALIZABLE --sql-mode = ANSI
Чтобы добиться того же эффекта во время выполнения, выполните эти два
заявления:
УСТАНОВИТЬ ГЛОБАЛЬНЫЙ УРОВЕНЬ ИЗОЛЯЦИИ СДЕЛКИ С СЕРИЙНЫМ УРОВНЕМ;
УСТАНОВИТЬ ГЛОБАЛЬНЫЙ sql_mode = 'ANSI';
Вы можете видеть, что установка
sql_mode
системная переменная для
'ANSI'
включает все параметры режима SQL, которые
относится к режиму ANSI следующим образом:
mysql> УСТАНОВИТЬ ГЛОБАЛЬНЫЙ sql_mode = 'ANSI';
mysql> ВЫБРАТЬ @@ ГЛОБАЛЬНЫЙ.sql_mode;
-> 'REAL_AS_FLOAT, PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, ANSI'
Запуск сервера в режиме ANSI с
--ansi
не совсем то же самое, что
установка режима SQL на 'ANSI'
, потому что
-ansi
опция также устанавливает
уровень изоляции транзакции.
См. Раздел 5.1.7, «Параметры серверных команд».
B011 | Встроенная Ада | + | + | + | + | + | |
B012 | Встроенный C | + | + | + | + | + | |
B013 | Встроенный COBOL | + | + | + | + | + | |
B014 | Встроенный Fortran | + | + | + | + | + | |
B015 | Встроенные MUMPS | – | – | – | – | – | |
B016 | Встроенный Паскаль | + | + | + | + | + | |
B017 | Встроенный PL / I | – | – | – | – | – | |
B021 | Прямой SQL | + | + | + | + | + | |
B031 | Базовый динамический SQL | * | * | * | * | * | Поддерживаются не все стандартные функции |
B032 | Расширенный динамический SQL | – | – | – | – | – | |
B032-01 | – | – | |||||
B033 | Нетипизированные аргументы вызываемой SQL функции | – | – | – | – | – | |
B034 | Динамическая спецификация атрибутов курсора | – | – | – | – | – | |
B041 | Расширения для объявлений исключений встроенного SQL | – | – | – | – | – | |
B051 | Расширенные права исполнения | – | – | – | – | – | |
B111 | Модуль языка Ada | – | – | – | – | – | |
B112 | Язык модуля C | – | – | – | – | – | |
B113 | Язык модуля COBOL | – | – | – | – | – | |
B114 | Модуль языка Fortran | – | – | – | – | – | |
B115 | Модуль языка MUMPS | – | – | – | – | – | |
B116 | Модуль языка Паскаль | – | – | – | – | – | |
B117 | Язык модуля PL / I | – | – | – | – | – | |
B121 | Обычный язык Ада | – | – | – | – | + | |
B122 | Стандартный язык C | + | + | + | + | + | |
B123 | Стандартный язык COBOL | – | – | – | – | + | |
B124 | Стандартный язык Fortran | – | – | – | – | + | |
B125 | Стандартный язык MUMPS | – | – | – | – | + | |
B126 | Стандартный язык Pascal | + | + | + | + | + | |
B127 | Стандартный язык PL / I | – | – | – | – | + | |
B128 | Стандартный язык SQL | + | + | + | + | + | |
F032 | Каскадное падение | – | – | – | – | – | |
F033 | Оператор ALTER TABLE: Предложение DROP COLUMN | + | + | + | + | + | |
F034 | Расширенная инструкция REVOKE | * | * | * | * | * | REVOKE CASCADE не поддерживается |
F034-01 | Оператор REVOKE, выполняемый не владельцем объекта схемы | + | + | + | + | + | |
F034-02 | REVOKE: GRANT OPTION FOR пункт | + | + | + | + | + | |
F034-03 | REVOKE заявление для отмены привилегии, которую имеет грантополучатель WITH GRANT OPTION | ? | ? | ? | ? | ? | |
F052 | Интервалы и арифметика даты и времени | * | * | * | * | * | Интервалы не поддерживаются |
F053 | Предикат OVERLAPS | – | – | – | – | – | |
F111 | Уровни изоляции, отличные от SERIALIZABLE | * | * | * | * | * | |
F111-01 | READ UNCOMMITTED уровень изоляции | – | – | – | – | – | |
F111-02 | READ COMMITTED уровень изоляции | + | + | + | + | + | |
F111-03 | REPEATABLE READ уровень изоляции | + | + | + | + | + | Доступен как SNAPSHOT |
F121 | Управление базовой диагностикой | – | – | – | – | – | |
F121-01 | ПОЛУЧИТЬ ДИАГНОСТИКУ | – | – | – | – | – | |
F121-02 | Оператор SET TRANSACTION: Предложение DIAGNOSTICS SIZE | – | – | – | – | – | |
F171 | Несколько схем на пользователя | – | – | – | – | – | |
F191 | Действия по удалению ссылок | + | + | + | + | + | |
F222 | инструкция INSERT: пункт DEFAULT VALUES | – | – | + | + | + | |
F231 | Таблицы привилегий | – | – | – | – | – | |
F231-01 | TABLE_PRIVILEGES просмотр | – | – | – | – | – | |
F231-02 | COLUMN_PRIVILEGES просмотреть | – | – | – | – | – | |
F231-03 | USAGE_PRIVILEGES просмотр | – | – | – | – | – | |
F251 | Поддержка домена | + | + | + | + | + | |
F262 | Расширенное выражение CASE | – | – | – | – | – | |
F263 | Предикаты, разделенные запятыми, в простом выражении CASE | – | – | – | – | – | |
F271 | Составные символьные литералы | – | – | – | – | – | |
F281 | LIKE улучшения | + | + | + | + | + | |
F291 | УНИКАЛЬНЫЙ предикат | – | – | – | – | ||
F301 | CORRESPONDING в выражениях запроса | – | – | – | – | – | |
F302 | Оператор таблицы INTERSECT | – | – | – | – | – | |
F302-01 | Оператор таблицы INTERSECT DISTINCT | – | – | – | – | – | |
F302-02 | Оператор таблицы INTERSECT ALL | – | – | – | – | – | |
F304 | ЗА ИСКЛЮЧЕНИЕМ ВСЕХ табличных операторов | – | – | – | – | – | |
F312 | Заявление MERGE | – | – | + | + | + | |
F321 | Авторизация пользователя | * | * | * | * | * | Поддерживается только CURRENT_USER |
F341 | Таблицы использования | ? | ? | ? | ? | ? | |
F361 | Поддержка подпрограмм | ? | ? | ? | ? | ? | |
F381 | Расширенное манипулирование схемой | + | + | + | + | + | |
F381-01 | Оператор ALTER TABLE: Предложение ALTER COLUMN | + | + | + | + | + | |
F381-02 | Оператор ALTER TABLE: Предложение ADD CONSTRAINT | + | + | + | + | + | |
F381-03 | Оператор ALTER TABLE: Предложение DROP CONSTRAINT | + | + | + | + | + | |
F391 | Длинные идентификаторы | * | * | * | * | * | Максимальная длина идентификатора равна 31 |
F392 | Экранирование Unicode в идентификаторах | – | – | – | – | – | |
F393 | Преобразование Unicode в литералы | – | – | – | – | – | |
F401 | Стол соединительный удлиненный | * | * | + | + | + | |
F401-01 | НАТУРАЛЬНОЕ СОЕДИНЕНИЕ | – | – | + | + | + | |
F401-02 | ПОЛНОЕ НАРУЖНОЕ СОЕДИНЕНИЕ | + | + | + | + | + | |
F401-04 | КРЕСТНОЕ СОЕДИНЕНИЕ | – | + | + | + | + | |
F402 | Объединения именованных столбцов для больших объектов, массивов и мультимножеств | – | – | – | – | – | |
F411 | Спецификация часового пояса | – | – | – | – | – | |
F421 | Национальный персонаж | * | * | * | * | * | Ни национальные строковые литералы, ни тип данных NCHAR VARYING не поддерживаются. |
F431 | Прокручиваемые курсоры только для чтения | – | – | – | – | + | |
F431-01 | FETCH с явным NEXT | – | – | – | – | + | |
F431-02 | ПОЛУЧИТЬ ПЕРВЫЙ | – | – | – | – | + | |
F431-03 | ПОСЛЕДНИЙ ПОИСК | – | – | – | – | + | |
F431-04 | FETCH PRIOR | – | – | – | – | + | |
F431-05 | ПОЛУЧИТЬ АБСОЛЮТ | – | – | – | – | + | |
F431-06 | ВЫБРАТЬ ОТНОСИТЕЛЬНЫЙ | – | – | – | – | + | |
F441 | Поддержка расширенного набора функций | + | + | + | + | + | |
F442 | Ссылки на смешанные столбцы в функциях набора | + | + | + | + | + | |
F451 | Определение набора символов | – | – | – | – | – | |
F461 | Именованные наборы символов | + | + | + | + | + | |
F491 | Управление ограничениями | + | + | + | + | + | |
F502 | Таблицы расширенной документации | – | – | – | – | – | |
F502-01 | Просмотр SQL_SIZING_PROFILES | – | – | – | – | – | |
F502-02 | просмотр SQL_IMPLEMENTATION_INFO | – | – | – | – | – | |
F502-03 | просмотр SQL_PACKAGES | – | – | – | – | – | |
F521 | Утверждения | – | – | – | – | – | |
F531 | Временные столы | – | – | * | * | * | Поддерживаются только глобальные временные таблицы |
F555 | Повышенная секундная точность | * | * | * | * | * | Максимальная поддерживаемая точность равна 3, точность в объявлениях типов данных не поддерживается |
F561 | Полноценные выражения | + | + | + | + | + | |
F571 | Проверка истинности | – | – | – | – | + | |
F591 | Производные таблицы | – | + | + | + | + | |
F611 | Типы данных индикатора | – | – | – | – | – | |
F641 | Конструкторы строк и таблиц | – | – | – | – | – | |
F651 | Квалификаторы имени каталога | – | – | – | – | – | |
F661 | Простые столы | – | – | – | – | – | |
F671 | Подзапросы в CHECK | + | + | + | + | + | |
F672 | Ограничения ретроспективной проверки | + | + | + | + | + | |
F691 | Сопоставление и перевод | * | * | * | + | + | До Firebird 2.5. CREATE / DROP COLLATION не поддерживается |
F692 | Расширенная поддержка сопоставления | + | + | + | + | + | |
F693 | Сопоставление SQL-сеанса и клиентского модуля | – | – | – | – | – | |
F695 | Поддержка переводов | – | – | – | – | – | |
F696 | Дополнительная переводческая документация | – | – | – | – | – | |
F701 | Действия по обновлению ссылок | + | + | + | + | + | |
F711 | ALTER домен | + | + | + | + | + | |
F721 | Отлагаемые ограничения | – | – | – | – | – | |
F731 | Привилегии столбца INSERT | – | – | – | – | – | |
F741 | Референтные типы ПОИСКПОЗ | – | – | – | – | – | |
F751 | Посмотреть улучшения CHECK | – | – | – | – | – | |
F761 | Управление сеансом | – | – | – | – | – | |
F771 | Управление подключением | – | – | – | – | – | |
F781 | Операции со ссылками на себя | + | + | + | + | + | |
F791 | Нечувствительные курсоры | – | – | – | – | – | |
F801 | Функция полного набора | – | – | – | – | – | |
F813 | Расширенная маркировка | – | – | – | – | – | |
F821 | Ссылки на локальные таблицы | – | – | – | – | – | |
F831 | Полное обновление курсора | – | – | – | – | – | |
F831-01 | Обновляемые прокручиваемые курсоры | – | – | – | – | – | |
F831-02 | Обновляемые заказанные курсоры | – | – | – | – | – | |
S023 | Базовые структурированные типы | – | – | – | – | – | |
S024 | Расширенные структурированные типы | – | – | – | – | – | |
S025 | Окончательные структурированные типы | – | – | – | – | – | |
S026 | Саморегулирующиеся структурированные типы | – | – | – | – | – | |
S027 | Создать метод по конкретному имени метода | – | – | – | – | – | |
S028 | Переменный список опций UDT | – | – | – | – | – | |
S041 | Базовые ссылочные типы | – | – | – | – | – | |
S043 | Расширенные ссылочные типы | – | – | – | – | – | |
S051 | Создать таблицу типа | – | – | – | – | – | |
S071 | Пути SQL в разрешении имен функций и типов | – | – | – | – | – | |
S081 | Подтаблицы | – | – | – | – | – | |
S091 | Базовая опора массива | * | * | * | * | * | |
S091-01 | Массивы встроенных типов данных | * | * | * | * | * | Реализация нестандартная и ограничивается только DSQL |
S091-02 | Массивы разных типов | – | – | – | – | – | |
S091-03 | Выражения массива | – | – | – | – | – | |
S092 | Массивы определяемых пользователем типов | – | – | – | – | – | |
S094 | Массивы ссылочных типов | – | – | – | – | – | |
S095 | Конструкторы массивов по запросу | – | – | – | – | – | |
S096 | Необязательные границы массива | – | – | – | – | – | |
S097 | Назначение элемента массива | – | – | – | – | – | |
S111 | ТОЛЬКО в выражениях запроса | – | – | – | – | – | |
S151 | Предикат типа | – | – | – | – | – | |
S161 | Лечение подтипа | – | – | – | – | – | |
S162 | Обработка подтипов для ссылок | – | – | – | – | – | |
S201 | Подпрограммы, вызываемые SQL для массивов | – | – | – | – | – | |
S201-01 | Параметры массива | – | – | – | – | – | |
S201-02 | Массив как результат типа функций | – | – | – | – | – | |
S202 | Подпрограммы, вызываемые SQL в мультимножествах | – | – | – | – | – | |
S211 | Пользовательские функции приведения типов | – | – | – | – | – | |
S231 | Локаторы структурированного типа | – | – | – | – | – | |
S232 | Локаторы массивов | – | – | – | – | – | |
S233 | Локаторы Multiset | – | – | – | – | – | |
S241 | Функции преобразования | – | – | – | – | – | |
S242 | Оператор изменения преобразования | – | – | – | – | – | |
S251 | Пользовательские заказы | – | – | – | – | – | |
S261 | Метод конкретного типа | – | – | – | – | – | |
S271 | Базовая поддержка мультимножества | – | – | – | – | – | |
S272 | Мультимножества пользовательских типов | – | – | – | – | – | |
S274 | Мультимножества справочных типов | – | – | – | – | – | |
S275 | Расширенная поддержка мультимножества | – | – | – | – | – | |
S281 | Вложенные типы коллекций | – | – | – | – | – | |
S291 | Уникальное ограничение для всей строки | – | – | – | – | – | |
T011 | Отметка времени в информационной схеме | – | – | – | – | – | |
T031 | BOOLEAN тип данных | – | – | – | – | + | |
T041 | Поддержка базового типа данных LOB | * | * | * | * | * | |
T041-01 | Тип данных BLOB | + | + | + | + | + | |
T041-02 | Тип данных CLOB | * | * | * | * | * | Доступен как BLOB SUB_TYPE TEXT |
T041-03 | Функции POSITION, LENGTH, LOWER, TRIM, UPPER и SUBSTRING для типов данных LOB | * | * | + | + | + | Частично поддерживается |
T041-04 | Объединение типов данных LOB | – | – | – | – | – | |
T041-05 | Локатор больших объектов: без удержания | – | – | – | – | – | |
T042 | Поддержка расширенного типа данных LOB | – | – | – | – | – | |
T051 | Типы рядов | – | – | – | – | – | |
T052 | MAX и MIN для типов строк | – | – | – | – | – | |
T053 | Явные псевдонимы для ссылки на все поля | – | – | – | – | – | |
T061 | Поддержка UCS | – | – | – | – | – | |
T071 | Тип данных BIGINT | + | + | + | + | + | |
T111 | Обновляемые объединения, объединения и столбцы | – | – | – | – | – | |
T121 | WITH (исключая RECURSIVE) в выражении запроса | – | – | + | + | + | |
T122 | WITH (исключая RECURSIVE) в подзапросе | – | – | – | – | – | |
T131 | Рекурсивный запрос | – | – | + | + | + | |
T132 | Рекурсивный запрос в подзапросе | – | – | – | – | – | |
T141 | ПОДОБНЫЙ предикат | – | – | – | + | + | |
T151 | Предикат DISTINCT | – | + | + | + | + | |
T152 | Предикат DISTINCT с отрицанием | – | + | + | + | + | |
T171 | Предложение LIKE в определении таблицы | – | – | – | – | – | |
T172 | Предложение подзапроса AS в определении таблицы | – | – | – | – | – | |
T173 | Расширенное предложение LIKE в определении таблицы | – | – | – | – | – | |
T174 | Столбцы идентификаторов | – | – | – | – | + | |
T175 | Сгенерированные столбцы | * | * | * | * | + | Поддерживается как вычисляемые столбцы |
T176 | Опора генератора последовательности | + | + | + | + | + | |
T191 | Референтное действие ОГРАНИЧИТЕЛЬ | + | + | + | + | + | |
T201 | Сопоставимые типы данных для реляционных ограничений | * | * | * | * | * | Числовые значения, временные метки и строки не считаются сопоставимыми |
T211 | Базовая возможность запуска | * | * | * | * | * | |
T211-01 | Триггеры, активируемые при UPDATE, INSERT или DELETE одной базовой таблицы | + | + | + | + | + | |
T211-02 | ДО срабатывания | + | + | + | + | + | |
T211-03 | ПОСЛЕ срабатывания | + | + | + | + | + | |
T211-04 | ДЛЯ КАЖДОЙ РЯДЫ триггеров | + | + | + | + | + | |
T211-05 | Возможность указать условие поиска, которое должно быть истинным перед вызовом триггера | – | – | – | – | – | |
T211-06 | Поддержка правил времени выполнения для взаимодействия триггеров и ограничений | ? | ? | ? | ? | ? | |
T211-07 | TRIGGER привилегия | – | – | – | – | – | |
T211-08 | Несколько триггеров для одного и того же события выполняются в том порядке, в котором они были созданы в каталоге | * | * | * | * | * | Порядок выполнения определяется разработчиком |
T212 | Улучшенная возможность запуска | – | – | – | – | – | |
T231 | Чувствительные курсоры | – | – | – | – | – | |
T241 | Заявление НАЧАЛА СДЕЛКИ | + | + | + | + | + | Доступен как SET TRANSACTION |
T251 | Оператор SET TRANSACTION: LOCAL option | – | – | – | – | – | |
T261 | Связанные транзакции | – | – | – | – | – | |
T271 | Точки сохранения | + | + | + | + | + | |
T272 | Расширенное управление точками сохранения | – | – | – | – | – | |
T281 | Привилегия SELECT с гранулярностью столбца | – | – | – | – | – | |
T301 | Функциональные зависимости | + | + | + | + | + | |
T312 | Функция НАЛОЖЕНИЯ | – | – | – | – | – | |
T322 | Перегрузка вызываемых SQL функций и процедур | – | – | – | – | – | |
T323 | Явная защита для внешних подпрограмм | – | – | – | – | – | |
T324 | Явная безопасность для подпрограмм SQL | – | – | – | – | – | |
T325 | Ссылки на квалифицированные параметры SQL | – | – | – | – | – | |
T326 | Табличные функции | – | – | – | – | – | |
T331 | Основные роли | * | * | * | * | + | До Firebird 3.0, SET ROLE не поддерживался |
T332 | Расширенные роли | * | * | * | * | * | GRANTED BY CURRENT_ROLE не поддерживается |
T351 | Комментарии SQL в квадратных скобках (/*…*/ комментарии) | + | + | + | + | + | |
T431 | Расширенные возможности группировки | – | – | – | – | – | |
T432 | Вложенные и сцепленные ГРУППОВЫЕ НАБОРЫ | – | – | – | – | – | |
T433 | Функция группирования с несколькими аргументами | – | – | – | – | – | |
T434 | ГРУППА ПО РАЗЛИЧНЫМ | – | – | – | – | – | |
T441 | Функции ABS и MOD | – | – | + | + | + | |
T461 | Симметричный предикат МЕЖДУ | – | – | – | – | – | |
T471 | Результат устанавливает возвращаемое значение | – | – | – | – | – | |
T491 | Производная таблица LATERAL | – | – | – | – | – | |
T501 | Расширенный предикат EXISTS | + | + | + | + | + | |
T511 | Количество транзакций | – | – | – | – | – | |
T551 | Необязательные ключевые слова для синтаксиса по умолчанию | + | + | + | + | + | |
T561 | Удерживаемые локаторы | – | – | – | – | – | |
T571 | Внешние вызываемые SQL функции, возвращающие массив | – | – | – | – | – | |
T572 | Функции, вызываемые из внешнего набора, возвращающие множество наборов | – | – | – | – | – | |
T581 | Функция подстроки регулярного выражения | – | – | – | – | + | |
T591 | Ограничения UNIQUE для возможных нулевых столбцов | + | + | + | + | + | |
T601 | Ссылки на локальный курсор | – | – | – | – | – | |
T611 | Элементарные операции OLAP | – | – | – | – | – | |
T612 | Расширенные операции OLAP | – | – | – | – | – | |
T613 | Отбор проб | – | – | – | – | – | |
T621 | Расширенные числовые функции | – | – | – | – | – | |
T641 | Назначение нескольких столбцов | – | – | – | – | – | |
T651 | Операторы схемы SQL в подпрограммах SQL | – | – | – | – | – | |
T652 | Динамические операторы SQL в подпрограммах SQL | + | + | + | + | + | |
T653 | Операторы схемы SQL во внешних подпрограммах | – | – | – | – | – | |
T654 | Динамические операторы SQL во внешних подпрограммах | – | – | – | – | + | |
T655 | Циклически зависимые процедуры | + | + | + | + | + |
.