Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


proj ИмяМуз (Музыканты join Сочинения)



Union

Proj ИмяМуз (Музыканты join Исполнения)

 

SELECT DISTINCT ИмяМуз FROM Музыканты М, Сочинения С WHERE С.НомМуз=М.НомМуз

UNION

SELECT DISTINCT ИмяМуз FROM Музыканты М, Исполнения И WHERE И.НомМуз=М.НомМуз

 

Операция пересечения  intersection  может быть выражена несколькими способами.


Получить имена музыкантов, которые играют и на саксофоне, и на кларнете:


Proj ИмяМуз (Музыканты join sel

Инструмент='Саксофон'(Исполнители))

Intersection

Proj ИмяМуз (Музыканты join sel

Инструмент='Кларнет'(Исполнители))

 

SELECT DISTINCT ИмяМуз FROM Музыканты М1,

Исполнители И1, Исполнители И2

WHERE М1.НомМуз=И1.НомМуз AND

И1.Инструмент='Саксофон' AND

И2.Инструмент='Кларнет' AND

И2.НомМуз=И1.НомМуз

 

или

 

SELECT DISTINCT ИмяМуз

FROM Музыканты М1, Исполнители И1

WHERE М1.НомМуз=И1.НомМуз AND

И1.Инструмент='Саксофон' AND

М1.НомМуз IN

       (SELECT НомМуз FROM Исполнители И2

             WHERE И2.Инструмент='Кларнет')

 

или

 

SELECT DISTINCT ИмяМуз

FROM Музыканты М1, Исполнители И1

WHERE М1.НомМуз=И1.НомМуз AND

       И1.Инструмент='Саксофон' AND

       М1.НомМуз =ANY

       (SELECT НомМуз FROM Исполнители И2

             WHERE И2.Инструмент='Кларнет')

 

или

 

SELECT DISTINCT ИмяМуз

FROM Музыканты М1, Исполнители И1

WHERE М1.НомМуз=И1.НомМуз AND 

И1.Инструмент='Саксофон' AND

EXISTS

       (SELECT * FROM Исполнители И2

       WHERE И2.Инструмент='Кларнет'

       AND И2.НомМуз=И1.НомМуз)

 

Операция вычитания  difference  также может быть выражена несколькими способами.


Получить имена музыкантов, котоые играют на саксофоне, но не играют на кларнете:


Proj ИмяМуз (Музыканты join sel

Инструмент='Саксофон'(Исполнители))

Diffrence

Proj ИмяМуз (Музыканты join sel

Инструмент='Кларнет'(Исполнители))

 

SELECT DISTINCT ИмяМуз

FROM Музыканты М1, Исполнители И1

WHERE М1.НомМуз=И1.НомМуз AND

И1.Инструмент='Саксофон' AND

М1.НомМуз NOT IN

       (SELECT НомМуз FROM Исполнители И2

        WHERE И2.Инструмент='Кларнет')

 

или

 

SELECT DISTINCT ИмяМуз

FROM Музыканты М1, Исполнители И1

WHERE М1.НомМуз=И1.НомМуз AND

       И1.Инструмент='Саксофон' AND

       М1.НомМуз! =ALL

       (SELECT НомМуз FROM Исполнители И2

       WHERE И2.Инструмент='Кларнет')

 

или

 

SELECT DISTINCT ИмяМуз

FROM Музыканты М1, Исполнители И1

WHERE М1.НомМуз=И1.НомМуз AND

       И1.Инструмент='Саксофон' AND

 NOT EXISTS

       (SELECT * FROM Исполнители И2

       WHERE И2.Инструмент='Кларнет'

       AND И2.НомМуз=И1.НомМуз)

 

Операция умножения  product получается, если мы выполняем выборку из 2 таблиц, но не указываем условия связи.


Получить всевозможные пары имен музыкантов:


Музыканты2 aliases Музыканты

Proj Музыканты.ИмяМуз, Музыканты2.ИмяМуз

(Музыканты product Музыканты2)

 

SELECT М1.ИмяМуз, М2.ИмяМуз

FROM Музыканты М1, Музыканты М2

 

Очень интересно выглядит операция деления division. Она представляет собой двойное отрицание существования.

 

Получить названия ансамблей, которые играли все произведения Моцарта (т.е., нет ни одного произведения Моцарта, которого они бы не играли):

Proj НазАнс

(proj НомАнс, НомСоч (Исполнения)

division

proj НомСоч (sel ИмяМуз='Моцарт' (Музыканты)

    join Сочинения)

join Ансамбли)

 

SELECT НазАнс FROM Ансамбли А WHERE NOT EXISTS

(

SELECT * FROM Сочинения С, Музыканты М

WHERE С.НомМуз=М.НомМуз AND ИмяМуз='Моцарт'

AND NOT EXISTS

(

       SELECT * FROM Исполнения И

       WHERE И.НомСоч=С.НомСоч AND

       И.НомАнс=А.НомАнс

)

)



Литература

1. Гольцман B. MySQL 5.0. Серия: Библиотека программиста. - СПб.: Питер, 2009. - 256 с.

2. Кузнецов М., Симдянов И. MySQL 5. - СПб: БХВ-Петербург, 2010. 1024 с.

3. Веллинг Л., Томсон Л. MySQL. Учебное пособие. - М.: Вильямс, 2005. - 304 с.

4. Крёнке Д. Теория и практика построения баз данных. 8-е изд. - СПб.: Питер, 2003. - 800 с.

 

Дистрибутивы

http: //www.mysql.com/downloads/installer/
Пакет программ для Windows, содержащий MySQL server, среду для разработки и администрирования MySQL Workbench и много других полезных компонентов.

http: //www.devart.com/ru/dbforge/mysql/studio/download.html
dbForge Studio for MySQL 6.0. Содержит набор инструментов для профессиональной разработки и управления MySQL-базы данных.





Для заметок



Для заметок


Поделиться:



Последнее изменение этой страницы: 2019-06-19; Просмотров: 210; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.012 с.)
Главная | Случайная страница | Обратная связь