Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Create database mashzavod (Автосохраненный) (Сп...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
7 Мб
Скачать
☆

Лабораторна робота № 4

Тема. Структуровані запити і підзапити.

Завдання .Створити запити на об’єднання декількох таблиць. Використати самооб’єднання таблиці (таблицю об’єднують саму з собою). Не менше 10 запитів. Крім того створити підзапити з використанням not in, all, any, exists, not exists. Створити підзапити з використанням update, delete, insert.

1.Об’єднання таблиць

  • select robitnyk.kod_robitnyka,robitnyk.posada,zeh.nazva_zehu

from robitnyk,zeh

where robitnyk.zarplata>3000

and robitnyk.full_name=zeh.full_name

and zeh.kod_zehu>15;

­

  • select zeh.full_name,zeh.nazva_zehu,zamovlennya.kod_klienta

from zeh,zamovlennya

where zamovlennya.data_zamov lennya>‘2014-09-27 12:34:45’

and zeh.nazva_tovaru=zamovlennya.nazva_tovaru

and kilkist_robitnykiv>60 ;

  • select klient.full_name,klient.adressa,zamovlennya.data_zamovlennya

from klient,zamovlennya

where zamovlennya.nazva_tovaru like'%k%'

and zamovlennya.kod_klienta=klient.kod_klienta

and klient.telefon not like'%9%4%7%';

  • select zamovlennya.kod_klienta,zeh.kod_zehu,robitnyk.telefon

from zamovlennya,zeh,robitnyk

where robitnyk.stazh>2

and robitnyk.full_name=zeh.full_name

and zeh.nazva_tovaru=zamovlennya.nazva_tovaru

and zamovlennya.cina between 50000 and 95000

and zeh.kilkist_robitnykiv>50;

  • select klient.full_name,zamovlennya.data_vykonannya as data,zeh.nazva_zehu

from klient,zeh,zamovlennya

where zeh.full_name like '%v%' and zeh.nazva_tovaru=zamovlennya.nazva_tovaru and zamovlennya.kod_klienta=klient.kod_klienta

and zamovlennya.data_zamovlennya between '2015-01-15 13:00:00' and '2015-03-15 12:00:00'

and klient.Nayavnist_znyzhky=1;

  • select robitnyk.kod_robitnyka as robitnyk,zeh.nazva_zehu as zeh,klient.kod_klienta as klient,zamovlennya.data_zamovlennya as work_begin,zamovlennya.data_vykonannya as work_end from robitnyk,zeh,klient,zamovlennya

where robitnyk.adressa not like'a%'

and robitnyk.full_name=zeh.full_name and zeh.nazva_tovaru=zamovlennya.nazva_tovaru

and zamovlennya.kod_klienta=klient.kod_klienta

and zamovlennya.cina>90000 and zeh.kilkist_robitnykiv>25 ;

2.Самооб’єднання таблиць

  • select a.kod_robitnyka,a.full_name,a.telefon

from robitnyk a,robitnyk b

where a.stazh=b.stazh

and a.posada!=b.posada

order by a.full_name;

  • select a.kod_robitnyka as kod,a.full_name as name,a.kilkist_robitnykiv

from zeh a,zeh b

where a.nazva_tovaru!=b.nazva_tovaru

and a.nazva_zehu=b.nazva_zehu

and a.kod_robitnyka=b.kod_robitnyka;

  • select distinct a.kod_klienta as klient,a.nazva_tovaru as tovar,a.cina

from zamovlennya a,zamovlennya b

where a.cina=b.cina

and a.data_zamovlennya between ’ 2014-05-14 17:30:00‘ and '2015-01-23 12:45:00' ;

  • select a.kod_klienta as klient,a.full_name as name

from klient a,klient b

where a.kod_klienta=b.kod_klienta

and a.nayavnist_znyzhky!=true;

Підзапити

Not IN

select posada,zarplata,stazh from robitnyk where posada like '%a%'

and zarplata not in

(select zarplata from robitnyk where zarplata>3000 )

and stazh not in

(select stazh from robitnyk where stazh<4);

All

Cинтаксис: операнд операція_порівняння ALL {підзапит)

Слово ALL, яке має слідувати за операцією порівняння, означає "повернути TRUE, якщо порівняння дає TRUE для всіх рядків, що повертаються підзапитом"

select full_name as name,nazva_tovaru as tovar from zeh where kod_zehu*10<all

(select kod_klienta from zamovlennya) order by full_name;

Any

Синтаксис:

операнд операція_порівняння ANY {підзапит)

Ключове слово ANY, яке має слідувати за операцією порівняння, означає "повернути TRUE, якщо порівняння дає TRUE для будь-якого з рядків, які повертає підзапит”

select kod_robitnyka,adressa from robitnyk where zarplata*100<any

(select cina from zamovlennya );

Exists

Якщо підзапит взагалі повертає якісь значення, то EXISTS підзапит повертає TRUE, a NOT EXISTS підзапит – FALSE.

select full_name,nayavnist_znyzhky from klient where full_name not like 'b%'

and exists (select kod_klienta from zamovlennya where zamovlennya.kod_klienta=klient.kod_klienta );

Not Exists

select full_name as name,nazva_zehu as zeh from zeh where kilkist_robitnykiv <50

and not exists (select nazva_tovaru from zamovlennya where zamovlennya.nazva_tovaru=zeh.nazva_tovaru ) ;

Delete

delete from zamovlennya where kod_klienta<any

(select kod_klienta from klient) ;

Update

update zeh set kilkist_robitnykiv=kilkist_robitnykiv-10 where nazva_tovaru like'%a%' and kod_zehu*10<all

(select kod_klienta from zamovlennya);