Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SQL.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
264.7 Кб
Скачать

8

SQL

Содержание

  • 1 История

    • 1.1 Вопросы совместимости

  • 2 Преимущества и недостатки

    • 2.1 Преимущества

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

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

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

    • 2.2 Недостатки

      • 2.2.1 Несоответствие реляционной модели данных

      • 2.2.2 Сложность

      • 2.2.3 Отступления от стандартов

      • 2.2.4 Сложность работы с иерархическими структурами

  • 3 Расширения

    • 3.1 Процедурные расширения

  • 4 Примечания

  • 7 Литература

SQL Structured Query Language — язык структурированных запросов — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных.

Вопреки существующим заблуждениям, SQL в его чистом (базовом) виде является информационно-логическим языком, а не языком программирования. Вместе с тем стандарт языка спецификацией SQL/PSM предусматривает возможность его процедурных расширений, с учётом которых язык уже вполне может рассматриваться в качестве языка программирования.

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

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

  • операторы определения данных (англ. Data Definition Language, DDL)

  • операторы манипуляции данными (англ. Data Manipulation Language, DML)

  • операторы определения доступа к данным (англ. Data Control Language, DCL)

  • операторы управления транзакциями (англ. Transaction Control Language, TCL)

Data Definition Language (DDL) (язык описания данных) — это семейство компьютерных языков, используемых в компьютерных программах для описания структуры баз данных.

На текущий момент наиболее популярным языком DDL является SQL, используемый для получения и манипулирования данными в РСУБД, и сочетающий в себе элементы DDL и DML.

Функции языков DDL определяются первым словом в предложении (часто называемом запросом), которое почти всегда является глаголом. В случае с SQL эти глаголы — «create» («создать»), «alter» («изменить»), «drop» («удалить»). Это превращает природу языка в ряд обязательных утверждений (команд) к базе данных.

Языки DDL могут существенно различаться у различных производителей СУБД. Существует ряд стандартов SQL, установленный ISO/IEC (SQL-89,SQL-92, SQL:1999, SQL:2003, SQL:2008), но производители СУБД часто предлагают свои собственные «расширения» языка и, часто, не поддерживают стандарт полностью.

Data Manipulation Language (DML) (язык управления (манипулирования) данными) — это семейство компьютерных языков, используемых в компьютерных программах или пользователями баз данных для получения, вставки, удаления или изменения данных в базах данных.

На текущий момент наиболее популярным языком DML является SQL, используемый для получения и манипулирования данными в РСУБД. Другие формы DML использованы в IMS/DL1, базах данных CODASYL (таких как IDMS), и других.

Языки DML изначально использовались только компьютерными программами, но с появлением SQL стали также использоваться и людьми.

Функции языков DML определяются первым словом в предложении (часто называемом запросом), которое почти всегда является глаголом. В случае с SQL эти глаголы — «insert» («вставить»), «update» («обновить»), и «delete» («удалить»). Это превращает природу языка в ряд обязательных утверждений (команд) к базе данных.

Языки DML могут существенно различаться у различных производителей СУБД. Существует стандарт SQL, установленный ANSI, но производители СУБД часто предлагают свои собственные «расширения» языка.

Языки DML разделяются в основном на два типа:

  • Procedural DMLs — описывают действия над данными.

  • Declarative DMLs — описывают сами данные.

Data Control Language (DCL) — язык баз данных для осуществления административных функций, присваивающих или отменяющих право (привилегию) использовать базу данных, таблицы в базе данных, а также выполнять те или иные операторы SQL.

  • GRANT — применяется для присвоения привилегии;

  • REVOKE — применяется для отмены привилегии.

Операторы управления транзакциями (англ. Transaction Control Language, TCL) компьютерный язык и часть SQL, используемый для обработки транзакций. Примеры TCL команд:

  • COMMIT применяет транзакцию.

  • ROLLBACK "откатывает" все изменения, сделанные в контексте текущей транзакции.

  • SAVEPOINT делит транзакцию на более мелкие участки.

История

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

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

Стоит отметить, что SEQUEL был не единственным языком подобного назначения. В Калифорнийском Университете Беркли была разработана некоммерческая СУБД Ingres (являвшаяся, между прочим, дальним прародителем популярной сейчас некоммерческой СУБД PostgreSQL), которая являлась реляционной СУБД, но использовала свой собственный язык QUEL, который, однако, не выдержал конкуренции по количеству поддерживающих его СУБД с языком SQL.

Первыми СУБД, поддерживающими новый язык, стали в 1979 году Oracle V2 для машин VAX от компании Relational Software Inc. (впоследствии ставшей компанией Oracle) и System/38 от IBM, основанная на System/R. Вопреки сложившемуся мнению, первой стала именно СУБД Oracle V2[источник не указан 254 дня].

Первый официальный стандарт языка SQL был принят ANSI в 1986 году и ISO (Международной организацией по стандартизации) в 1987 году (так называемый SQL-86) и несколько уточнён в 1989 году. Дальнейшее развитие языка поставщиками СУБД потребовало принятия в 1992 году нового расширенного стандарта (ANSI SQL-92 или просто SQL2). Следующим стандартом стал SQL:1999 (SQL3). В настоящее время действует стандарт, принятый в 2003 году (SQL:2003) с небольшими модификациями, внесёнными позже. История версий стандарта:

Год

Название

Иное название

Изменения

1986

SQL-86

SQL-87

Первый вариант стандарта, принятый институтом ANSI и одобренный ISO в 1987 году.

1989

SQL-89

FIPS 127-1

Немного доработанный вариант предыдущего стандарта.

1992

SQL-92

SQL2, FIPS 127-2

Значительные изменения (ISO 9075); уровень Entry Level стандарта SQL-92 был принят как стандарт FIPS 127-2.

1999

SQL:1999

SQL3

Добавлена поддержка регулярных выражений, рекурсивных запросов, поддержка триггеров, базовые процедурные расширения, нескалярные типы данных и некоторые объектно-ориентированные возможности.

2003

SQL:2003

Введены расширения для работы с XML-данными, оконные функции (применяемые для работы с OLAP-базами данных, генераторы последовательностей и основанные на них типы данных.

2006

SQL:2006

Функциональность работы с XML-данными значительно расширена. Появилась возможность совместно использовать в запросах SQL и XQuery.

2008

SQL:2008

Улучшены возможности оконных функций, устранены некоторые неоднозначности стандарта SQL:2003[2]

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]