Приложение 3. Реляционная алгебра и SQL
Рассмотрим, как связаны операции реляционной алгебры и язык SQL, т.е. приведем примеры запросов SQL, аналогичных операциям реляционной алгебры. В качестве примера базы данных будем использовать «Музыкантов».
Операция проекции proj выражается через SELECT с ключевым словом DISTINCT.
SELECT DISTINCT НазАнс FROM Ансамбли
SELECT * FROM Ансамбли WHERE СтрАнс='Россия'
Условия также могут быть и сложными.
Получить имена музыкантов, родившихся в 20-м веке
SELECT ИмяМуз FROM Музыканты WHERE ДатаРожд>'31.12.1900' AND ДатаРожд<'01.01.2001'
Операция соединения таблиц join может быть выражена несколькими способами.
SELECT DISTINCT ИмяМуз FROM Музыканты М, Сочинения С WHERE С.НомМуз=М.НомМуз
Можно использовать более современный синтаксис JOIN... ON
SELECT DISTINCT ИмяМуз FROM Музыканты М JOIN Сочинения С ON С.НомМуз=М.НомМуз
Если требуется вывести данные из одной таблицы, а условие накладывать на другую таблицу, то удобно использовать подзапросы, связанные и несвязанные.
SELECT DISTINCT ИмяМуз FROM Музыканты WHERE НомМуз IN (SELECT НомМуз FROM Сочинения)
или
SELECT DISTINCT ИмяМуз FROM Музыканты WHERE НомМуз = Any (SELECT НомМуз FROM Сочинения)
или
SELECT DISTINCT ИмяМуз FROM Музыканты М WHERE EXISTS (SELECT * FROM Сочинения С WHERE С.НомМуз=М.НомМуз)
Приведем пример сложного запроса, использующего данные из всех 6 таблиц базы данных.
Proj НазАнс (proj НомСоч (sel ИмяМуз='Моцарт' (Музыканты) join Сочинения) Join Proj НомСоч, НомАнс (proj НомИсп (sel Инструмент ='Саксофон' (Исполнители)) Join УчАнс join Исполнения) Join Ансамбли)
SELECT НазАнс FROM Ансамбли WHERE НомАнс IN ( SELECT И1.НомАнс FROM Исполнения И1, Исполнители И2, Музыканты М, Сочинения С, УчАнс У WHERE И1.НомСоч=С.НомСоч AND С.НомМуз=М.НомМуз AND И1.НомАнс=У.НомАнс AND И2.НомИсп=У.НомИсп AND М.ИмяМуз='Моцарт' AND И2.Инструмент='Саксофон' )
Операция объединения union соответствует нескольким командам SELECT, связанным ключевым словом UNION.
Proj ИмяМуз (Музыканты join Сочинения) Union Proj ИмяМуз (Музыканты join Исполнения)
SELECT DISTINCT ИмяМуз FROM Музыканты М, Сочинения С WHERE С.НомМуз=М.НомМуз UNION SELECT DISTINCT ИмяМуз FROM Музыканты М, Исполнения И WHERE И.НомМуз=М.НомМуз
Операция пересечения intersection может быть выражена несколькими способами.
Proj ИмяМуз (Музыканты join sel Инструмент='Саксофон'(Исполнители)) Intersection
Читайте также: IV. Приложение – анатомия шраддхи, предварительный анализ. Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|