Язык запросов - это искусственный язык, на котором делаются запросы к базам данных и другим информационным системам.
Запрос представляет собой специальным образом описанное требование, определяющие состав производимых над базой данных операций по выборке, удалению или модификации хранимых данных. Для подготовки запросов с помощью различных СУБД чаще всего используются два основных языка описания запросов: язык QBE (Query By Example) - язык запросов по образцу; язык SQL (Structured Query Language) -структурированный язык запросов.
SQL
SQL - формальный непроцедурный язык программирования, применяемый для создания, модификации и управления данными в произвольной реляционной базе данных, управляемой соответствующей системой управления базами данных (СУБД).
История создания.
В начале 1970-х годов в одной из исследовательских лабораторий компании IBM была разработана экспериментальная реляционная СУБД IBM System R, для которой затем был создан специальный язык SEQUEL, позволявший относительно просто управлять данными в этой СУБД.
Когда в 1986 году первый стандарт языка SQL был принят ANSI.
Стандартизация.
Поскольку к началу 1980-х годов существовало несколько вариантов СУБД от разных производителей, причём каждый из них обладал собственной реализацией языка запросов, было принято решение разработать стандарт языка, который будет гарантировать переносимость ПО с одной СУБД на другую (при условии, что они будут поддерживать этот стандарт).
В 1983 году Международная организация по стандартизации (ISO) и Американский национальный институт стандартов (ANSI) приступили к разработке стандарта языка SQL. В настоящее время действует стандарт, принятый в 2003 году (SQL:2003) с небольшими модификациями, внесёнными позже (SQL:2008). Стандарт имеет модульную структуру - основная часть стандарта была вынесена в раздел "SQL/Foundation", все остальные были выведены в отдельные модули. Соответственно, остался только один уровень совместимости - Core, что означало поддержку этой основной части. Поддержка остальных возможностей оставлена на усмотрение производителей СУБД.
Описание
Язык SQL представляет собой совокупность:
1. Операторов
DDL (операторы определения данных):
CREATE - создать объект БД
ALTER - изменить объект БД
DROP - удалить объект БД
DML (операторы манипуляции данными) :
SELECT - считать данные, удовлетворяющие условию запроса
INSERT - добавить новые данные
UPDATE - изменить существующие данные
DELETE - удалить данные
DCL (операторы управления доступа к данным):
GRANT - предоставляет разрешение
REVOKE - отзывает разрешение
DENY - задает запрет, имеющий приоритет над разрешением
TCL (операторы управления транзакциями):
COMMIT - применяет транзакцию
ROLLBACK - откатывает
SAVEPOINT - делит транзакцию на более мелкие участки
2. Вычисляемых функций
AVG() Функция возвращает среднее значение столбца.
COUNT() Функция возвращает число строк в столбце.
MAX() Функция возвращает самое большое значение в столбце.
MIN() Функция возвращает самое маленькое значение в столбце.
SUM() Функция возвращает сумму значений столбца.
Статический, динамичский SQL.
Обычно при разработке программ все используемые в них SQL-операторы явно записываются в исходном коде. Такой вариант использования SQL-операторов обычно называют статический SQL. Многие полезные программы, однако, до момента запуска не "знают", какие именно SQL-операторы будут выполняться. Именно так и появляется динамический SQL - программа при запуске выполняет SQL-операторы, неизвестные вовремя компиляции. Например, программа генерирует запросы по ходу работы на основе введенных пользователем условий.
Преимущества и недостатки
+
Независимость от конктретной СУБД
Наличие стандартов
Декларативность (не задумываешься как СУБД выполнит запрос //не всегда +)
-
Создатели реляционной модели данных Кодд и Дейт указывают на то, что SQL не явл истинным реляционным языком
Сложность
Наличие диалектов
Реляционная алгебра, исчисления
Реляционная алгебра базируется на теории множеств и является основой логики работы баз данных.
Стандартные операции теории множеств
Объединение
А объединяется с B = Кортежи из А, Кортежи из B, удаление дублей.
Пересечение
А пересекается с B = одинаковые кортежи A и B
Вычитание
A / B = Кортежи из А без кортежей из B
Декартово произведение
A x B = атрибуты А + атрибуты B
Проекция (вертикальная вырезка)
Проекция (A,(имя,фамилия)) = С, в С только имя и фамилия, удаление дублей
Селекция
Селекция (A,(имя = Иван)) = С, в С - имеет атрибуты А, содержит записи имя = Иван
Соединение
Соединение (A,B, (N фак = N фак)) = Селекция (А х B, (N фак = N фак))
QBE
QBE - способ создания запросов к базе данных, с использованием образцов значений полей в виде текстовой строки. Реализации QBE преобразуют пользовательский ввод в формальный запрос к базе данных, что позволяет пользователю создавать сложные запросы без необходимости изучать более сложные языки запросов, такие как SQL.
Данный метод отбора данных впервые предложен Моше Злуфом сотрудником исследовательского центра IBM в 1970 году.
Эксплуатационным преимуществом поиска QBE является то, что для формирования запроса не требуется использовать специализированный язык запросов, синтаксис которого может быть сложен и недоступен конечному пользователю. Пользователю выводится окно, в котором указаны все поля данных, встречающиеся в каждой записи данных; введение информации в конкретное поисковое поле ограничит поиск совпадением (полным или частичным, в зависимости от договорённости реализации) по данному полю. Проверка условий осуществляется только по заполненным условиям на поля, а поля, условия на которые указаны не будут, могут соответствовать чему угодно. Многие практические реализации QBE допускают также не только конъюнктивное соединение условий в заполненных полях, но и другие варианты соединения условий (например, дизъюнкцию, отрицание, существование или несуществование связанных записей и другие).
Примеры использование (много скринов) http://inf8.gym5cheb.ru/p30aa1.html