ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 03.04.2021
Просмотров: 409
Скачиваний: 1
FROM B
Реляционный оператор переименования RENAME выражается при помощи ключевого
слова AS в списке отбираемых полей оператора SELECT. Таким образом, язык SQL
является реляционно полным.
Остальные операторы реляционной алгебры (соединение, пересечение, деление)
выражаются через примитивные, следовательно, могут быть выражены операторами
SQL. Тем не менее, для практических целей приведем их.
Оператор соединения
Реляционная алгебра:
Оператор SQL:
SELECT A.
Поле
1, A.
Поле
2, …, B.
Поле
1, B.
Поле
2, …
FROM A, B
WHERE c;
или
SELECT A.
Поле
1, A.
Поле
2, …, B.
Поле
1, B.
Поле
2, …
FROM A CROSS JOIN B
WHERE c;
Оператор пересечения
Реляционная алгебра:
Оператор SQL:
SELECT *
FROM A
INTERSECT
SELECT *
FROM B;
Оператор деления
Реляционная алгебра:
Оператор SQL:
SELECT DISTINCT A.X
FROM A
WHERE NOT EXIST
(SELECT *
FROM B
WHERE NOT EXIST
(SELECT *
FROM A A1
WHERE
A1.X = A.X AND
A1.Y = B.Y));
Замечание. Оператор SQL, реализующий деление отношений трудно запомнить, поэтому
дадим пример эквивалентного преобразования выражений, представляющих суть
запроса.
Пусть отношение A содержит данные о поставках деталей, отношение B содержит
список всех деталей, которые могут поставляться. Атрибут X является номером
поставщика, атрибут Y является номером детали.
Разделить отношение A на отношение B означает в данном примере "отобрать номера
поставщиков, которые поставляют
все
детали".
Преобразуем текст выражения:
"Отобрать номера поставщиков, которые поставляют
все
детали" эквивалентно
"Отобрать те номера поставщиков из таблицы A, для которых
не существует
непоставляемых деталей в таблице B" эквивалентно
"Отобрать те номера поставщиков из таблицы A, для которых
не существует
тех
номеров деталей из таблицы B, которые
не поставляются
этим поставщиком"
эквивалентно
"Отобрать те номера поставщиков из таблицы A, для которых
не существует
тех
номеров деталей из таблицы B, для которых
не существует
записей о поставках в
таблице A для этого поставщика и этой детали".
Последнее выражение дословно переводится на язык SQL. При переводе выражения на
язык SQL нужно учесть, что во внутреннем подзапросе таблица A должна быть
переименована, для того чтобы отличать ее от экземпляра этой же таблицы,
используемой во внешнем запросе.
Выводы
Фактически стандартным языком доступа к базам данных в настоящее время стал язык
SQL (Structured Query Language).
Язык SQL оперирует терминами, несколько отличающимися от терминов реляционной
теории, например, вместо "отношений" используются "таблицы", вместо "кортежей" -
"строки", вместо "атрибутов" - "колонки" или "столбцы".
Стандарт языка SQL, хотя и основан на реляционной теории, но во многих местах
отходит он нее.
Основу языка SQL составляют операторы, условно разбитые не несколько групп по
выполняемым функциям:
•
Операторы DDL (Data Definition Language) - операторы определения объектов базы
данных.
•
Операторы DML (Data Manipulation Language) - операторы манипулирования данными.
•
Операторы защиты и управления данными, и др.
Одним из основных операторов DML является оператор SELECT, позволяющий
извлекать данные из таблиц и получать ответы на различные запросы. Оператор SELECT
содержит в себе все возможности реляционной алгебры. Это означает, что любой
оператор реляционной алгебры может быть выражен при помощи подходящего
оператора SELECT. Этим доказывается реляционная полнота языка SQL.
Различают концептуальную схему выполнения оператора SELECT и фактическую схему
его выполнения. Концептуальная схема описывает, в какой логической
последовательности должны выполняться операции, чтобы получить результат. При
реальном выполнении оператора SELECT на первый план выступает достижение
максимальной скорости выполнения запроса. Для этого используется
оптимизатор
,
который, анализируя различные планы выполнения запроса, выбирает наилучший из
них.