Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

SQL - ( / ˌ ɛ с ˌ к Ju ɛ л / ( слушать ) SQL , [4] / ы я к ш əl / "продолжение"; язык структурированных запросов ) [5] является язык предметно-ориентированный используется в программировании и разработан для управления данными, хранящимися в системе управления реляционными базами данных (RDBMS), или для потоковой обработки в системе управления реляционными потоками данных (RDSMS). Это особенно полезно при обращении сструктурированные данные , то есть данные, включающие отношения между сущностями и переменными.

SQL предлагает два основных преимущества по сравнению со старыми API чтения-записи, такими как ISAM или VSAM . Во-первых, он представил концепцию доступа к множеству записей с помощью одной единственной команды. Во-вторых, это избавляет от необходимости указывать, как достичь записи, например, с индексом или без него .

Первоначально основанный на реляционной алгебре и Исчисление кортежей , SQL состоит из множества типов утверждений, [6] , которые могут быть неофициально классифицированы как подъязыков , обычно: а язык запросов данных (DQL), [а] языка определения данных (DDL), [Ь] язык управления данными (DCL) и язык манипулирования данными (DML). [c] [7] Сфера применения SQL включает запросы данных, манипулирование данными (вставка, обновление и удаление), определение данных ( создание и изменение схемы ) и управление доступом к данным. Хотя SQL по сутидекларативный язык ( 4GL ), он также включает процедурные элементы.

SQL был один из первых коммерческих языков для использования Кодд «s реляционная модели . Эта модель была описана в его влиятельной статье 1970 года «Реляционная модель данных для больших общих банков данных». [8] Несмотря на то, что он не полностью придерживался реляционной модели, описанной Коддом , он стал наиболее широко используемым языком баз данных. [9] [10]

SQL стал стандартом в Американском национальном институте стандартов (ANSI) в 1986 году, и в Международных организациях по стандартизации (ИСО) в 1987 году [11] С тех пор стандарт был пересмотрен с целью включения более широкий набора функций. Несмотря на существование стандартов, большая часть кода SQL требует по крайней мере некоторых изменений перед переносом в другие системы баз данных.

История [ править ]

SQL был первоначально разработан в IBM по Дональд Д. Чемберлин и Рэймонд Бойс , узнав о реляционной модели от Кодд [12] в начале 1970 - х годов. [13] Эта версия, первоначально называвшаяся SEQUEL (Structured English Query Language), была разработана для управления и извлечения данных, хранящихся в исходной квазиреляционной системе управления базами данных IBM, System R , которую группа из исследовательской лаборатории IBM в Сан-Хосе разработала в 1970-х годах. [13]

Первой попыткой Чемберлина и Бойса создать язык реляционных баз данных был Square, но его было трудно использовать из-за записи нижнего индекса. После перехода в исследовательскую лабораторию Сан-Хосе в 1973 году они начали работу над SEQUEL. [12] акроним SEQUEL было изменено на SQL , потому что «ПРОДОЛЖЕНИЕ» был торговой маркой в британской Hawker Siddeley компании Dynamics Engineering Limited. [14]

После тестирования SQL на тестовых сайтах заказчиков для определения полезности и практичности системы IBM приступила к разработке коммерческих продуктов на основе своего прототипа System R, включая System / 38 , SQL / DS и DB2 , которые были коммерчески доступны в 1979, 1981 годах. и 1983, соответственно. [15]

В конце 1970 - х годов, Relational Software, Inc. (теперь Oracle Corporation ) увидел потенциал концепций , описанных Коддом, Чемберлин и Бойс и разработали свои собственные SQL на основе СУБД с устремлениями его продажи в ВМС США , Центрального разведывательного управления Agency и другие правительственные агентства США . В июне 1979 года компания Relational Software представила первую коммерчески доступную реализацию SQL, Oracle V2 (Version2) для компьютеров VAX .

К 1986 году группы стандартов ANSI и ISO официально приняли стандартное определение языка «Database Language SQL». Новые версии стандарта были опубликованы в 1989, 1992, 1996, 1999, 2003, 2006, 2008, 2011, [12] и совсем недавно, в 2016 году. [16]

Синтаксис [ править ]

Диаграмма, показывающая несколько элементов языка SQL, составляющих одну инструкцию.

Язык SQL подразделяется на несколько языковых элементов, в том числе:

  • Предложения , которые являются составными компонентами утверждений и запросов. (В некоторых случаях это необязательно.) [17]
  • Выражения , которые могут создавать либо скалярные значения, либо таблицы, состоящие из столбцов и строк данных.
  • Предикаты , которые определяют условия, которые могут быть оценены с помощью трехзначной логики SQL (3VL) (истина / ложь / неизвестно) или логических значений истинности и используются для ограничения эффектов операторов и запросов или для изменения потока программы.
  • Запросы , которые извлекают данные на основе определенных критериев. Это важный элемент SQL .
  • Операторы , которые могут иметь постоянное влияние на схемы и данные или могут управлять транзакциями , потоком программы, соединениями, сеансами или диагностикой.
    • Операторы SQL также включают терминатор оператора точка с запятой (";"). Хотя он не требуется на каждой платформе, он определен как стандартная часть грамматики SQL.
  • Незначительные пробелы обычно игнорируются в операторах и запросах SQL, что упрощает форматирование кода SQL для удобства чтения.

Процедурные расширения [ править ]

SQL разработан для конкретной цели: запрашивать данные, содержащиеся в реляционной базе данных . SQL - это декларативный язык программирования , основанный на наборах , а не императивный язык программирования, такой как C или BASIC . Однако расширения Standard SQL добавляют функциональные возможности процедурного языка программирования , такие как конструкции управления потоком. К ним относятся:

Помимо стандартных расширений SQL / PSM и проприетарных расширений SQL, на многих платформах SQL доступно процедурное и объектно-ориентированное программирование через интеграцию СУБД с другими языками. Стандарт SQL определяет расширения SQL / JRT (процедуры и типы SQL для языка программирования Java) для поддержки кода Java в базах данных SQL. Microsoft SQL Server 2005 использует SQLCLR (общеязыковая среда выполнения SQL Server) для размещения управляемых сборок .NET в базе данных , в то время как предыдущие версии SQL Server были ограничены неуправляемыми расширенными хранимыми процедурами, в основном написанными на C. PostgreSQLпозволяет пользователям писать функции на самых разных языках, включая Perl , Python , Tcl , JavaScript (PL / V8) и C. [21]

Функциональная совместимость и стандартизация [ править ]

Обзор [ править ]

Реализации SQL несовместимы между поставщиками и не обязательно полностью соответствуют стандартам. В частности, синтаксис даты и времени, конкатенация строк, NULLs и чувствительность к регистру при сравнении варьируются от поставщика к поставщику. Конкретными исключениями являются PostgreSQL [22] и Mimer SQL [23], которые стремятся к соответствию стандартам, хотя PostgreSQL не придерживается стандарта в том, как выполняется сворачивание имен без кавычек. Сворачивание имен без кавычек в нижний регистр в PostgreSQL несовместимо со стандартом SQL [24], который гласит, что имена без кавычек следует переводить в верхний регистр. [25] Таким образом, Fooдолжно быть эквивалентно FOOнеfoo по стандарту.

Популярные реализации SQL обычно не поддерживают базовые функции стандартного SQL, такие как типы данных DATEили TIME. Наиболее очевидными из таких примеров и, кстати, наиболее популярными коммерческими и проприетарными СУБД SQL являются Oracle (которая DATEведет себя как DATETIME, [26] [27] и не имеет TIMEтипа) [28] и MS SQL Server (до версии 2008 года). В результате код SQL редко может быть перенесен между системами баз данных без изменений.

Причины несовместимости [ править ]

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

  • Сложность и размер стандарта SQL означает, что большинство разработчиков не поддерживают весь стандарт.
  • Стандарт не определяет поведение базы данных в нескольких важных областях (например, индексы , файловое хранилище ...), оставляя реализациям решать, как себя вести.
  • Стандарт SQL точно определяет синтаксис, который должна реализовать соответствующая система баз данных. Однако стандартная спецификация семантики языковых конструкций менее четко определена, что приводит к двусмысленности.
  • Многие поставщики баз данных имеют большие существующие клиентские базы; там, где более новая версия стандарта SQL конфликтует с предыдущим поведением базы данных поставщика, поставщик может не желать нарушать обратную совместимость .
  • У поставщиков мало коммерческих стимулов, чтобы упростить смену поставщиков баз данных (см. Привязку к поставщику ).
  • Пользователи, оценивающие программное обеспечение баз данных, обычно ставят другие факторы, такие как производительность, выше в свои приоритеты, чем соответствие стандартам.

История стандартизации [ править ]

SQL был принят в качестве стандарта ANSI в 1986 году как SQL-86 [29] и ISO в 1987 году. [11] Он поддерживается ISO / IEC JTC 1, Информационные технологии, Подкомитетом SC 32, Управление данными и обмен .

До 1996 года программа стандартов управления данными Национального института стандартов и технологий (NIST) сертифицировала соответствие СУБД SQL стандарту SQL. Продавцы теперь самостоятельно подтверждают соответствие своей продукции. [30]

Оригинальный стандарт объявил , что официальное произношение «SQL» была аббревиатура : / ˌ ɛ с ˌ к Ju ɛ л / ( «ESS кий эль»). [9] Несмотря на это , многие говорящие на английском языке профессионалы базы данных ( в том числе и сам Дональд Чемберлина [31] ) использует аббревиатуру -like произношения / сек ˙I K ш əl / ( «продолжение»), [32] зеркального имени развития пререлиза на языке , «ПРОДОЛЖЕНИЕ». [13] [14] [31]
Стандарт SQL претерпел ряд изменений:

Текущий стандарт [ править ]

Стандарт обычно обозначается шаблоном: ISO / IEC 9075-n: yyyy Part n: title , или, как сокращение, ISO / IEC 9075 .

ISO / IEC 9075 дополняется ISO / IEC 13249: SQL Multimedia and Application Packages (SQL / MM), который определяет интерфейсы и пакеты на основе SQL для широко распространенных приложений, таких как видео, аудио и пространственные данные . Заинтересованные стороны могут приобрести документы стандартов SQL в ISO, [37] IEC или ANSI. Черновик SQL: 2008 находится в свободном доступе в виде zip- архива. [38]

Анатомия стандарта SQL [ править ]

Стандарт SQL разделен на 10 частей, но с пробелами в нумерации из-за изъятия устаревших частей.

  • ISO / IEC 9075-1: 2016, часть 1: Framework (SQL / Framework). Он предоставляет логические концепции. [39]
  • ISO / IEC 9075-2: 2016 Часть 2: Foundation (SQL / Foundation). Он содержит наиболее важные элементы языка и состоит как из обязательных, так и из дополнительных функций.
  • ISO / IEC 9075-3: 2016 Часть 3: Интерфейс уровня вызовов ( SQL / CLI ). Он определяет компоненты интерфейса (структуры, процедуры, привязки переменных), которые могут использоваться для выполнения операторов SQL из приложений, написанных на Ada, C соответственно C ++, COBOL, Fortran, MUMPS, Pascal или PL / I. (Для Java см. Часть 10.) SQL / CLI определяется таким образом, что операторы SQL и вызовы процедур SQL / CLI обрабатываются отдельно от исходного кода вызывающего приложения. Open Database Connectivity - это хорошо известная надмножество SQL / CLI. Эта часть стандарта состоит исключительно из обязательных функций.
  • ISO / IEC 9075-4: 2016 Часть 4: Постоянные хранимые модули ( SQL / PSM ). Он стандартизирует процедурные расширения для SQL, включая поток управления, обработку условий, сигналы условий оператора и отмены, курсоры и локальные переменные, а также присвоение выражений переменным и параметрам. Кроме того, SQL / PSM формализует объявление и обслуживание постоянных языковых подпрограмм (например, «хранимых процедур»). Эта часть стандарта состоит исключительно из дополнительных функций.
  • ISO / IEC 9075-9: 2016 Часть 9: Управление внешними данными ( SQL / MED ). Он предоставляет расширения для SQL, которые определяют оболочки сторонних данных и типы каналов данных, позволяющие SQL управлять внешними данными. Внешние данные - это данные, которые доступны, но не управляются СУБД на основе SQL. Эта часть стандарта состоит исключительно из дополнительных функций.
  • ISO / IEC 9075-10: 2016 Часть 10: Привязки объектного языка ( SQL / OLB ). Он определяет синтаксис и семантику SQLJ , который является SQL, встроенным в Java (см. Также часть 3). Стандарт также описывает механизмы, обеспечивающие двоичную переносимость приложений SQLJ, и определяет различные пакеты Java и содержащиеся в них классы. Эта часть стандарта состоит исключительно из дополнительных функций. В отличие от SQL / OLB JDBC определяет API и не является частью стандарта SQL. [ необходима цитата ]
  • ISO / IEC 9075-11: 2016 Часть 11: Схемы информации и определений ( SQL / Schemata ). Он определяет информационную схему и схему определения, предоставляя общий набор инструментов для самоописания баз данных и объектов SQL. Эти инструменты включают идентификатор объекта SQL, ограничения структуры и целостности, спецификации безопасности и авторизации, функции и пакеты ISO / IEC 9075, поддержку функций, предоставляемых реализациями СУБД на основе SQL, информацию о реализации СУБД на основе SQL и элементы определения размеров, а также значения, поддерживаемые реализациями СУБД. [40] Эта часть стандарта содержит как обязательные, так и дополнительные функции.
  • ISO / IEC 9075-13: 2016 Часть 13: Подпрограммы и типы SQL с использованием языка программирования Java TM ( SQL / JRT ). Он определяет возможность вызова статических методов Java как подпрограмм из приложений SQL («Java-in-the-database»). Это также требует возможности использовать классы Java в качестве структурированных пользовательских типов SQL. Эта часть стандарта состоит исключительно из дополнительных функций.
  • ISO / IEC 9075-14: 2016, часть 14: Спецификации, связанные с XML ( SQL / XML ). Он определяет расширения на основе SQL для использования XML в сочетании с SQL. Представлен тип данных XML , а также несколько процедур, функций и сопоставлений типов данных XML-SQL для поддержки обработки и хранения XML в базе данных SQL. [33] Эта часть стандарта состоит исключительно из дополнительных функций. [ необходима цитата ]
  • ISO / IEC 9075-15: 2019 Часть 15: Многомерные массивы (SQL / MDA). Он определяет тип многомерного массива (MDarray) для SQL, а также операции с MDarrays, срезами MDarray, ячейками MDarray и связанными функциями. Эта часть стандарта состоит исключительно из дополнительных функций.

Расширения стандарта ISO / IEC [ править ]

ISO / IEC 9075 дополняется мультимедийными и прикладными пакетами ISO / IEC 13249 SQL . Этот тесно связанный, но отдельный стандарт разработан одним и тем же комитетом. Он определяет интерфейсы и пакеты на основе SQL. Целью является унифицированный доступ к типичным приложениям баз данных, таким как текст, изображения, интеллектуальный анализ данных или пространственные данные .

  • ISO / IEC 13249-1: 2016 Часть 1: Структура
  • ISO / IEC 13249-2: 2003 Часть 2: Полнотекстовый
  • ISO / IEC 13249-3: 2016 Часть 3: Пространственные
  • ISO / IEC 13249-5: 2003 Часть 5: Неподвижное изображение
  • ISO / IEC 13249-6: 2006 Часть 6: Интеллектуальный анализ данных
  • ISO / IEC 13249-7: 2013 Часть 7: История
  • ISO / IEC 13249-8: xxxx Часть 8: MRA доступа к реестру метаданных (в процессе)

Технические отчеты [ править ]

ISO / IEC 9075 также сопровождается серией технических отчетов, опубликованных как ISO / IEC TR 19075. Эти технические отчеты объясняют обоснование и использование некоторых функций SQL, приводя примеры, где это уместно. Технические отчеты не являются нормативными; если есть какие-либо расхождения с 9075, текст в 9075 остается в силе. В настоящее время доступны 19075 технических отчетов:

  • ISO / IEC TR 19075-1: 2011 Часть 1: Поддержка регулярных выражений XQuery в SQL
  • ISO / IEC TR 19075-2: 2015 Часть 2: Поддержка SQL для информации, связанной со временем
  • ISO / IEC TR 19075-3: 2015 Часть 3: SQL, встроенный в программы с использованием языка программирования Java
  • ISO / IEC TR 19075-4: 2015 Часть 4: SQL с подпрограммами и типами с использованием языка программирования Java
  • ISO / IEC TR 19075-5: 2016 Часть 5: Распознавание образов строк в SQL
  • ISO / IEC TR 19075-6: 2017 Часть 6: Поддержка SQL для нотации объектов JavaScript (JSON)
  • ISO / IEC TR 19075-7: 2017 Часть 7: Полиморфные табличные функции в SQL
  • ISO / IEC TR 19075-8: 2019 Часть 8: Многомерные массивы (SQL / MDA)
  • ISO / IEC TR 19075-9: 2020 Часть 9: Возможности онлайн-аналитической обработки (OLAP)

Альтернативы [ править ]

Следует проводить различие между альтернативами SQL как языку и альтернативами самой реляционной модели. Ниже предлагаются реляционные альтернативы языку SQL. См. Информацию об альтернативах реляционной модели в навигационной базе данных и NoSQL .

  • .QL : объектно-ориентированный журнал данных
  • Язык 4D запросов (4D QL)
  • Datalog : критики предполагают, что Datalog имеет два преимущества перед SQL: он имеет более чистую семантику, которая облегчает понимание и обслуживание программ, и более выразительно, особенно для рекурсивных запросов. [41]
  • HTSQL : метод запроса на основе URL
  • IBM Business System 12 (IBM BS12): одна из первых полностью реляционных систем управления базами данных, представленная в 1982 году.
  • ISBL
  • jOOQ : SQL, реализованный на Java как внутренний предметно-ориентированный язык
  • Java Persistence Query Language (JPQL): язык запросов, используемый Java Persistence API и библиотекой сохраняемости Hibernate.
  • JavaScript : MongoDB реализует свой язык запросов в API JavaScript.
  • LINQ : запускает операторы SQL, написанные как языковые конструкции, для запроса коллекций непосредственно из кода .Net.
  • Язык объектных запросов
  • QBE ( Query By Example ), созданный Moshè Zloof, IBM 1977
  • Quel представлен в 1974 году в рамках проекта UC Berkeley Ingres.
  • Учебник D
  • XQuery

Распределенная обработка SQL [ править ]

Архитектура распределенной реляционной базы данных (DRDA) была разработана рабочей группой IBM с 1988 по 1994 год. DRDA позволяет реляционным базам данных, подключенным к сети, взаимодействовать друг с другом для выполнения запросов SQL. [42] [43]

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

Сообщения, протоколы и структурные компоненты DRDA определяются архитектурой управления распределенными данными .

Критика [ править ]

Дизайн [ править ]

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

Критики утверждают, что SQL следует заменить языком, который строго возвращается к исходной основе: например, см . Третий манифест . Однако не существует известных доказательств того, что такая уникальность не может быть добавлена ​​к самому SQL [44] или, по крайней мере, к разновидности SQL. Другими словами, вполне возможно, что SQL можно «исправить» или, по крайней мере, улучшить в этом отношении, так что отрасли, возможно, не придется переключаться на совершенно другой язык запросов для получения уникальности. Дебаты по этому поводу остаются открытыми.

Другая критика [ править ]

Чемберлин обсуждает четыре исторических критических замечания SQL в статье 2012 года: [12]

Ортогональность и полнота [ править ]

Ранние спецификации не поддерживали основные функции, такие как первичные ключи. Наборы результатов не могут быть названы, а подзапросы не определены. Они были добавлены в 1992 году. [12]

Null [ править ]

Концепция Null является предметом некоторых дискуссий . Маркер Null указывает, что нет значения, даже 0, для целочисленного столбца или строки длины 0 для текстового столбца. Концепция Nulls обеспечивает 3- значную логику в SQL , которая является конкретной реализацией общей 3-значной логики .

Дубликаты [ править ]

Еще одна популярная критика заключается в том, что он позволяет дублировать строки, что затрудняет интеграцию с такими языками, как Python , типы данных которого могут затруднять точное представление данных [12] с точки зрения синтаксического анализа и отсутствия модульности. [45]

Этого можно избежать, объявляя уникальное ограничение с одним или несколькими полями, которые однозначно идентифицируют строку в таблице. Это ограничение также может стать первичным ключом таблицы.

Несоответствие импеданса [ править ]

Подобно несоответствию объектно-реляционного импеданса , существует несоответствие между декларативным языком SQL и процедурными языками, в которые обычно встраивается SQL.

Типы данных SQL [ править ]

Стандарт SQL определяет три типа типов данных:

  • предопределенные типы данных
  • построенные типы
  • определяемые пользователем типы.

Предопределенные типы данных [ править ]

  • Типы персонажей
  • Персонаж (СИМВОЛ)
  • Изменение характера (VARCHAR)
  • Большой объект символа (CLOB)
  • Типы национальных характеров
  • Национальный характер (NCHAR)
  • Изменяющийся национальный характер (NCHAR VARYING)
  • Большой объект национального характера (NCLOB)
  • Бинарные типы
  • Двоичный (BINARY)
  • Двоичное варьирование (VARBINARY)
  • Большой двоичный объект (BLOB)
  • Числовые типы
  • Точные числовые типы (NUMERIC, DECIMAL, SMALLINT, INTEGER, BIGINT)
  • Приблизительные числовые типы (FLOAT, REAL, DOUBLE PRECISION)
  • Десятичный тип с плавающей запятой (DECFLOAT)
  • Типы даты и времени (DATE, TIME, TIMESTAMP)
  • Тип интервала (ИНТЕРВАЛ)
  • Логический
  • XML
  • JSON

Сконструированные типы [ править ]

Сконструированные типы - это ARRAY, MULTISET, REF (erence) или ROW.
Определяемые пользователем типы сопоставимы с классами объектно-ориентированного языка со своими собственными конструкторами, наблюдателями, мутаторами, методами, наследованием, перегрузкой, перезаписью, интерфейсами и т. Д.

См. Также [ править ]

  • База данных объектов
  • Список систем управления реляционными базами данных
  • Сравнение систем управления реляционными базами данных
  • Сравнение систем управления объектно-реляционными базами данных
  • D (спецификация языка данных)
  • D4 (язык программирования)
  • Запрос по примеру
  • Синтаксис SQL
  • Oracle PL / SQL
  • Microsoft Transact-SQL (T-SQL)
  • Обработка онлайн-транзакций (OLTP)
  • Онлайн-аналитическая обработка (OLAP)
  • Хранилище данных
  • Система управления реляционными потоками данных
  • NoSQL
  • Швабры
  • Иерархическая модель
  • Схема звездочки
  • Схема снежинки

Заметки [ править ]

  1. ^ Формально, операторы "SQL-данные" за исключением операторов "изменения SQL-данных"; это в первую очередьоператор Select .
  2. ^ Формально, операторы «SQL-схемы».
  3. ^ Формально, операторы "изменения данных SQL"

Ссылки [ править ]

  1. ^ Пол, Райан. «Экскурсия по командной оболочке Microsoft» . Ars Technica . Проверено 10 апреля 2011 года .
  2. ^ "Регистрация типа носителя для приложения / sql" . Управление по присвоению номеров в Интернете . 10 апреля 2013 . Проверено 10 апреля 2013 года .
  3. ^ "Тип носителя application / sql, RFC 6922" . Инженерная группа Интернета . Апрель 2013. с. 3 . Проверено 10 апреля 2013 года .
  4. Болье, Алан (апрель 2009 г.). Мэри Е. Треселер (ред.). Изучение SQL (2-е изд.). Севастополь, Калифорния, США: О'Рейли. ISBN 978-0-596-52083-0.
  5. ^ Чемберлин, Дональд Д. (2001-10-03). «Устное интервью истории с Дональдом Д. Чемберлином» . Проверено 14 января 2020 . Мы изменили первоначальное имя «SEQUEL» на SQL, потому что получили письмо от чьего-то юриста, в котором говорилось, что имя «SEQUEL» принадлежит им. Мы сократили его до SQL (язык структурированных запросов), а продукт был известен как SQL / DS.
  6. ^ SQL-92 , 4.22 SQL-операторы, 4.22.1 Классы SQL-операторов "Существует не менее пяти способов классификации SQL-операторов:", 4.22.2, SQL-операторы, классифицируемые по функциям "Ниже приведены основные классы SQL-операторы: "; SQL: 2003 4.11 SQL-операторы и более поздние версии.
  7. Перейти ↑ Chatham, Mark (2012). Структурированный язык запросов на примере - Том I: Язык запросов данных . п. 8 . ISBN 978-1-29119951-2.
  8. Кодд, Эдгар Ф. (июнь 1970 г.). «Реляционная модель данных для больших общих банков данных». Коммуникации ACM . 13 (6): 377–87. CiteSeerX 10.1.1.88.646 . DOI : 10.1145 / 362384.362685 . S2CID 207549016 .  
  9. ^ а б Чаппл, Майк. «Основы SQL» . Базы данных . About.com . Проверено 28 января 2009 .
  10. ^ «Язык структурированных запросов (SQL)» . Международные Бизнес Машины. 27 октября 2006 . Проверено 10 июня 2007 .
  11. ^ a b «ISO 9075: 1987: Информационные технологии - Языки баз данных - SQL - Часть 1: Framework (SQL / Framework)» . 1987-06-01.
  12. ^ Б с д е е Чемберлин, Donald (2012). «Ранняя история SQL». IEEE Annals of the History of Computing . 34 (4): 78–82. DOI : 10.1109 / MAHC.2012.61 . S2CID 1322572 . 
  13. ^ a b c Чемберлин, Дональд Д.; Бойс, Раймонд Ф (1974). «ПОСЛЕДОВАТЕЛЬНОСТЬ: структурированный английский язык запросов» (PDF) . Материалы семинара ACM SIGFIDET 1974 г. по описанию, доступу и контролю данных . Ассоциация вычислительной техники: 249–64. Архивировано из оригинального (PDF) 26 сентября 2007 года . Проверено 9 июня 2007 .
  14. ^ a b Оппель, Энди (27 февраля 2004 г.). Демистификация баз данных . Сан-Франциско, Калифорния : McGraw-Hill Osborne Media. С. 90–1. ISBN 978-0-07-146960-9.
  15. ^ «История IBM, 1978» . Архивы IBM . IBM . Проверено 9 июня 2007 .
  16. ^ «ISO - ISO / IEC JTC 1 / SC 32 - Управление данными и обмен» . www.iso.org . Проверено 2 января 2021 года .
  17. ^ Международный стандарт ANSI / ISO / IEC (IS). Язык баз данных SQL - Часть 2: Основа (SQL / Foundation). 1999 г.
  18. ^ «IBM PureData System for Analytics, версия 7.0.3» .
  19. ^ "Invantive процедурный SQL" .
  20. ^ «СОЗДАТЬ ПРОЦЕДУРУ» . База знаний MariaDB . Проверено 23 апреля 2019 .
  21. ^ Авторы PostgreSQL (2011). «Серверное программирование PostgreSQL» . Официальная документация PostgreSQL 9.1 . postgresql.org . Проверено 9 марта 2012 .
  22. ^ Авторы PostgreSQL (2012). «О PostgreSQL» . Официальный сайт PostgreSQL 9.1 . Группа глобального развития PostgreSQL . Проверено 9 марта 2012 года . PostgreSQL гордится соблюдением стандартов. Его реализация SQL полностью соответствует стандарту ANSI-SQL: 2008.
  23. ^ «Mimer SQL, построенный на стандартах» . Официальный сайт Mimer SQL . Информационные технологии Mimer. 2009 г.
  24. ^ «4.1. Лексическая структура» . Документация PostgreSQL . 2018.
  25. ^ "(Второй проект неофициального обзора) ISO / IEC 9075: 1992, Язык баз данных SQL, раздел 5.2, правило синтаксиса 11" . 30 июля 1992 г.
  26. ^ Лоренц, Диана; Розер, Мэри Бет; Авраам, Сандип; Амор, Анджела; Арора, Гита; Арора, Викас; Эшдаун, Лэнс; Баер, Германн; Белламконда, Шрикантх (октябрь 2010 г.) [1996]. «Основные элементы Oracle SQL: типы данных» . Справочник по языку SQL Oracle Database 11g, выпуск 2 (11.2) . Библиотека документации Oracle Database. Redwood City, CA: Oracle USA, Inc . Проверено 29 декабря 2010 года . Для каждого значения Oracle хранит следующую информацию: век, год, месяц, число, час, минута и секунда.DATE
  27. ^ Лоренц, Диана; Розер, Мэри Бет; Авраам, Сандип; Амор, Анджела; Арора, Гита; Арора, Викас; Эшдаун, Лэнс; Баер, Германн; Белламконда, Шрикантх (октябрь 2010 г.) [1996]. «Основные элементы Oracle SQL: типы данных» . Справочник по языку SQL Oracle Database 11g, выпуск 2 (11.2) . Библиотека документации Oracle Database. Redwood City, CA: Oracle USA, Inc . Проверено 29 декабря 2010 года . Типы данных datetime ...DATE
  28. ^ Лоренц, Диана; Розер, Мэри Бет; Авраам, Сандип; Амор, Анджела; Арора, Гита; Арора, Викас; Эшдаун, Лэнс; Баер, Германн; Белламконда, Шрикантх (октябрь 2010 г.) [1996]. «Основные элементы Oracle SQL: типы данных» . Справочник по языку SQL Oracle Database 11g, выпуск 2 (11.2) . Библиотека документации Oracle Database. Redwood City, CA: Oracle USA, Inc . Проверено 29 декабря 2010 года . Не определяйте столбцы со следующими типами данных SQL / DS и DB2, поскольку они не имеют соответствующего типа данных Oracle: ...TIME
  29. ^ "Помощь" . X3H2 Records, 1978–95 . Американский национальный институт стандартов.
  30. Doll, Shelley (19 июня 2002 г.). "Является ли SQL более стандартным?" . Builder.com от TechRepublic . TechRepublic. Архивировано из оригинала на 2012-07-05 . Проверено 12 апреля 2016 .
  31. ^ a b Гиллеспи, Патрик. «Произношение SQL: SQL или продолжение?» . Проверено 12 февраля 2012 года .
  32. ^ Мелтон, Джим; Алан Р. Саймон (1993). «1.2. Что такое SQL?» . Понимание нового SQL: полное руководство . Морган Кауфманн. п. 536 . ISBN 978-1-55860-245-8. SQL (правильно произносится «ess cue ell» вместо довольно распространенного «сиквела») ...
  33. ^ a b Вагнер, Майкл (2010). SQL / XML: 2006 - Оценка стандартной конфигурации с использованием Datenbanksysteme . Diplomica Verlag. п. 100. ISBN 978-3-8366-9609-8.
  34. ^ «SQL: 2008 теперь утвержденный международный стандарт ISO» . Sybase. Июль 2008. Архивировано из оригинала на 2011-06-28.
  35. Кришна Кулкарни, Ян-Эйке Михельс (сентябрь 2012 г.). «Временные особенности в SQL: 2011» (PDF) . Запись SIGMOD . 41 (3).
  36. ^ Фред Земке (2012). «Что нового в SQL: 2011» (PDF) . Корпорация Oracle.
  37. ^ «ISO / IEC 9075-2: 2016: Информационные технологии - Языки баз данных - SQL - Часть 2: Foundation (SQL / Foundation)» . Декабрь 2016 г.
  38. ^ SQL: 2008 черновик (Zip) , Whitemarsh Information Systems Corporation
  39. ^ «ISO / IEC 9075-1: 2016: Информационные технологии - Языки баз данных - SQL - Часть 1: Framework (SQL / Framework)» .
  40. ^ ISO / IEC 9075-11: 2008: Схемы информации и определений (SQL / Schemata)
  41. ^ Фернандо Саенс-Перес. «Внешние соединения в дедуктивной системе баз данных» (PDF) . Lbd.udc.es . Проверено 16 января 2017 .
  42. ^ Reinsch, R. (1988). «Распределенная база данных для SAA». IBM Systems Journal . 27 (3): 362–389. DOI : 10.1147 / sj.273.0362 .
  43. ^ Справочник по архитектуре распределенной реляционной базы данных . IBM Corp. SC26-4651-0. 1990 г.
  44. ^ "Khan Academy | Бесплатные онлайн-курсы, уроки и практика" . Ханская академия . Проверено 29 мая 2020 .
  45. ^ Шаудер, Джен. «Почему SQL - отстой» . Schauderhaft . Проверено 3 февраля 2018 .

Источники [ править ]

  • Кодд, Эдгар Ф (июнь 1970 г.). «Реляционная модель данных для больших общих банков данных» . Коммуникации ACM . 13 (6): 377–87. DOI : 10.1145 / 362384.362685 . S2CID  207549016 . Архивировано из оригинала на 2007-06-12.
  • Обсуждение предполагаемых недостатков SQL (C2 wiki)
  • CJ Date с Хью Дарвеном : Руководство по стандарту SQL: руководство пользователя по стандартному языку баз данных SQL, 4-е изд. , Аддисон Уэсли, США 1997, ISBN 978-0-201-96426-4 

Документы стандартов SQL [ править ]

Общедоступные стандарты и технические отчеты ITTF [ править ]

ISO / IEC Информационные технологии Целевая группа публикует общедоступные стандарты , включая SQL. Здесь публикуются Технические исправления (исправления) и Технические отчеты (документы для обсуждения).

SQL - Часть 1: Фреймворк (SQL / Framework)

Черновики документов [ править ]

Официальные стандарты SQL доступны в ISO и ANSI за дополнительную плату. Для информативного использования, в отличие от строгого соблюдения стандартов, часто бывает достаточно поздних черновиков.

  • SQL: проект 2011 г.
  • Проект SQL-92

Внешние ссылки [ править ]

  • 1995 Воссоединение SQL: люди, проекты и политика , Пол МакДжонс (ред.) : Стенограмма встречи, посвященной личной истории реляционных баз данных и SQL.
  • Американский национальный институт стандартов. X3H2 Records, 1978–1995 Коллекция Института Чарльза Бэббиджа документирует разработку комитетом H2 стандартов NDL и SQL.
  • Устное историческое интервью с Дональдом Д. Чемберлином Институт Чарльза Бэббиджа В этой устной истории Чемберлин рассказывает о своей ранней жизни, своем образовании в колледже Харви Мадда и Стэнфордском университете , а также о своей работе над технологией реляционных баз данных. Чемберлин был членом исследовательской группы System R и вместе с Раймондом Ф. Бойсом разработал язык баз данных SQL. Чемберлин также кратко обсуждает свои недавние исследования языков запросов XML.
  • Сравнение различных реализаций SQL Это сравнение различных реализаций SQL призвано служить руководством для тех, кто заинтересован в переносе кода SQL между различными продуктами СУБД, и включает сравнения между SQL: 2008, PostgreSQL, DB2, MS SQL Server, MySQL, Oracle, и Informix.
  • Обработка потока событий с помощью SQL - Введение в обработку потоковых данных в реальном времени с помощью непрерывных SQL-запросов.
  • Грамматика BNF для ISO / IEC 9075: 2003, часть 2 SQL / Framework