Разное

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».

Существует два варианта каждого документа, но они идентичны:

  1. INCITS / ISO / IEC 9075 — * — 2011

  2. ISO / IEC 9075 — *: 2011

Каждые Создатель базы данных стремится соответствовать этим стандартам, благодаря чему различные реализации SQL становятся похожими; однако каждая реализация по-прежнему имеет уникальный диалект для использования SQL, который включает расширения или дополнения к стандартам.

Тестирование SQL

Основные команды и операторы SQL одинаковы для всех диалектов SQL, поэтому, как только администратор баз данных знает, как использовать один, он может легко изучить другие.

Хотя у большинства программ баз данных SQL есть собственные проприетарные расширения, чтобы соответствовать стандартам ANSI, они должны, по крайней мере, поддерживать эти пять основных команд одинаковым образом:

  1. ОБНОВЛЕНИЕ

  2. УДАЛИТЬ

  3. SELECT

  4. INSERT

  5. WHERE

SQL позволяет администратору баз данных выполнять следующие действия в базе данных:

  • Выполнить запросы

  • Получить обновление данных

  • и удалить записи

  • Создание новых таблиц и представлений

  • Создание новых баз данных

  • Создание хранимых процедур

  • Установка разрешений для представлений, таблиц и процедур.

Для создания веб-сайта, который может получить доступ к данным из базы данных, необходима программа базы данных системы управления реляционными базами данных (RDBMS). Некоторые популярные программы СУБД включают:

  • SQL Server

  • MS Access

  • MySQL

  • Postgre SQL

  • Oracle Database.

Для создания базы данных администратору базы данных также необходимо использовать следующее:

  • Стандартный язык разметки, например CSS / HTML

  • Язык сценариев на стороне сервера, например ASP или PHP.

  • Узнайте, как использовать SQL для получения запрашиваемых данных.

Анатомия базы данных

Система управления реляционными базами данных (СУБД) составляет основу базы данных. Использование СУБД позволяет администраторам баз данных хранить данные в объектах базы данных, называемых таблицами. Таблицы состоят из столбцов и строк связанных данных, организованных в разделы.

Идентификация таблиц базы данных

Большинство баз данных содержат более одной таблицы, поэтому администратор базы данных должен идентифицировать каждую таблицу по имени.Каждая таблица будет содержать ряды записей, содержащих информацию и данные.

Например, бизнес будет использовать базу данных с таблицей клиентов, содержащей следующие данные для каждого клиента:

  1. Имя клиента

  2. Имя контактного лица

  3. Идентификатор клиента

  4. Адрес клиента — улица, город, почтовый индекс и страна

  5. Контактная информация клиента

В этом случае таблица содержит пять записей — по одной для каждого клиента — и восемь столбцов, по одной для каждого блока данных: Имя клиента, Имя контактного лица, Клиент Идентификатор, адрес клиента, включая город, почтовый индекс и страну, а также контактную информацию клиента.

Обмен данными с базой данных 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 были добавлены, обновлены и не обновлены в нескольких выпусках.

Поправка

Версия ISO

Хронология
Часть 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 / Framework
Страницы, посвященные разным разделам
Часть 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

Улучшенное управление целостностью

  • Утверждения

  • Действия по удалению по ссылкам

  • Действия по обновлению по ссылкам

  • Управление ограничениями

  • Подзапросы в ограничении CHECK

  • Триггеры

  • Триггеры

  • ESC

    Триггеры действие ОГРАНИЧЕНИЕ

PKG003

Возможности OLAP

  • CUBE and ROLLUP

  • Оператор INTERSECT

  • Конструкции строк и таблиц

  • FULL OUTER JOIN

  • Скалярные значения подзапроса

PKG004

Модули постоянного хранения SQL (PSM)

  • Программное расширение SQL, которое делает его пригодным для разработки
    более функционально полные приложения

  • Команды CASE, IF, WHILE, REPEAT, LOOP и FOR

  • Сохраненные модули

  • Полнота вычислений

  • INFORMATION_SCHEMA просмотров

PKG005

Интерфейс уровня вызовов SQL (CLI)

PKG006

Базовая опора объекта

  • Перегрузка вызываемых SQL функций и процедур

  • Типы, определяемые пользователем, с единичным наследованием; базовые процедуры SQL на
    определяемые пользователем типы (включая динамическую отправку)

  • Типы ссылок

  • СОЗДАТЬ ТАБЛИЦУ

  • Поддержка массивов: базовая поддержка массивов, выражения массивов, массив
    локаторы, поддержка массива пользовательских данных (UDT), массив ссылочного типа
    поддержка, процедура SQL для массивов

  • Ссылка на атрибут и поле

  • Операции ссылки и разыменования

PKG007

Расширенная поддержка объектов

  • ALTER TABLE, ADD

  • Расширенные определяемые пользователем типы (включая параметры конструктора, атрибут
    значения по умолчанию, множественное наследование и пункт упорядочивания)

  • Функции SQL и разрешение имени типа

  • Подтаблицы

  • ТОЛЬКО в запросах

  • Предикат типа

  • Обработка подтипа

  • Пользователь определенные функции CAST

  • локаторы UDT

  • подпрограммы SQL для определяемых пользователем типов, таких как функции идентификации и
    обобщенные выражения

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

Установить начальную и конечную точку транзакции

COMMIT, ROLLBACK

Тем, кто регулярно работает с 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, «Параметры серверных команд».

Firebird: соответствие SQL

Заявление

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 Циклически зависимые процедуры + + + + +

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

2021 © Все права защищены. Карта сайта