SQL
Парадигма | Декларативный |
---|---|
Семья | Язык запросов |
Разработано | Дональд Д. Чемберлин Раймонд Ф. Бойс |
Разработчик | ISO/IEC JTC 1 (Объединенный технический комитет 1) / SC 32 (Подкомитет 32) / WG 3 (Рабочая группа 3) |
Впервые появился | 1974 год |
Стабильная версия | SQL:2023 / июнь 2023 г |
Дисциплина набора текста | Статический , сильный |
ТЫ | Кросс-платформенный |
Веб-сайт | www |
Основные реализации | |
Много | |
Диалекты | |
Под влиянием | |
Ученый-компьютерщик | |
Под влиянием | |
CQL , LINQ , SPARQL , SOQL, PowerShell , [1] JPQL , JOOQ , N1QL , GQL | |
|
Расширение имени файла | .sql |
---|---|
Тип интернет-СМИ | |
Разработано | ИСО / МЭК |
Первоначальный выпуск | 1986 |
Тип формата | База данных |
Стандартный | ИСО/МЭК 9075 |
Открытый формат ? | Да |
Веб-сайт | www |
Язык структурированных запросов ( SQL ) ( произносится как S-QL ; исторически «продолжение») [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 в исследовательской лаборатории IBM в Сан-Хосе разработала в 1970-х годах. [13]
Первой попыткой Чемберлина и Бойса создать язык реляционных баз данных был SQUARE (определение запросов в реляционной среде), но его было трудно использовать из-за нотации индексов и надстрочных индексов. Переехав в Исследовательскую лабораторию Сан-Хосе в 1973 году, они начали работу над продолжением SQUARE. [12] Оригинальное название SEQUEL, которое широко рассматривается как игра слов на QUEL , языке запросов Ingres . [14] позже был изменен на SQL (отбросив гласные), поскольку «SEQUEL» было товарным знаком британской компании Hawker Siddeley Dynamics Engineering Limited. [15] Метка SQL позже стала аббревиатурой языка структурированных запросов.
После тестирования 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 (Версия 2) для VAX компьютеров .
К 1986 году группы стандартов ANSI и ISO официально приняли стандартное определение языка «Язык баз данных SQL». Новые версии стандарта публиковались в 1989, 1992, 1996, 1999, 2003, 2006, 2008, 2011 гг. [12] 2016 и совсем недавно 2023 год. [17]
Синтаксис
[ редактировать ]Язык SQL подразделяется на несколько языковых элементов, в том числе:
- Предложения , являющиеся составными компонентами операторов и запросов. (В некоторых случаях это необязательно.) [18]
- Выражения , которые могут создавать либо скалярные значения, либо таблицы, состоящие из столбцов и строк данных.
- Предикаты , которые определяют условия, которые могут быть оценены с помощью трехзначной логики SQL (3VL) (истина/ложь/неизвестно) или логических значений истинности и используются для ограничения эффектов операторов и запросов или для изменения хода программы.
- Запросы , которые извлекают данные на основе определенных критериев. Это важный элемент SQL .
- Операторы , которые могут оказывать постоянное влияние на схемы и данные или могут управлять транзакциями , потоком программы, соединениями, сеансами или диагностикой.
- Операторы SQL также включают в себя точку с запятой (";"). Хотя он не требуется на каждой платформе, он определяется как стандартная часть грамматики SQL.
- Незначительные пробелы обычно игнорируются в операторах и запросах SQL, что упрощает форматирование кода SQL для удобства чтения.
Процедурные расширения
[ редактировать ]SQL создан для конкретной цели: для запроса данных , содержащихся в реляционной базе данных . SQL — это множествах , основанный на декларативный язык программирования , а не императивный язык программирования, такой как C или BASIC . Однако расширения стандартного SQL добавляют функциональные возможности процедурного языка программирования , такие как конструкции управления потоком.
Помимо стандартных расширений SQL/PSM и собственных расширений SQL, процедурное и объектно-ориентированное на многих платформах SQL доступно программирование посредством интеграции СУБД с другими языками. Стандарт SQL определяет расширения SQL/JRT (подпрограммы и типы SQL для языка программирования Java) для поддержки кода 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] и Мимер 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] Его поддерживает ОТК 1 ИСО/МЭК, Информационные технологии, Подкомитет ПК 32, Управление данными и обмен ими .
До 1996 года программа стандартов управления данными Национального института стандартов и технологий (NIST) сертифицировала соответствие СУБД SQL стандарту SQL. Теперь поставщики самостоятельно сертифицируют соответствие своей продукции. [29]
Исходный стандарт декларировал, что официальное произношение слова «SQL» представляет собой инициализм : / ˌ ɛ s ˌ k juː ˈ ɛ l / ( «ess cue el»). [9] Несмотря на это, многие англоговорящие специалисты по базам данных (включая самого Дональда Чемберлина) [30] ) используйте аббревиатурное произношение / ˈ s iː k w əl / («продолжение»), [31] отражает название предварительной версии языка, «SEQUEL». [13] [15] [30]
Стандарт SQL претерпел ряд изменений:
Год | Имя | Псевдоним | Комментарии |
---|---|---|---|
1986 | SQL-86 | SQL-87 | Впервые формализовано ANSI |
1989 | SQL-89 | ФИПС 127-1 | Незначительная доработка, которая добавила ограничения целостности, принятые как FIPS 127-1. |
1992 | SQL-92 | SQL2, ФИПС 127-2 | Основная версия (ISO 9075), SQL-92 начального уровня принят как FIPS 127-2. |
1999 | SQL:1999 | SQL3 | Добавлено сопоставление регулярных выражений, рекурсивные запросы (например, транзитивное замыкание ), триггеры , поддержка процедурных операторов и операторов управления потоком, нескалярных типов (массивов) и некоторых объектно-ориентированных функций (например, структурированных типов ), поддержка внедрения SQL. в Java ( SQL/OLB ) и наоборот ( SQL/JRT ) |
2003 | SQL:2003 | Представлены XML функции, связанные с ( SQL/XML ), оконные функции , стандартизированные последовательности и столбцы с автоматически генерируемыми значениями (включая столбцы идентификаторов). | |
2006 | SQL:2006 | ISO/IEC 9075-14:2006 определяет способы использования SQL с XML. Он определяет способы импорта и хранения данных XML в базе данных SQL, манипулирования ими внутри базы данных и публикации данных XML и обычных данных SQL в форме XML. Кроме того, он позволяет приложениям интегрировать запросы в свой код SQL с помощью XQuery , языка запросов XML, опубликованного Консорциумом Всемирной паутины ( W3C ), для одновременного доступа к обычным данным SQL и документам XML. [32] | |
2008 | SQL:2008 | Легализует ORDER BY вне определений курсора. Добавляет триггеры INSTEAD OF, оператор TRUNCATE, [33] предложение FETCH | |
2011 | SQL:2011 | Добавляет временные данные (ПЕРИОД ДЛЯ) [34] (дополнительную информацию можно найти в базе данных Temporal#History ). Улучшения для оконных функций и предложения FETCH. [35] | |
2016 | SQL:2016 | Добавляет сопоставление шаблонов строк, функции полиморфных таблиц, операции с данными JSON, хранящимися в полях строк символов. | |
2019 | SQL:2019–2020 | Добавляет часть 15, многомерные массивы (тип и операторы MDarray). | |
2023 | SQL:2023 | Добавляет тип данных JSON (SQL/Foundation); Добавляет часть 16, Запросы графа свойств (SQL/PGQ). |
Текущий стандарт
[ редактировать ]Стандарт обычно обозначается шаблоном: ISO/IEC 9075-n:yyyy Part n: title или, сокращенно, ISO/IEC 9075 . Заинтересованные стороны могут приобрести документы по стандартам в ISO. [36] МЭК или ANSI. Некоторые старые проекты находятся в свободном доступе. [37] [38] [39]
ISO/IEC 9075 дополняется ISO/IEC 13249: Пакеты мультимедиа и приложений SQL и некоторыми техническими отчетами .
Альтернативы
[ редактировать ]Следует проводить различие между альтернативами SQL как языку и альтернативами самой реляционной модели. Ниже предлагаются реляционные альтернативы языку SQL. См. навигационную базу данных и NoSQL для альтернатив реляционной модели.
- .QL : объектно-ориентированный журнал данных
- Язык 4D-запросов (4D QL)
- Datalog : критики предполагают, что Datalog имеет два преимущества перед SQL: он имеет более чистую семантику, что облегчает понимание и обслуживание программ, и он более выразителен, особенно для рекурсивных запросов. [40]
- HTSQL : метод запроса на основе URL-адреса.
- IBM Business System 12 (IBM BS12): одна из первых полностью реляционных систем управления базами данных, представленная в 1982 году.
- ИСБЛ
- jOOQ : SQL реализован на Java как внутренний предметно-ориентированный язык.
- Язык запросов Java Persistence (JPQL): язык запросов, используемый Java Persistence API и Hibernate . библиотекой персистентности
- JavaScript : MongoDB реализует свой язык запросов в API JavaScript.
- LINQ : запускает операторы SQL, написанные как языковые конструкции, для запроса коллекций непосредственно из .Net. кода
- Язык объектных запросов
- QBE ( запрос по примеру ), созданный Моше Злуфом, 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 для целочисленного столбца или пустой строки для текстового столбца. Концепция Nulls обеспечивает 3-значную логику в SQL , которая является конкретной реализацией общей 3-значной логики . [12]
Дубликаты
[ редактировать ]Другая популярная критика заключается в том, что он допускает дублирование строк, что затрудняет интеграцию с такими языками, как Python , чьи типы данных могут затруднить точное представление данных. [12] с точки зрения разбора и отсутствия модульности. Обычно этого можно избежать, объявляя первичный ключ или ограничение уникальности с одним или несколькими столбцами, которые однозначно идентифицируют строку в таблице.
Несоответствие импеданса
[ редактировать ]В некотором смысле, аналогично несоответствию объектно-реляционного импеданса , несоответствие возникает между декларативным языком SQL и процедурными языками, в которые обычно встроен SQL. [ нужна ссылка ]
Типы данных SQL
[ редактировать ]Стандарт SQL определяет три типа типов данных (глава 4.1.1 SQL/Foundation):
- предопределенные типы данных
- сконструированные типы
- определяемые пользователем типы.
К составным типам относятся ARRAY, MULTISET, REF(erence) или ROW. Пользовательские типы сравнимы с классами объектно-ориентированного языка со своими собственными конструкторами, наблюдателями, мутаторами, методами, наследованием, перегрузкой, перезаписью, интерфейсами и т. д. Предопределенные типы данных внутренне поддерживаются реализацией.
Предопределенные типы данных
[ редактировать ]- Типы персонажей
- Персонаж (СИМВОЛ)
- Изменение символов (VARCHAR)
- Большой символьный объект (CLOB)
- Национальные типы характера
- Национальный характер (НЧАР)
- Национальный характер варьируется (NCHAR VARYING)
- Большой объект национального характера (NCLOB)
- Двоичные типы
- Двоичный (БИНАРНЫЙ)
- Двоичная переменная (VARBINARY)
- Большой двоичный объект (BLOB)
- Числовые типы
- Точные числовые типы (NUMERIC, DECIMAL, SMALLINT, INTEGER, BIGINT)
- Приблизительные числовые типы (FLOAT, REAL, DOUBLE PRECISION)
- Десятичный тип с плавающей запятой (DECFLOAT)
- Типы даты и времени (DATE, TIME, TIMESTAMP)
- Тип интервала (ИНТЕРВАЛ)
- логическое значение
- XML (см. SQL/XML ) [44]
- JSON
См. также
[ редактировать ]- Викибук SQL
- База данных объектов
- Список систем управления реляционными базами данных
- Сравнение систем управления реляционными базами данных
- Сравнение объектно-реляционных систем управления базами данных
- Запрос по примеру
- Зарезервированные слова SQL
- Синтаксис SQL
- Oracle PL/SQL
- Microsoft Transact-SQL (T-SQL)
- Онлайн-обработка транзакций (OLTP)
- Онлайн-аналитическая обработка (OLAP)
- Хранилище данных
- Реляционная система управления потоками данных
- NoSQL
- Свинка
- Иерархическая модель базы данных
- Звездный график
- Схема снежинки
Примечания
[ редактировать ]Ссылки
[ редактировать ]- ^ Пол, Райан (24 октября 2005 г.). «Экскурсия по Microsoft Command Shell» . Арс Техника . Проверено 10 апреля 2011 г.
- ^ «Регистрация типа носителя для приложения/sql» . Управление по присвоению номеров в Интернете . 10 апреля 2013 года . Проверено 10 апреля 2013 г.
- ^ Шафранович Ю. (апрель 2013 г.). «Тип носителя приложения/sql, RFC 6922» . Рабочая группа по интернет-инжинирингу . п. 3. дои : 10.17487/RFC6922 . Проверено 10 апреля 2013 г.
- ^ Болье, Алан (апрель 2009 г.). Мэри Э. Треселер (ред.). Изучение SQL (2-е изд.). Севастополь, Калифорния, США: О'Рейли. ISBN 978-0-596-52083-0 .
- ^ Чемберлин, Дональд Д.; Франа, Филип Л. (3 октября 2001 г.). «Устное историческое интервью с Дональдом Д. Чемберлином» . Университетская цифровая консервация . hdl : 11299/107215 . Проверено 14 января 2020 г.
Мы изменили первоначальное название «SEQUEL» на SQL, потому что получили письмо от чьего-то адвоката, в котором говорилось, что имя «SEQUEL» принадлежит ему. Мы сократили его до SQL (язык структурированных запросов), и этот продукт стал известен как SQL/DS.
- ^ SQL-92 , 4.22 SQL-операторы, 4.22.1 Классы SQL-операторов «Существует как минимум пять способов классификации SQL-операторов:», 4.22.2, SQL-операторы, классифицированные по функциям «Ниже приведены основные классы SQL-операторов: SQL-операторы:"; SQL:2003 4.11 SQL-операторы и более поздние версии.
- ^ Чатем, Марк (2012). Язык структурированных запросов на примере — Том I: Язык запросов к данным . Лулу.com. п. 8. ISBN 9781291199512 .
- ^ Кодд, Эдгар Ф. (июнь 1970 г.). «Реляционная модель данных для больших общих банков данных». Коммуникации АКМ . 13 (6): 377–87. CiteSeerX 10.1.1.88.646 . дои : 10.1145/362384.362685 . S2CID 207549016 .
- ^ Jump up to: а б Чаппл, Майк. «Основы SQL» . Базы данных . О сайте.com . Проверено 28 января 2009 г.
- ^ «Язык структурированных запросов (SQL)» . Машины международного бизнеса. 27 октября 2006 года . Проверено 10 июня 2007 г.
- ^ Jump up to: а б «ISO 9075:1987: Информационные технологии. Языки баз данных. SQL. Часть 1. Структура (SQL/Framework)» . 1 июня 1987 г.
- ^ Jump up to: а б с д и ж Чемберлин, Дональд (2012). «Ранняя история SQL». IEEE Анналы истории вычислений . 34 (4): 78–82. дои : 10.1109/MAHC.2012.61 . S2CID 1322572 .
- ^ Jump up to: а б с Чемберлин, Дональд Д.; Бойс, Раймонд Ф. (1974). «ПРОДОЛЖЕНИЕ: структурированный английский язык запросов» (PDF) . Материалы семинара ACM SIGFIDET 1974 года по описанию, доступу и контролю данных . Ассоциация вычислительной техники: 249–64. Архивировано из оригинала (PDF) 26 сентября 2007 г. Проверено 9 июня 2007 г.
- ^ Старки, Джим. «Динамический SQL, сантехника и внутренний API» . www.ibphoenix.com . Проверено 19 января 2023 г.
- ^ Jump up to: а б Оппель, Энди (27 февраля 2004 г.). Базы данных демистифицированы . Сан-Франциско, Калифорния : McGraw-Hill Osborne Media. стр. 90–1. ISBN 978-0-07-146960-9 .
- ^ «История IBM, 1978 год» . Архивы IBM . ИБМ. 23 января 2003 года . Проверено 9 июня 2007 г.
- ^ «ISO – ISO/IEC JTC 1/SC 32 – Управление данными и обмен» . www.iso.org . Проверено 2 января 2021 г.
- ^ Международный стандарт ANSI/ISO/IEC (IS). Язык базы данных SQL. Часть 2. Основа (SQL/Foundation). 1999.
- ^ «Программирование сервера PostgreSQL» . Официальная документация PostgreSQL 9.1 . postgresql.org. 2011 . Проверено 9 марта 2012 г.
- ^ «О PostgreSQL» . Официальный сайт PostgreSQL 9.1 . Группа глобального развития PostgreSQL. 2012 . Проверено 9 марта 2012 г.
PostgreSQL гордится соответствием стандартам. Его реализация SQL строго соответствует стандарту ANSI-SQL:2008.
- ^ «Mimer SQL, построенный на стандартах» . Официальный сайт Mimer SQL . Мимер Информационные технологии. 2009.
- ^ «4.1. Лексическая структура» . Документация PostgreSQL . 2018.
- ^ «(Второй неофициальный обзорный проект) ISO/IEC 9075:1992, Язык баз данных SQL, раздел 5.2, синтаксическое правило 11» . 30 июля 1992 года.
- ^ Лоренц, Диана; Розер, Мэри Бет; Авраам, Сандип; Амор, Анджела; Арора, Гита; Арора, Викас; Эшдаун, Лэнс; Баер, Герман; Белламконда, Шрикант (октябрь 2010 г.) [1996]. «Основные элементы Oracle SQL: типы данных» . Справочник по языку SQL базы данных Oracle 11g, выпуск 2 (11.2) . Библиотека документации базы данных Oracle. Редвуд-Сити, Калифорния: Oracle USA, Inc. Проверено 29 декабря 2010 г.
Для каждого
DATE
значение, Oracle хранит следующую информацию: столетие, год, месяц, дату, час, минуту и секунду. - ^ Лоренц, Диана; Розер, Мэри Бет; Авраам, Сандип; Амор, Анджела; Арора, Гита; Арора, Викас; Эшдаун, Лэнс; Баер, Герман; Белламконда, Шрикант (октябрь 2010 г.) [1996]. «Основные элементы Oracle SQL: типы данных» . Справочник по языку SQL базы данных Oracle 11g, выпуск 2 (11.2) . Библиотека документации базы данных Oracle. Редвуд-Сити, Калифорния: Oracle USA, Inc. Проверено 29 декабря 2010 г.
Типы данных datetime:
DATE
... - ^ Лоренц, Диана; Розер, Мэри Бет; Авраам, Сандип; Амор, Анджела; Арора, Гита; Арора, Викас; Эшдаун, Лэнс; Баер, Герман; Белламконда, Шрикант (октябрь 2010 г.) [1996]. «Основные элементы Oracle SQL: типы данных» . Справочник по языку SQL базы данных Oracle 11g, выпуск 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 .
- ^ «В поисках помощи» . X3H2 Records, 1978–95 . Американский национальный институт стандартов.
- ^ Долл, Шелли (19 июня 2002 г.). «Является ли SQL уже стандартом?» . Builder.com компании TechRepublic . TechRepublic. Архивировано из оригинала 5 июля 2012 г. Проверено 12 апреля 2016 г.
- ^ Jump up to: а б Гиллеспи, Патрик. «Произнесение SQL: SQL или продолжение?» . Проверено 12 февраля 2012 г.
- ^ Мелтон, Джим; Алан Р. Саймон (1993). «1.2. Что такое SQL?» . Понимание нового SQL: полное руководство . Морган Кауфманн. п. 536 . ISBN 978-1-55860-245-8 .
SQL (правильно произносится «ess cue ell» вместо довольно распространенного «продолжения»)…
- ^ Вагнер, Майкл (2010). SQL/XML:2006 — Оценка соответствия стандартам выбранных систем баз данных . Издательство Дипломика. п. 100. ИСБН 978-3-8366-9609-8 .
- ^ «SQL:2008 теперь утвержденный международный стандарт ISO» . Сибаза. Июль 2008 г. Архивировано из оригинала 28 июня 2011 г.
- ^ Кришна Кулкарни, Ян-Эйке Михелс (сентябрь 2012 г.). «Временные функции в SQL:2011» (PDF) . SIGMOD Запись . 41 (3).
- ^ Фред Земке (2012). «Что нового в SQL:2011» (PDF) . Корпорация Оракл.
- ^ «ИСО/МЭК 9075» .
- ^ SQL:проект 1992 года (текст)
- ^ SQL: проект 2008 г. (Zip) , Whitemarsh Information Systems Corporation
- ^ SQL:проект 2011 г. (Zip) , Whitemarsh Information Systems Corporation
- ^ Фернандо Саенс-Перес. «Внешние соединения в дедуктивной системе баз данных» (PDF) . Lbd.udc.es. Проверено 16 января 2017 г.
- ^ Рейнш, Р. (1988). «Распределенная база данных для SAA». IBM Systems Journal . 27 (3): 362–389. дои : 10.1147/sj.273.0362 .
- ^ Справочник по архитектуре распределенных реляционных баз данных . Корпорация IBM SC26-4651-0. 1990.
- ^ Брэндон, Джейми (июль 2021 г.). «Против SQL» . Проверено 2 августа 2021 г.
- ^ «Стандартная поддержка SQL 2003 в базе данных Oracle 10g» (PDF) . Оракул . Корпорация Оракл . Ноябрь 2003 года . Проверено 27 марта 2024 г. Поддержка XML была добавлена в ANSI SQL 2003, часть 14.
Источники
[ редактировать ]- Кодд, Эдгар Ф. (июнь 1970 г.). «Реляционная модель данных для больших общих банков данных» . Коммуникации АКМ . 13 (6): 377–87. дои : 10.1145/362384.362685 . S2CID 207549016 .
- Обсуждение предполагаемых недостатков SQL (вики C2)
- CJ Date с Хью Дарвеном : Руководство по стандарту SQL: руководство для пользователей по стандартному языку баз данных SQL, 4-е изд. , Эддисон Уэсли, США, 1997 г., ISBN 978-0-201-96426-4
Внешние ссылки
[ редактировать ]- «Воссоединение SQL: люди, проекты и политика» , 1995 г., Пол МакДжонс (редактор) : стенограмма встречи воссоединения, посвященной личной истории реляционных баз данных и SQL.
- Американский национальный институт стандартов. X3H2 Records, 1978–1995. Коллекция Института Чарльза Бэббиджа документирует разработку комитетом H2 стандартов NDL и SQL.
- Устное историческое интервью с Дональдом Д. Чемберлином Институт Чарльза Бэббиджа В этой устной истории Чемберлин рассказывает о своей молодости, своем образовании в колледже Харви Мадда и Стэнфордском университете , а также о своей работе над технологией реляционных баз данных. Чемберлин был членом исследовательской группы System R и вместе с Рэймондом Ф. Бойсом разработал язык базы данных SQL. Чемберлин также кратко обсуждает свои недавние исследования языков запросов XML.
- Системы управления базами данных
- SQL
- Языки моделирования данных
- Декларативные языки программирования
- Языки программирования со стандартом ISO
- Языки запросов
- Системы управления реляционными базами данных
- Языки программирования, ориентированные на данные
- Языки программирования, созданные в 1974 году.
- Табличное программирование