Язык SQL

Лекция 3. Язык SQL. Выборка данных. Сортировка. Ограничение количества выбираемых строк.

SQL (Structured Query Language – Структурированный Язык Запросов) – стандартный язык запросов по работе с реляционными БД. Изначально под “запросом” подразумевалась операция выборки данных или манипулирования данными (вставка, обновление, изменение строк). На самом деле уже при его создании SQL являлся полным языком баз данных, позволявшим выполнять весь спектр операций с базой данных: создание объектов БД (таких как таблицы, представления, последовательности и т.п.), изменение структуры объектов БД, добавление ограничений целостности, удаление объектов БД и т.д.

SQL появился после создания реляционной алгебры в середине 70-х, он был разработан фирмой IBM в рамках проекта экспериментальной реляционной СУБД System R. Но этот язык был настолько прост и удобен, что получил широкое распространение и постепенно стал стандартом “де-факто” (фактическим стандартом) для языков манипулирования данными в реляционных СУБД. Все СУБД, претендующие на название "реляционные", реализовали тот или иной диалект SQL. Изначально эти диалекты могли существенно различаться между собой, что затрудняло переносимость приложений между различными СУБД. Чтобы решить эту проблему в дальнейшем были разработаны юридические стандарты SQL. Такого рода стандарты разрабатываются специальными международными организациями по стандартизации. Каждый такой стандарт представляет собой объемный документ, тщательным образом описывающий все команды и функции языка.

Первый международный стандарт SQL был принят в 1989 г. Американским Национальным Институтом Стандартов (ANSI – American National Standards Institute), как ANSI X3.135-1989 или ANSI SQL/89. Этот стандарт, помимо ANSI был также одобрен Международной Организацией Стандартов (ISO – International Standards Organization) в документе ISO 9075-1989. Иногда этот стандарт еще называют SQL1. Дальнейшее развитие информационных технологий, связанных с базами данных, потребовало расширения и доработки первого стандарта SQL. Так в конце 1992 г. был принят новый международный стандарт языка SQL – SQL/92 или SQL2, а в 1999 году – SQL3.

Нужно заметить, что в настоящее время, ни одна СУБД не реализует стандарт SQL в полном объеме. Кроме того, во всех диалектах языка имеются возможности, не являющиеся стандартными. Таким образом, можно сказать, что каждый диалект - это надмножество некоторого подмножества стандарта SQL.

Язык SQL оперирует терминами, несколько отличающимися от терминов реляционной теории, например, вместо "отношений" используются "таблицы", вместо "кортежей" - "строки", вместо "атрибутов" - "колонки" или "столбцы". Язык SQL является реляционно полным. Это означает, что любой оператор реляционной алгебры может быть выражен подходящим оператором SQL.

Стандарт языка SQL, хотя и основан на реляционной теории, но во многих местах отходит он нее. Например, отношение в реляционной модели данных не допускает наличия одинаковых кортежей, а таблицы в терминологии SQL могут иметь одинаковые строки. Имеются и другие отличия.

Все примеры в лекциях по SQL основаны на базе данных, приведенной в Приложении А.