SQL - SQL
Парадигма | Декларативная |
---|---|
Семья | Язык запроса |
Разработано |
Дональд Д. Чемберлин Раймонд Ф. Бойс |
Разработчик | ISO / IEC |
Впервые появился | 1974 |
Стабильный выпуск |
SQL: 2016 г.
/ декабрь 2016 г .
|
Печатная дисциплина | Статичный , сильный |
Операционные системы | Кроссплатформенность |
Веб-сайт | www |
Основные реализации | |
Много | |
Диалекты | |
Под влиянием | |
Лог данных | |
Под влиянием | |
CQL , LINQ , SPARQL , SOQL, PowerShell , JPQL , jOOQ , N1QL | |
|
Расширение имени файла |
.sql
|
---|---|
Тип интернет-СМИ |
приложение / sql |
Разработано | ISO / IEC |
Первый выпуск | 1986 г. |
Тип формата | База данных |
Стандарт | ISO / IEC 9075 |
Открытый формат ? | да |
Веб-сайт | www |
SQL ( / ˌ ɛ s ˌ к Ju ɛ л / ( слушать ) SQL , / s я к ж əl / «продолжение», Structured Query Language ) является языком предметно-ориентированный используется для программирования и предназначена для управления данными , проводимых в система управления реляционными базами данных (СУБД) или для потоковой обработки в системе управления реляционными потоками данных (RDSMS). Это особенно полезно при обработке структурированных данных , т. Е. Данных, включающих отношения между сущностями и переменными.
SQL предлагает два основных преимущества по сравнению со старыми API чтения-записи, такими как ISAM или VSAM . Во-первых, он представил концепцию доступа к множеству записей с помощью одной единственной команды. Во-вторых, это избавляет от необходимости указывать, как достичь записи, например, с индексом или без него .
Первоначально основанный на реляционной алгебре и реляционном исчислении кортежей , SQL состоит из множества типов операторов, которые можно неформально классифицировать как подъязыки , обычно: язык запросов данных (DQL), язык определения данных (DDL), язык управления данными (DCL). ) и язык обработки данных (DML). Сфера применения SQL включает запрос данных, манипулирование данными (вставка, обновление и удаление), определение данных ( создание и изменение схемы ) и управление доступом к данным. Хотя SQL по сути является декларативным языком ( 4GL ), он также включает процедурные элементы.
SQL был один из первых коммерческих языков для использования Кодд «s реляционная модели . Эта модель была описана в его влиятельной статье 1970 года «Реляционная модель данных для больших общих банков данных». Несмотря на то, что он не полностью придерживался реляционной модели, описанной Коддом , он стал наиболее широко используемым языком баз данных.
SQL стал стандартом в Американском национальном институте стандартов (ANSI) в 1986 году, и в Международных организациях по стандартизации (ИСО) в 1987 г. С тех пор стандарт был пересмотрен с целью включения более широкий набора функций. Несмотря на существование стандартов, большая часть кода SQL требует по крайней мере некоторых изменений перед переносом в другие системы баз данных.
История
SQL был первоначально разработан в IBM по Дональд Д. Чемберлин и Рэймонд Бойс , узнав о реляционной модели от Кодд в начале 1970 - х годов. Эта версия, первоначально называвшаяся SEQUEL (Structured English Query Language), была разработана для управления и извлечения данных, хранящихся в исходной квазиреляционной системе управления базами данных IBM, System R , которую группа из исследовательской лаборатории IBM в Сан-Хосе разработала в 1970-х годах.
Первой попыткой Чемберлина и Бойса создать язык реляционных баз данных был SQUARE (определение запросов в реляционной среде), но его было трудно использовать из-за нотации подстрочного / надстрочного индекса. После перехода в исследовательскую лабораторию Сан-Хосе в 1973 году они начали работу над продолжением SQUARE. Имя SEQUEL было изменено на SQL (опуская гласные) , потому что «ПРОДОЛЖЕНИЕ» был торговой маркой в британской Hawker Siddeley компании Dynamics Engineering Limited. Метка Structured Query Language позже стала аббревиатурой от SQL.
После тестирования SQL на тестовых сайтах заказчиков для определения полезности и практичности системы IBM начала разрабатывать коммерческие продукты на основе своего прототипа System R, включая System / 38 , SQL / DS и DB2 , которые были коммерчески доступны в 1979, 1981 годах. и 1983, соответственно.
В конце 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, а в последнее время в 2016 году.
Синтаксис
Язык SQL подразделяется на несколько языковых элементов, в том числе:
- Предложения , которые являются составными компонентами утверждений и запросов. (В некоторых случаях это необязательно.)
- Выражения , которые могут создавать либо скалярные значения, либо таблицы, состоящие из столбцов и строк данных.
- Предикаты , которые определяют условия, которые могут быть оценены с помощью трехзначной логики SQL (3VL) (истина / ложь / неизвестно) или логических значений истинности и используются для ограничения эффектов операторов и запросов или для изменения потока программы.
- Запросы , которые извлекают данные на основе определенных критериев. Это важный элемент SQL .
- Операторы , которые могут иметь постоянное влияние на схемы и данные или могут управлять транзакциями , потоком программы, соединениями, сеансами или диагностикой.
- Незначительные пробелы обычно игнорируются в операторах и запросах SQL, что упрощает форматирование кода SQL для удобства чтения.
Процедурные расширения
SQL разработан для конкретной цели: запрашивать данные, содержащиеся в реляционной базе данных . SQL - это декларативный язык программирования , основанный на наборах , а не императивный язык программирования, такой как C или BASIC . Однако расширения к стандартному SQL добавляют функциональные возможности процедурного языка программирования , такие как конструкции управления потоком. Это включает:
Источник | Сокращенное название | Полное имя |
---|---|---|
Стандарт ANSI / ISO | SQL / PSM | Модули SQL / Persistent Stored |
Interbase / Firebird | PSQL | Процедурный SQL |
IBM DB2 | SQL PL | Процедурный язык SQL (реализует SQL / PSM) |
IBM Informix | SPL | Сохраненный процедурный язык |
IBM Netezza | NZPLSQL | (на основе Postgres PL / pgSQL) |
Изобретательный | PSQL | Invantive Procedural SQL (реализует SQL / PSM и PL / SQL ) |
MariaDB | SQL / PSM , PL / SQL | SQL / Persistent Stored Module (реализует SQL / PSM), процедурный язык / SQL (на основе Ada ) |
Microsoft / Sybase | T-SQL | Transact-SQL |
Mimer SQL | SQL / PSM | SQL / Persistent Stored Module (реализует SQL / PSM) |
MySQL | SQL / PSM | SQL / Persistent Stored Module (реализует SQL / PSM) |
MonetDB | SQL / PSM | SQL / Persistent Stored Module (реализует SQL / PSM) |
NuoDB | SSP | Хранимые процедуры Старки |
Oracle | PL / SQL | Процедурный язык / SQL (на основе Ada ) |
PostgreSQL | PL / pgSQL | Процедурный язык / язык структурированных запросов PostgreSQL (на основе сокращенного PL / SQL ) |
SAP R / 3 | ABAP | Расширенное программирование бизнес-приложений |
SAP HANA | SQLScript | SQLScript |
Sybase | Watcom-SQL | SQL Anywhere Watcom-SQL Диалект |
Терадата | SPL | Сохраненный процедурный язык |
Помимо стандартных расширений 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.
Совместимость и стандартизация
Обзор
Реализации SQL несовместимы между поставщиками и не обязательно полностью соответствуют стандартам. В частности, синтаксис даты и времени, конкатенация строк, NULL
s и чувствительность к регистру при сравнении варьируются от поставщика к поставщику. Конкретными исключениями являются PostgreSQL и Mimer SQL, которые стремятся к соблюдению стандартов, хотя PostgreSQL не придерживается стандарта во всех случаях. Например, сворачивание имен без кавычек в нижний регистр в PostgreSQL несовместимо со стандартом SQL, согласно которому имена без кавычек следует переводить в верхний регистр. Таким образом, Foo
должно быть эквивалентно FOO
не в foo
соответствии со стандартом.
Популярные реализации SQL обычно не поддерживают базовые функции стандартного SQL, такие как типы данных DATE
или TIME
. Наиболее очевидными из таких примеров и, кстати, наиболее популярными коммерческими и проприетарными СУБД SQL являются Oracle (которая DATE
ведет себя как тип DATETIME
и не имеет TIME
типа) и MS SQL Server (до версии 2008 года). В результате код SQL редко может быть перенесен между системами баз данных без изменений.
Причины несовместимости
Несколько причин отсутствия переносимости между системами баз данных включают:
- Сложность и размер стандарта SQL означает, что большинство разработчиков не поддерживают весь стандарт.
- Стандарт не определяет поведение базы данных в нескольких важных областях (например, индексы , файловое хранилище ...), оставляя реализациям решать, как себя вести.
- Стандарт SQL точно определяет синтаксис, который должна реализовать соответствующая система баз данных. Однако стандартная спецификация семантики языковых конструкций менее четко определена, что приводит к двусмысленности.
- Многие поставщики баз данных имеют большие существующие клиентские базы; там, где более новая версия стандарта SQL конфликтует с предыдущим поведением базы данных поставщика, поставщик может не желать нарушать обратную совместимость .
- У поставщиков мало коммерческих стимулов, чтобы упростить смену поставщиков баз данных (см. Привязку к поставщику ).
- Пользователи, оценивающие программное обеспечение баз данных, обычно ставят другие факторы, такие как производительность, выше в свои приоритеты, чем соответствие стандартам.
История стандартизации
SQL был принят в качестве стандарта ANSI в 1986 году как SQL-86 и ISO в 1987 году. Он поддерживается ISO / IEC JTC 1, Информационные технологии, Подкомитетом SC 32, Управление данными и обмен .
До 1996 года программа стандартов управления данными Национального института стандартов и технологий (NIST) сертифицировала соответствие СУБД SQL стандарту SQL. Продавцы теперь самостоятельно подтверждают соответствие своей продукции.
Оригинальный стандарт объявил , что официальное произношение «SQL» была аббревиатура : / ˌ ɛ с ˌ к Ju ɛ л / ( «ESS кий эль»). Несмотря на это , многие говорящие на английском языке профессионалов базы данных ( в том числе сам Дональд Чемберлин) используют аббревиатуру -like произношению / s я к ж əl / ( «продолжение»), зеркальное имя развития пререлиз средства языка, «SEQUEL».
Стандарт SQL претерпел ряд изменений:
Год | Имя | Псевдоним | Комментарии |
---|---|---|---|
1986 г. | SQL-86 | SQL-87 | Впервые формализована ANSI |
1989 г. | SQL-89 | FIPS 127-1 | Незначительная редакция, добавляющая ограничения целостности, принята как FIPS 127-1. |
1992 г. | SQL-92 | SQL2, FIPS 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, опубликованного Консорциумом World Wide Web ( W3C ), для одновременного доступа к обычным данным SQL и XML-документам. | |
2008 г. | SQL: 2008 | Легализует определения ORDER BY за пределами курсора. Добавляет триггеры INSTEAD OF, оператор TRUNCATE, предложение FETCH. | |
2011 г. | SQL: 2011 | Добавляет временные данные (PERIOD FOR) (дополнительная информация: Temporal database # History ). Улучшения оконных функций и предложения FETCH. | |
2016 г. | SQL: 2016 | Добавляет сопоставление шаблонов строк, полиморфные табличные функции, JSON | |
2019 г. | SQL: 2019 | Добавляет Часть 15, многомерные массивы (тип и операторы MDarray) |
Текущий стандарт
Стандарт обычно обозначается шаблоном: 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, IEC или ANSI. Черновик SQL: 2008 находится в свободном доступе в виде zip- архива.
Анатомия стандарта SQL
Стандарт SQL разделен на 10 частей, но с пробелами в нумерации из-за изъятия устаревших частей.
- ISO / IEC 9075-1: 2016, часть 1: Framework (SQL / Framework). Он предоставляет логические концепции.
- 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 и элементы определения размеров, а также значения, поддерживаемые реализациями СУБД. Эта часть стандарта содержит как обязательные, так и дополнительные функции.
- 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. Эта часть стандарта состоит исключительно из дополнительных функций.
- 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: он имеет более чистую семантику, которая облегчает понимание и обслуживание программ, а также более выразительный, особенно для рекурсивных запросов.
- 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, ближе к реляционному исчислению кортежей, чем SQL
- Учебник D
- XQuery
Распределенная обработка SQL
Архитектура распределенной реляционной базы данных (DRDA) была разработана рабочей группой IBM с 1988 по 1994 год. DRDA позволяет реляционным базам данных, подключенным к сети, взаимодействовать друг с другом для выполнения запросов SQL.
Интерактивный пользователь или программа могут выдавать операторы SQL в локальную RDB и получать таблицы данных и индикаторы состояния в ответ от удаленных RDB. Операторы SQL также могут быть скомпилированы и сохранены в удаленных RDB в виде пакетов, а затем вызваны по имени пакета. Это важно для эффективной работы прикладных программ, которые выдают сложные высокочастотные запросы. Это особенно важно, когда таблицы, к которым нужно получить доступ, находятся в удаленных системах.
Сообщения, протоколы и структурные компоненты DRDA определяются архитектурой управления распределенными данными . Распределенная обработка SQL, а также DRDA, отличается от современных распределенных баз данных SQL .
Критика
Дизайн
SQL по-разному отличается от своей теоретической основы, реляционной модели и исчисления кортежей. В этой модели таблица - это набор кортежей, а в SQL таблицы и результаты запроса - это списки строк; одна и та же строка может встречаться несколько раз, и порядок строк может использоваться в запросах (например, в предложении LIMIT). Критики утверждают, что SQL следует заменить языком, который строго возвращается к исходной основе: например, см . Третий манифест .
Ортогональность и полнота
Ранние спецификации не поддерживали основные функции, такие как первичные ключи. Наборы результатов не могут быть названы, а подзапросы не определены. Они были добавлены в 1992 году.
Отсутствие типов сумм было описано как препятствие на пути к полному использованию определяемых пользователем типов SQL. Например, в 2016 году новый стандарт должен добавить поддержку JSON.
Нулевой
Концепция Null является предметом некоторых дискуссий . Маркер Null указывает на отсутствие значения и отличается от значения 0 для целочисленного столбца или пустой строки для текстового столбца. Концепция Nulls обеспечивает 3- значную логику в SQL , которая является конкретной реализацией общей 3-значной логики .
Дубликаты
Еще одна популярная критика заключается в том, что он позволяет дублировать строки, что затрудняет интеграцию с такими языками, как Python , типы данных которого могут затруднять точное представление данных с точки зрения синтаксического анализа и отсутствия модульности.
Обычно этого избегают, объявляя первичный ключ или уникальное ограничение с одним или несколькими столбцами, которые однозначно идентифицируют строку в таблице.
Несоответствие импеданса
Подобно несоответствию объектно-реляционного импеданса , существует несоответствие между декларативным языком SQL и процедурными языками, в которые обычно встраивается SQL.
Типы данных SQL
Стандарт SQL определяет три типа типов данных :
- предопределенные типы данных
- построенные типы
- определяемые пользователем типы.
Сконструированные типы - это ARRAY, MULTISET, REF (erence) или ROW. Определяемые пользователем типы сопоставимы с классами объектно-ориентированного языка со своими собственными конструкторами, наблюдателями, мутаторами, методами, наследованием, перегрузкой, перезаписью, интерфейсами и т. Д. Предопределенные типы данных внутренне поддерживаются реализацией.
Предопределенные типы данных
- Типы персонажей
- Персонаж (СИМВОЛ)
- Изменение характера (VARCHAR)
- Большой объект символа (CLOB)
- Типы национальных характеров
- Национальный характер (NCHAR)
- Изменяющийся национальный характер (NCHAR VARYING)
- Большой объект национального характера (NCLOB)
- Бинарные типы
- Двоичный (BINARY)
- Двоичное варьирование (VARBINARY)
- Большой двоичный объект (BLOB)
- Числовые типы
- Точные числовые типы (NUMERIC, DECIMAL, SMALLINT, INTEGER, BIGINT)
- Приблизительные числовые типы (FLOAT, REAL, DOUBLE PRECISION)
- Десятичный тип с плавающей запятой (DECFLOAT)
- Типы даты и времени (DATE, TIME, TIMESTAMP)
- Тип интервала (ИНТЕРВАЛ)
- Логический
- XML
- JSON
Смотрите также
- Викибук SQL
- База данных объектов
- Список систем управления реляционными базами данных
- Сравнение систем управления реляционными базами данных
- Сравнение объектно-реляционных систем управления базами данных
- D (спецификация языка данных)
- Запрос по примеру
- Синтаксис SQL
- Oracle PL / SQL
- Microsoft Transact-SQL (T-SQL)
- Обработка онлайн-транзакций (OLTP)
- Онлайн-аналитическая обработка (OLAP)
- Хранилище данных
- Система управления реляционными потоками данных
- NoSQL
- Швабры
- Иерархическая модель базы данных
- Схема звездочки
- Схема снежинки
Примечания
использованная литература
Источники
- Кодд, Эдгар Ф (июнь 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 за дополнительную плату. Для информативного использования, в отличие от строгого соблюдения стандартов, часто бывает достаточно поздних черновиков.
внешние ссылки
- 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