Язык программирования для управления и использования реляционных баз данных
Язык структурированных запросов ( SQL ) ( произносится как S-QL ; или альтернативно как "sequel") [4] [5] — это доменно-ориентированный язык , используемый для управления данными, особенно в реляционных системах управления базами данных (СУБД). Он особенно полезен при обработке структурированных данных , т. е. данных, включающих отношения между сущностями и переменными.
Представленный в 1970-х годах, SQL предлагал два основных преимущества по сравнению со старыми API чтения-записи , такими как ISAM или VSAM . Во-первых, он ввел концепцию доступа ко многим записям с помощью одной единственной команды . Во-вторых, он устраняет необходимость указывать, как получить доступ к записи, т. е. с индексом или без него .
Первоначально основанный на реляционной алгебре и реляционном исчислении кортежей , SQL состоит из многих типов операторов, [6] которые можно неформально классифицировать как подъязыки , обычно: язык запросов данных (DQL), язык определения данных (DDL), язык управления данными (DCL) и язык манипулирования данными (DML). [7]
Область применения SQL включает запрос данных, манипуляцию данными (вставку, обновление и удаление), определение данных ( создание и изменение схемы ) и контроль доступа к данным. Хотя SQL по сути является декларативным языком ( 4GL ), он также включает процедурные элементы.
SQL был одним из первых коммерческих языков, использовавших реляционную модель Эдгара Ф. Кодда . Модель была описана в его влиятельной статье 1970 года «Реляционная модель данных для больших общих банков данных». [8] Несмотря на то, что SQL не полностью соответствовал реляционной модели, описанной Коддом , он стал наиболее широко используемым языком баз данных. [9] [10]
SQL стал стандартом Американского национального института стандартов (ANSI) в 1986 году и Международной организации по стандартизации (ISO) в 1987 году. [11] С тех пор стандарт был пересмотрен несколько раз, чтобы включить в себя более широкий набор функций и включить общие расширения. Несмотря на существование стандартов, практически ни одна из существующих реализаций не придерживается его полностью, и большая часть кода SQL требует по крайней мере некоторых изменений перед переносом в различные системы баз данных .
История
SQL был первоначально разработан в IBM Дональдом Д. Чемберлином и Рэймондом Ф. Бойсом после того, как они узнали о реляционной модели от Эдгара Ф. Кодда [12] в начале 1970-х годов. [13] Эта версия, изначально называвшаяся SEQUEL (Structured English Query Language), была разработана для манипулирования и извлечения данных, хранящихся в оригинальной квазиреляционной системе управления базами данных IBM, System R , которую группа в исследовательской лаборатории IBM в Сан-Хосе разработала в 1970-х годах. [13]
Первой попыткой Чемберлина и Бойса создать язык реляционной базы данных был SQUARE (Specifying Queries in A Relational Environment), но его было трудно использовать из-за нотации нижних/верхних индексов. После перехода в исследовательскую лабораторию Сан-Хосе в 1973 году они начали работу над продолжением SQUARE. [12] Первоначальное название SEQUEL, которое широко рассматривается как игра слов на QUEL , языке запросов Ingres , [14] позже было изменено на SQL (гласные отброшены), поскольку «SEQUEL» было торговой маркой британской компании Hawker Siddeley Dynamics Engineering Limited. [15] Метка SQL позже стала аббревиатурой Structured Query Language.
После тестирования SQL на испытательных площадках клиентов с целью определения полезности и практичности системы, IBM начала разрабатывать коммерческие продукты на основе своего прототипа System R, включая System/38 , SQL/DS и IBM Db2 , которые были коммерчески доступны в 1979, 1981 и 1983 годах соответственно. [16]
В конце 1970-х годов компания Relational Software, Inc. (теперь Oracle Corporation ) увидела потенциал концепций, описанных Коддом, Чемберлином и Бойсом, и разработала собственную СУРБД на основе SQL с намерением продать ее ВМС США , Центральному разведывательному управлению и другим правительственным агентствам США. В июне 1979 года компания Relational Software представила одну из первых коммерчески доступных реализаций SQL — Oracle V2 (Version2) для компьютеров VAX .
К 1986 году группы стандартов ANSI и ISO официально приняли стандартное определение языка "Database Language SQL". Новые версии стандарта были опубликованы в 1989, 1992, 1996, 1999, 2003, 2006, 2008, 2011, [12] 2016 и совсем недавно, в 2023 году. [17]
Синтаксис
Диаграмма, показывающая несколько элементов языка SQL, составляющих один оператор
Язык SQL подразделяется на несколько языковых элементов, в том числе:
- Предложения , которые являются составными частями утверждений и запросов. (В некоторых случаях они необязательны.) [18]
- Выражения , которые могут создавать либо скалярные значения, либо таблицы, состоящие из столбцов и строк данных.
- Предикаты , которые определяют условия, которые могут быть оценены с помощью трехзначной логики SQL (3VL) (истина/ложь/неизвестно) или булевых значений истинности , и используются для ограничения эффектов операторов и запросов или для изменения потока программы.
- Запросы , которые извлекают данные на основе определенных критериев. Это важный элемент SQL .
- Операторы , которые могут оказывать постоянное воздействие на схемы и данные или могут управлять транзакциями , потоком программы, соединениями, сеансами или диагностикой.
- Операторы SQL также включают в себя точку с запятой (";") как терминатор оператора. Хотя это и не требуется на каждой платформе, это определено как стандартная часть грамматики SQL.
- Незначительные пробелы в операторах и запросах SQL обычно игнорируются, что упрощает форматирование кода SQL для удобства чтения.
Процедурные расширения
SQL разработан для определенной цели: для запроса данных , содержащихся в реляционной базе данных . SQL — это основанный на множествах декларативный язык программирования , а не императивный язык программирования, как C или BASIC . Однако расширения к стандартному SQL добавляют функциональность процедурного языка программирования , такую как конструкции управления потоком.
В дополнение к стандартным расширениям SQL/PSM и собственным расширениям SQL, процедурная и объектно-ориентированная программируемость доступна на многих платформах SQL через интеграцию СУБД с другими языками. Стандарт SQL определяет расширения SQL/JRT (SQL Routines and Types for the Java Programming Language) для поддержки кода Java в базах данных SQL. Microsoft SQL Server 2005 использует SQLCLR (SQL Server Common Language Runtime) для размещения управляемых сборок .NET в базе данных , в то время как предыдущие версии SQL Server были ограничены неуправляемыми расширенными хранимыми процедурами, написанными в основном на языке C. PostgreSQL позволяет пользователям писать функции на самых разных языках, включая Perl , Python , Tcl , JavaScript (PL/V8) и C. [19]
Взаимодействие и стандартизация
Обзор
Реализации SQL несовместимы между поставщиками и не обязательно полностью следуют стандартам. В частности, синтаксис даты и времени, конкатенация строк, NULL
s и чувствительность к регистру сравнения различаются от поставщика к поставщику. PostgreSQL [20] и Mimer SQL [21] стремятся к соблюдению стандартов, хотя PostgreSQL не придерживается стандарта во всех случаях. Например, сворачивание не заключенных в кавычки имен в нижний регистр в PostgreSQL несовместимо со стандартом SQL, [22] который гласит, что не заключенные в кавычки имена должны быть свернуты в верхний регистр. [23] Таким образом, согласно стандарту, Foo
должно быть эквивалентно FOO
, а не foo
.
Популярные реализации SQL обычно не поддерживают основные функции стандартного SQL, такие как типы данных DATE
или TIME
. Наиболее очевидными примерами таких систем и, между прочим, наиболее популярными коммерческими и фирменными СУБД SQL являются Oracle (которая DATE
ведет себя как DATETIME
, [24] [25] и не имеет TIME
типа) [26] и MS SQL Server (до версии 2008 года). В результате код SQL редко можно перенести между системами баз данных без изменений.
Причины несовместимости
Несколько причин отсутствия переносимости между системами баз данных включают в себя:
- Сложность и размер стандарта SQL означают, что большинство разработчиков не поддерживают весь стандарт.
- Стандарт SQL не определяет поведение базы данных в некоторых важных областях (например, индексы , хранилище файлов), оставляя реализациям возможность самостоятельно решать, как себя вести.
- Стандарт SQL откладывает принятие некоторых решений до индивидуальных реализаций, например, как назвать столбец результатов, который не был назван явно. [27] : 207
- Стандарт SQL точно определяет синтаксис, который должна реализовать соответствующая система базы данных. Однако спецификация стандарта семантики языковых конструкций менее четко определена, что приводит к двусмысленности.
- Многие поставщики баз данных имеют большие клиентские базы; если новая версия стандарта SQL конфликтует с предыдущим поведением базы данных поставщика, поставщик может не захотеть нарушать обратную совместимость .
- У поставщиков практически нет коммерческих стимулов для упрощения смены поставщиков баз данных (см. привязка к поставщику ).
- Пользователи, оценивающие программное обеспечение баз данных, склонны ставить другие факторы, такие как производительность, выше соответствия стандартам.
История стандартизации
SQL был принят в качестве стандарта ANSI в 1986 году как SQL-86 [28] и ISO в 1987 году. [11] Он поддерживается ISO/IEC JTC 1, Информационные технологии, Подкомитетом SC 32, Управление данными и обмен ими .
До 1996 года программа стандартов управления данными Национального института стандартов и технологий (NIST) сертифицировала соответствие SQL DBMS стандарту SQL. Теперь поставщики самостоятельно сертифицируют соответствие своих продуктов. [29]
В первоначальном стандарте было заявлено, что официальным произношением «SQL» является аббревиатура : / «ess cue el»). [9] Несмотря на это, многие англоговорящие специалисты по базам данных (включая самого Дональда Чемберлина [30] ) используют аббревиатуру / («sequel»), 31] отражающую название языка в предварительной версии разработки «SEQUEL». [13] [15] [30]
Стандарт SQL претерпел ряд изменений:
Текущий стандарт
Стандарт обычно обозначается следующим образом: ISO/IEC 9075-n:yyyy Часть n: название , или, в качестве сокращения, ISO/IEC 9075 . Заинтересованные стороны могут приобрести документы стандартов в ISO, [36] IEC или ANSI. Некоторые старые проекты находятся в свободном доступе. [37] [38] [39]
Стандарт ISO/IEC 9075 дополняется стандартом ISO/IEC 13249: SQL Multimedia and Application Packages и некоторыми техническими отчетами .
Альтернативы
Следует различать альтернативы SQL как языку и альтернативы самой реляционной модели. Ниже предложены реляционные альтернативы языку SQL. Альтернативы реляционной модели см. в разделах навигационная база данных и NoSQL .
- .QL : объектно-ориентированный Datalog
- Язык 4D-запросов (4D QL)
- Datalog : критики предполагают, что Datalog имеет два преимущества перед SQL: он имеет более четкую семантику, что облегчает понимание и поддержку программ, и он более выразителен, в частности, для рекурсивных запросов. [40]
- HTSQL : метод запроса на основе URL
- IBM Business System 12 (IBM BS12): одна из первых полностью реляционных систем управления базами данных, представленная в 1982 году.
- ИСБЛ
- jOOQ : SQL, реализованный в Java как внутренний предметно-ориентированный язык
- Java Persistence Query Language (JPQL): язык запросов, используемый Java Persistence API и библиотекой персистентности Hibernate .
- JavaScript : MongoDB реализует свой язык запросов в API JavaScript.
- LINQ : запускает операторы SQL, написанные как языковые конструкции, для запроса коллекций непосредственно из кода .Net.
- Язык объектных запросов
- QBE ( Query By Example ), созданный Моше Злуфом, IBM, 1977 г.
- QUEL, представленный в 1974 году проектом Ingres Калифорнийского университета в Беркли, ближе к реляционному исчислению кортежей, чем к SQL
- XQuery
Распределенная обработка SQL
Распределенная реляционная архитектура базы данных (DRDA) была разработана рабочей группой в IBM с 1988 по 1994 год. DRDA позволяет сетевым реляционным базам данных взаимодействовать для выполнения SQL-запросов. [41] [42]
Интерактивный пользователь или программа могут выдавать SQL-запросы локальной RDB и получать таблицы данных и индикаторов состояния в ответ от удаленных RDB. SQL-запросы также могут компилироваться и сохраняться в удаленных RDB в виде пакетов, а затем вызываться по имени пакета. Это важно для эффективной работы прикладных программ, которые выдают сложные, высокочастотные запросы. Это особенно важно, когда таблицы, к которым требуется доступ, находятся в удаленных системах.
Сообщения, протоколы и структурные компоненты DRDA определяются Распределенной архитектурой управления данными . Распределенная обработка SQL в стиле DRDA отличается от современных распределенных баз данных SQL .
Критика
Дизайн
SQL отклоняется несколькими способами от своей теоретической основы, реляционной модели и ее исчисления кортежей. В этой модели таблица представляет собой набор кортежей, тогда как в SQL таблицы и результаты запросов представляют собой списки строк; одна и та же строка может встречаться несколько раз, а порядок строк может использоваться в запросах (например, в предложении LIMIT). Критики утверждают, что SQL следует заменить языком, который строго возвращается к исходной основе: например, см. Третий манифест Хью Дарвена и К. Дж. Дейта (2006, ISBN 0-321-39942-0 ).
Ортогональность и полнота
Ранние спецификации не поддерживали основные функции, такие как первичные ключи. Наборы результатов не могли быть названы, а подзапросы не были определены. Они были добавлены в 1992 году. [12]
Отсутствие типов сумм было описано как препятствие для полного использования пользовательских типов SQL. Например, поддержка JSON должна была быть добавлена новым стандартом в 2016 году. [43]
Нулевой
Концепция Null является предметом некоторых дебатов . Маркер Null указывает на отсутствие значения и отличается от значения 0 для целочисленного столбца или пустой строки для текстового столбца. Концепция Null обеспечивает 3-значную логику в SQL , которая является конкретной реализацией общей 3-значной логики . [12]
Дубликаты
Другая популярная критика заключается в том, что он допускает дублирование строк, что затрудняет интеграцию с такими языками, как Python , типы данных которых могут затруднить точное представление данных, [12] с точки зрения анализа и отсутствия модульности. Обычно этого избегают, объявляя первичный ключ или уникальное ограничение с одним или несколькими столбцами, которые уникально идентифицируют строку в таблице.
Несоответствие импеданса
В смысле, аналогичном несоответствию объектно-реляционного импеданса , несоответствие возникает между декларативным языком SQL и процедурными языками, в которые SQL обычно встроен. [ необходима цитата ]
Типы данных SQL
Стандарт SQL определяет три вида типов данных (глава 4.1.1 SQL/Foundation):
- предопределенные типы данных
- сконструированные типы
- определяемые пользователем типы.
Сконструированные типы — это один из ARRAY, MULTISET, REF(erence) или ROW. Пользовательские типы сопоставимы с классами в объектно-ориентированном языке с их собственными конструкторами, наблюдателями, мутаторами, методами, наследованием, перегрузкой, перезаписью, интерфейсами и т. д. Предопределенные типы данных по сути поддерживаются реализацией.
Предопределенные типы данных
- Типы персонажей
- Символ (СИМВОЛ)
- Изменение символов (VARCHAR)
- Большой символьный объект (CLOB)
- Национальные типы характера
- Национальный характер (NCHAR)
- Национальный характер варьируется (NCHAR VARYING)
- Крупный объект национального характера (NCLOB)
- Двоичные типы
- Двоичный (BINARY)
- Двоичное варьирование (VARBINARY)
- Большой двоичный объект (BLOB)
- Числовые типы
- Точные числовые типы (NUMERIC, DECIMAL, SMALLINT, INTEGER, BIGINT)
- Приблизительные числовые типы (FLOAT, REAL, DOUBLE PRECISION)
- Десятичный тип с плавающей точкой (DECFLOAT)
- Типы даты и времени (ДАТА, ВРЕМЯ, TIMESTAMP)
- Тип интервала (ИНТЕРВАЛ)
- Булев
- XML (см. SQL/XML ) [44]
- JSON
Смотрите также
Примечания
Ссылки
- ↑ Пол, Райан (24 октября 2005 г.). «Экскурсия по Microsoft Command Shell». Ars Technica . Получено 10 апреля 2011 г.
- ^ "Регистрация типа носителя для application/sql". Internet Assigned Numbers Authority . 10 апреля 2013 г. Получено 10 апреля 2013 г.
- ^ Шафранович, Ю. (апрель 2013 г.). "The application/sql Media Type, RFC 6922". Internet Engineering Task Force . стр. 3. doi :10.17487/RFC6922 . Получено 10 апреля 2013 г.
- ^ Болье, Алан (апрель 2009 г.). Мэри Э. Треселер (ред.). Learning SQL (2-е изд.). Севастополь, Калифорния, США: O'Reilly. ISBN 978-0-596-52083-0.
- ^ Чемберлин, Дональд Д.; Франа, Филип Л. (2001-10-03). "Устное историческое интервью с Дональдом Д. Чемберлином". University Digital Conservancy . hdl :11299/107215 . Получено 2020-01-14 .
Мы изменили первоначальное название "SEQUEL" на SQL, потому что получили письмо от чьего-то юриста, в котором говорилось, что название "SEQUEL" принадлежит им. Мы сократили его до SQL, от Structured Query Language, и продукт стал известен как SQL/DS.
- ^ SQL-92 , 4.22 SQL-операторы, 4.22.1 Классы SQL-операторов "Существует по крайней мере пять способов классификации SQL-операторов:", 4.22.2, SQL-операторы, классифицированные по функции "Ниже приведены основные классы SQL-операторов:"; SQL:2003 4.11 SQL-операторы и более поздние редакции.
- ^ Чатем, Марк (2012). Язык структурированных запросов на примерах - Том I: Язык запросов к данным. Lulu.com. стр. 8. ISBN 9781291199512.
- ^ Кодд, Эдгар Ф. (июнь 1970 г.). «Реляционная модель данных для больших общих банков данных». Сообщения ACM . 13 (6): 377–87. CiteSeerX 10.1.1.88.646 . doi :10.1145/362384.362685. S2CID 207549016.
- ^ ab Chapple, Mike. "SQL Fundamentals". Базы данных . About.com . Получено 28.01.2009 .
- ^ "Язык структурированных запросов (SQL)". International Business Machines. 27 октября 2006 г. Получено 10 июня 2007 г.
- ^ ab "ISO 9075:1987: Информационные технологии – Языки баз данных – SQL – Часть 1: Структура (SQL/Framework)". 1987-06-01.
- ^ abcdef Чемберлин, Дональд (2012). «Ранняя история SQL». IEEE Annals of the History of Computing . 34 (4): 78–82. doi :10.1109/MAHC.2012.61. S2CID 1322572.
- ^ abc Chamberlin, Donald D; Boyce, Raymond F (1974). "SEQUEL: A Structured English Query Language" (PDF) . Труды семинара ACM SIGFIDET 1974 года по описанию данных, доступу и управлению . Association for Computing Machinery: 249–64. Архивировано из оригинала (PDF) 26.09.2007 . Получено 09.06.2007 .
- ^ Старки, Джим. «Динамический SQL, сантехника и внутренний API». www.ibphoenix.com . Получено 19.01.2023 .
- ^ ab Oppel, Andy (27 февраля 2004 г.). Базы данных Demystified. Сан-Франциско, Калифорния : McGraw-Hill Osborne Media. стр. 90–1. ISBN 978-0-07-146960-9.
- ^ "История IBM, 1978". Архивы IBM . IBM. 23 января 2003 г. Архивировано из оригинала 17 января 2005 г. Получено 2007-06-09 .
- ^ «ISO - ISO/IEC JTC 1/SC 32 - Управление данными и обмен» . www.iso.org . Проверено 2 января 2021 г.
- ^ Международный стандарт ANSI/ISO/IEC (IS). Язык баз данных SQL — Часть 2: Основы (SQL/Основы). 1999.
- ^ "Программирование сервера PostgreSQL". Официальная документация PostgreSQL 9.1 . postgresql.org. 2011 . Получено 2012-03-09 .
- ^ "О PostgreSQL". Официальный сайт PostgreSQL 9.1 . PostgreSQL Global Development Group. 2012. Получено 9 марта 2012 г. PostgreSQL
гордится своим соответствием стандартам. Его реализация SQL строго соответствует стандарту ANSI-SQL:2008
- ^ "Mimer SQL, Built on Standards". Официальный сайт Mimer SQL . Mimer Information Technology. 2009.
- ^ "4.1. Лексическая структура". Документация PostgreSQL . 2018.
- ^ "(Второй неофициальный проект обзора) ISO/IEC 9075:1992, Язык баз данных SQL, Раздел 5.2, правило синтаксиса 11". 30 июля 1992 г.
- ^ Лоренц, Диана; Розер, Мэри Бет; Авраам, Сандип; Амор, Анджела; Арора, Гита; Арора, Викас; Эшдаун, Лэнс; Баер, Герман; Белламконда, Шрикант (октябрь 2010 г.) [1996]. "Basic Elements of Oracle SQL: Data Types". Oracle Database SQL Language Reference 11g Release 2 (11.2) . Библиотека документации Oracle Database. Редвуд-Сити, Калифорния: Oracle USA, Inc . Получено 29 декабря 2010 г. Для
каждого
значения Oracle хранит следующую информацию: век, год, месяц, дата, час, минута и секунда
DATE
- ^ Лоренц, Диана; Розер, Мэри Бет; Авраам, Сандип; Амор, Анджела; Арора, Гита; Арора, Викас; Эшдаун, Лэнс; Баер, Герман; Белламконда, Шрикант (октябрь 2010 г.) [1996]. "Базовые элементы Oracle SQL: типы данных". Справочник по языку Oracle Database SQL 11g, выпуск 2 (11.2) . Библиотека документации Oracle Database. Редвуд-Сити, Калифорния: Oracle USA, Inc. Получено 29 декабря 2010 г. Типы
данных datetime
...
DATE
- ^ Лоренц, Диана; Розер, Мэри Бет; Авраам, Сандип; Амор, Анджела; Арора, Гита; Арора, Викас; Эшдаун, Лэнс; Баер, Герман; Белламконда, Шрикант (октябрь 2010 г.) [1996]. "Basic Elements of Oracle SQL: Data Types". Oracle Database SQL Language Reference 11g Release 2 (11.2) . Библиотека документации по базам данных Oracle. Редвуд-Сити, Калифорния: Oracle USA, Inc . Получено 29 декабря 2010 г. Не
определяйте столбцы со следующими типами данных SQL/DS и DB2, поскольку им не соответствует тип данных Oracle:...
TIME
- ^ Дейт, Крис Дж. (2013). Реляционная теория для компьютерных профессионалов: что такое реляционные базы данных на самом деле (1-е изд.). Севастополь, Калифорния: O'Reilly Media. ISBN 978-1-449-36943-9.
- ^ "Finding Aid". X3H2 Records, 1978–95 . Американский национальный институт стандартов.
- ^ Долл, Шелли (19 июня 2002 г.). «Является ли SQL стандартом?». Builder.com TechRepublic . TechRepublic. Архивировано из оригинала 2012-07-05 . Получено 2016-04-12 .
- ^ ab Gillespie, Patrick. "Pronouncing SQL: SQL or Sequel?" . Получено 12 февраля 2012 г. .
- ^ Мелтон, Джим; Алан Р. Саймон (1993). "1.2. Что такое SQL?" . Понимание нового SQL: Полное руководство. Морган Кауфманн. стр. 536. ISBN 978-1-55860-245-8.
SQL (правильно произносится как «эс кью элл», а не как довольно распространённое «сиквел»)…
- ^ Вагнер, Майкл (2010). SQL/XML:2006 — Оценка соответствия стандартам ausgewählter Datenbanksysteme . Дипломика Верлаг. п. 100. ИСБН 978-3-8366-9609-8.
- ^ "SQL:2008 теперь является утвержденным международным стандартом ISO". Sybase. Июль 2008. Архивировано из оригинала 28.06.2011.
- ^ Кришна Кулкарни, Ян-Эйке Михельс (сентябрь 2012 г.). «Временные функции в SQL:2011» (PDF) . SIGMOD Запись . 41 (3).
- ^ Фред Земке (2012). "Что нового в SQL:2011" (PDF) . Корпорация Oracle.
- ^ «ИСО/МЭК 9075».
- ^ SQL:1992 черновик (текст)
- ^ SQL:2008 draft (Zip) , Whitemarsh Information Systems Corporation
- ^ SQL:2011 draft (Zip) , Whitemarsh Information Systems Corporation
- ^ Фернандо Саенс-Перес. «Внешние соединения в дедуктивной системе баз данных» (PDF) . Lbd.udc.es . Получено 16.01.2017 .
- ^ Райнш, Р. (1988). «Распределенная база данных для SAA». IBM Systems Journal . 27 (3): 362–389. doi :10.1147/sj.273.0362.
- ^ Справочник по архитектуре распределенных реляционных баз данных . IBM Corp. SC26-4651-0. 1990.
- ^ Брэндон, Джейми (июль 2021 г.). "Against SQL" . Получено 2 августа 2021 г. .
- ^ "SQL 2003 Standard Support in Oracle Database 10g" (PDF) . Oracle . Oracle Corporation . Ноябрь 2003 . Получено 2024-03-27 .Поддержка XML была добавлена в ANSI SQL 2003, часть 14.
Источники
- Кодд, Эдгар Ф. (июнь 1970 г.). «Реляционная модель данных для больших общих банков данных». Сообщения ACM . 13 (6): 377–87. doi : 10.1145/362384.362685 . S2CID 207549016.
- Обсуждение предполагаемых недостатков SQL (C2 wiki)
- CJ Date с Хью Дарвеном : Руководство по стандарту SQL: руководство пользователя по стандартному языку баз данных SQL, 4-е изд. , Addison Wesley, США, 1997, ISBN 978-0-201-96426-4
Внешние ссылки
- 1995 SQL Reunion: People, Projects, and Politics, Пол МакДжонс (ред.): стенограмма встречи выпускников, посвященной личной истории реляционных баз данных и SQL.
- Американский национальный институт стандартов. Записи X3H2, 1978–1995 гг. Коллекция Института Чарльза Бэббиджа документирует разработку комитетом H2 стандартов NDL и SQL.
- Устное интервью с Дональдом Д. Чемберлином Институт Чарльза Бэббиджа В этой устной истории Чемберлин рассказывает о своей ранней жизни, своем образовании в колледже Харви Мадда и Стэнфордском университете , а также о своей работе над технологией реляционных баз данных. Чемберлин был членом исследовательской группы System R и вместе с Рэймондом Ф. Бойсом разработал язык баз данных SQL. Чемберлин также кратко обсуждает свои более поздние исследования языков запросов XML.