Здравствуйте! Записался на ваш курс, но не понимаю как произвести оплату. Надо ли писать заявление и, если да, то куда отправлять? как я получу диплом о профессиональной переподготовке? |
Соединения и теоретико-множественные операции над отношениями
Операция соединения по двум отношениям (таблицам)
Соединение - это процесс, когда две или более таблицы объединяются в одну. Способность объединять информацию из нескольких таблиц или запросов в виде одного логического набора данных обусловливает широкие возможности SQL.
В языке SQL для задания типа соединения таблиц в логический набор записей, из которого будет выбираться необходимая информация, используется операция JOIN в предложении FROM.
Формат операции:
FROM имя_таблицы_1 {INNER | LEFT | RIGHT} JOIN имя_таблицы_2 ON условие_соединения
Существуют различные типы операций соединения:
- тета-соединение ;
- соединение по эквивалентности ;
- естественное соединение ;
- внешнее соединение , ;
- полусоединение .
Операция тета-соединения
Операция тета-соединения определяет отношение, которое содержит кортежи из декартова произведения отношений R и S, удовлетворяющие предикату F. Предикат F имеет вид , где вместо может быть указан один из операторов сравнения ( >, >=, <, <=, =, <> ).
Если предикат F содержит только оператор равенства ( = ), то соединение называется соединением по эквивалентности.
Операция тета-соединения в языке SQL называется INNER JOIN (внутреннее соединение ) и используется, когда нужно включить все строки из обеих таблиц, удовлетворяющие условию объединения. Внутреннее соединение имеет место и тогда, когда в предложении WHERE сравниваются значения полей из разных таблиц. В этом случае строится декартово произведение строк первой и второй таблиц, а из полученного набора данных отбираются записи, удовлетворяющие условиям объединения.
В условиях объединения могут участвовать поля, относящиеся к одному и тому же типу данных и содержащие один и тот же вид данных, но они не обязательно должны иметь одинаковые имена.
Блоки данных из двух таблиц объединяются, как только в указанных полях будут найдены совпадающие значения.
Если в предложении FROM перечислено несколько таблиц и при этом не употребляется спецификация JOIN, а для указания соответствия полей из таблиц используется условие в предложении WHERE, то некоторые реляционные СУБД (например, Access) оптимизируют выполнение запроса, интерпретируя его как соединение.
Если перечислять ряд таблиц или запросов и не указывать условия объединения, в качестве результирующей таблицы будет выбрано декартово (прямое) произведение всех таблиц.
SELECT R.a1, R.a2, S.b1, S.b2 FROM R, S WHERE R.a2=S.b1 или SELECT R.a1, R.a2, S.b1, S.b2 FROM R INNER JOIN S ON R.a2=S.b15.4. Тета-соединение отношений в SQL.
Естественное соединение
Естественным соединением называется соединение по эквивалентности двух отношений R и S, выполненное по всем общим атрибутам, из результатов которого исключается по одному экземпляру каждого общего атрибута.
SELECT R.a1, R.a2, S.b2 FROM R, S WHERE R.a2=S.b1 или SELECT R.a1, S.b1, S.b2 FROM R INNER JOIN S ON R.a2=S.b15.5. Естественное соединение отношений в SQL.
Пример 5.6. Вывести информацию о проданных товарах.
SELECT * FROM Сделка, Товар WHERE Сделка.КодТовара=Товар.КодТовара Или (что эквивалентно) SELECT * FROM Товар INNER JOIN Сделка ON Товар.КодТовара=Сделка.КодТовара5.6. Выборка информации о проданных товарах.
Можно создать вложенные объединения, добавив третью таблицу к результату объединения двух других таблиц.
Пример 5.7. Получить сведения о товарах, дате сделок, количестве проданного товара и покупателях.
SELECT Товар.Название, Сделка.Количество, Сделка. Дата, Клиент.Фирма FROM Клиент INNER JOIN (Товар INNER JOIN Сделка ON Товар.КодТовара=Сделка.КодТовара) ON Клиент.КодКлиента=Сделка.КодКлиента5.7. Выборка сведений о товарах, дате сделок, количестве проданного товара и покупателях.
Использование общих имен таблиц для идентификации столбцов неудобно из-за их громоздкости. Каждой таблице можно присвоить какое-нибудь краткое обозначение, псевдоним.
Пример 5.8. Получить сведения о товарах, дате сделок, количестве проданного товара и покупателях. В запросе используются псевдонимы таблиц.
SELECT Т.Название, С.Количество, С.Дата, К.Фирма FROM Клиент AS К INNER JOIN (Товар AS Т INNER JOIN Сделка AS С ON Т.КодТовара=С.КодТовара) ON К.КодКлиента=С.КодКлиента;5.8. Выборка сведений о товарах, дате сделок, количестве проданного товара и покупателях с использованием псевдонима.
Внешнее соединение похоже на внутреннее, но в результирующий набор данных включаются также записи ведущей таблицы соединения, которые объединяются с пустым множеством записей другой таблицы.
Какая из таблиц будет ведущей, определяет вид соединения. LEFT - левое внешнее соединение, ведущей является таблица, расположенная слева от вида соединения ; RIGHT - правое внешнее соединение, ведущая таблица расположена справа от вида соединения.
Левое внешнее соединение
Левым внешним соединением называется соединение, при котором кортежи отношения R, не имеющие совпадающих значений в общих столбцах отношения S, также включаются в результирующее отношение.
SELECT R.a1, R.a2, S.b1, S.b2 FROM R LEFT JOIN S ON R.a2=S.b15.9. Левое внешнее соединение отношений в SQL.
Существует и правое внешнее соединение , называемое так потому, что в результирующем отношении содержатся все кортежи правого отношения. Кроме того, имеется и полное внешнее соединение, в его результирующее отношение помещаются все кортежи из обоих отношений, а для обозначения несовпадающих значений кортежей в нем используются определители NULL.
SELECT R.a1, R.a2, S.b1, S.b2 FROM R RIGHT JOIN S ON R.a2=S.b15.10. Правое внешнее соединение отношений в SQL.
Пример 5.11. Вывести информацию о всех товарах. Для проданных товаров будет указана дата сделки и количество. Для непроданных эти поля останутся пустыми.
SELECT Товар.*, Сделка.* FROM Товар LEFT JOIN Сделка ON Товар.КодТовара=Сделка.КодТовара;5.11. Выборка информации о всех товарах.
Полусоединение
Операция полусоединения определяет отношение, содержащее те кортежи отношения R, которые входят в соединение отношений R и S .
SELECT R.a1, R.a2 FROM R, S WHERE R.a2=S.b1 или SELECT R.a1, R.a2 FROM R INNER JOIN S ON R.a2=S.b15.12. Полусоединение отношений в SQL.