SQL

Содержание

SQL (ˈɛsˈkjuˈɛl или ˈsiːkwəl) (англ. Structured Query Language — язык структурированных запросов) — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных. Вопреки существующим заблуждениям, SQL является информационно-логическим языком, а не языком программирования.

SQL основывается на реляционной алгебре.

Язык SQL делится на три части:

  • операторы определения данных (Data Definition Language, DDL)
  • операторы манипуляции данными (Data Manipulation Language, DML)
  • операторы определения доступа к данным (Data Control Language, DCL)

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

В начале 1970-х годов в компании IBM была разработана экспериментальная СУБД «System R» на основе языка SEQUEL (Structured English Query Language — структурированный английский язык запросов). Позже по юридическим соображениям язык SEQUEL был переименован в SQL. Когда в 1986 году первый стандарт языка SQL был принят ANSI (American National Standards Institute), официальным произношением стало [,es kju:' el] — эс-кью-эл. Несмотря на это, даже англоязычные специалисты по прежнему часто называют SQL сиквел, вместо эс-кью-эл (по-русски также часто говорят «эс-ку-эль»).

Целью разработки было создание простого непроцедурного языка, которым мог воспользоваться любой пользователь, даже не имеющий навыков программирования. Собственно разработкой языка запросов занимались Чэмбэрлин (Chamberlin) и Рэй Бойс (Ray Boyce). Пэт Селинджер (Pat Selinger) занималась разработкой стоимостного оптимизатора (cost-based optimizer), Рэймонд Лори (Raymond Lorie) занимался компилятором запросов.

В 1981 году IBM объявила о своём первом основанном на SQL программном продукте — SQL/DS. Чуть позже к ней присоединились Oracle, Relational Technology и другие производители.

Первый стандарт языка SQL был принят ANSI в 1986 и ISO (Международной организацией по стандартизации) в 1987 (так называемый SQL level 1) и несколько уточнён в 1989 году (SQL level 2). Дальнейшее развитие языка поставщиками СУБД потребовало принятия в 1992 нового расширенного стандарта (ANSI SQL-92 или просто SQL-2). Следующим стандартом стал SQL-99. В настоящее время действует стандарт, принятый в 2003 году (SQL-3). SQL по праву завоевал первенство среди аналогичных языков запросов.

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

[править] Преимущества

  • Независимость от конкретной СУБД

Несмотря на наличие диалектов и различий в синтаксисе, в большинстве своём тексты SQL-запросов, содержащие DDL и DML, могут быть достаточно легко перенесены из одной СУБД в другую. Существуют системы, разработчики которых изначально закладывались на применение по меньшей мере нескольких СУБД (например: система электронного документооборота Documentum может работать как с Oracle Database, так и с Microsoft SQL Server и IBM DB2)

  • Наличие стандартов

Наличие стандартов и набора тестов для выявления совместимости и соответствия конкретной реализации SQL общепринятому стандарту только способствует «стабилизации» языка.

  • Декларативность

С помощью SQL программист описывает только то, какие данные нужно извлечь или модифицировать. То, каким образом это сделать решает СУБД непосредственно при обработке SQL запроса.

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

[править] Несоответствие реляционной модели данных

Создатель реляционной модели данных Эдгар Кодд, Кристофер Дейт и их сторонники указывают на то, что SQL не является истинно реляционным языком. В частности они указывают на следующие проблемы SQL[1]:

  • Повторяющиеся строки
  • Неопределённые значения (nulls)
  • Явное указание порядка колонок слева направо
  • Колонки без имени и дублирующиеся имена колонок
  • Отсутствие поддержки свойства «=»
  • Использование указателей
  • Высокая избыточность

В опубликованном Кристофером Дейтом и Хью Дарвеном Третьем Манифесте[2] они излагают принципы СУБД следующего поколения и предлагают язык Tutorial D, который является подлинно реляционным.

[править] Сложность

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

[править] Отступления от стандартов

Несмотря на наличие международного стандарта ANSI SQL-92, многие компании, занимающиеся разработкой СУБД (например, Oracle, Sybase, Microsoft, MySQL AB, Borland), вносят изменения в язык SQL, применяемый в разрабатываемой СУБД, тем самым отступая от стандарта. Таким образом появляются специфичные для каждой конкретной СУБД диалекты языка SQL.

В частности, для управления планом выполнения запроса в некоторые реализации SQL добавлены подсказки.

[править] Сложность работы с иерархическими структурами

Ранее SQL не предлагал стандартного способа манипуляции древовидными структурами. Некоторые поставщики СУБД предлагали свои решения. Например, Oracle использует выражение «CONNECT BY». В настоящее время в качестве стандарта принята рекурсивная конструкция «WITH».

[править] Стандарты

Ревизии SQL:

Год Названия Комментарии
1986 SQL-86, SQL-87 Впервые опубликован ANSI. Ратифицирован ISO в 1987.
1989 SQL-89 Небольшие изменения.
1992 SQL-92, SQL-2 Существенные изменения.
1999 SQL:1999, SQL-3 Добавлены регулярные выражения, рекурсивные запросы, триггеры и некоторые обьекто-ориентированные нововведения.
2003 SQL:2003 Объявлены XML-зависимые нововведения.

[править] Расширения

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

Поскольку SQL не является языком программирования (то есть не предоставляет средств для автоматизации операций с данными), вводимые разными производителями расширения касались в первую очередь процедурных расширений. Это хранимые процедуры (stored procedures) и процедурные языки-"надстройки". Практически в каждой СУБД применяется свой процедурный язык. Например, в OraclePL/SQL, основанный на языке Ada[3]; в Sybase SQL Server и MS SQL ServerTransact-SQL.

Этот раздел не завершён. Вы можете помочь проекту, исправив и дополнив его.

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

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

[править] Русскоязычные сайты

[править] Зарубежные сайты

[править] Литература

[править] Примечания

  1. O'Reilly Network. An Interview with Chris Date
  2. The Third Manifesto
  3. Pete Finnigan, Principal Consultant - How to unwrap PL/SQL(англ.)
Источник — «http://ru.wikipedia.org/wiki/SQL»

system wymiany linków SEO Tools wymiana linkami wymiana linkami tanie kredyty gotówkowe kreatyna Plaza 3 star hotel Los Angeles krynica noclegi Sejm Tyk