You are on page 1of 7

МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ

ОДЕСЬКИЙ НАЦІОНАЛЬНОИЙ ПОЛІТЕХНІЧНИЙ УНІВЕРСИТЕТ

Інститут комп`ютерних систем

Кафедра інформаційних систем

Звіт

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

З дисциплін “Організація баз даних”

Виконала:

студентка групи АІ-191У

Савіцька Ю. О.

Перевірили:

Глава М. Г.

Одеса – 2020
Структура звіту до лабораторної роботи

1. Опис завдання.
2. Завдання
2.1 Постановка задачі, що вирішується.
2.2 SQL-код рішення.
2.3 Скриншот отриманого результату.
3. Висновки

1. Опис завдання.

Запишіть SQL-запити (мінімум 8) з використанням підзапитів для


маніпулювання даними з таблиць, що створені у лабораторній роботі 1. В роботі
обов’язково відобразити використання наступних операторів та конструкцій:

1) спеціальних операторів умови (ANY, ALL, EXISTS);

2) операторів порівняння;

3) оператора IN;

4) зв’язані підзапити;

5) з секцією WITH;

6) підзапит для реалізації будь-якої операції модифікації даних (insert, update або
delete).
2. Завдання

1. Дістаємо всі дані з таблиці, якщо ідентифікатор рядка присутня в підзапиті


(вибираємо ідентифікатор ПІБ, якщо по-батькові відповідає умові 'Olegovna',
'Olegovich', 'Borisovna', 'Borisovich', а ім'я відповідає умові 'Oleg', 'Vasya', 'Katya').

select * from full_name where id_full_name = any

(select full_name from client where patronymic in ('Olegovna', 'Olegovich', 'Borisovna',


'Borisovich') and t_name in ('Oleg','Vasya', 'Katya'));

2. Вибираємо всі дані з таблиці терміну, де кожен день буде більше, ніж підзапит
(вибираємо день, якщо рік = 2021му) і місяць більше або дорівнює, ніж підзапит
(вибираємо місяць якщо рік = 2021му).

select * from term where t_day > all

(select t_day from term where t_year = 2021) and

t_month >= all

(select t_month from term where t_year = 2021);

3. Якщо має місце, що за умови, якщо ми знайшли хоча-б когось, хто задовольняє
умові підзапиту (вибираємо тип депозиту з таблиці відкриті депозити, за умови
що, початкова дата більше або дорівнює 11 дню, 5му місяця, 2010 році), то ми
виводимо всі рядки.
Ми хочемо отримати всі дані про типи депозиту, якщо хоча б один тип депозиту з
відкритих депозиту має стартову дату більше або дорівнює '2010-05-11'.

select * from type_of_deposit

where EXISTS

(select type_of_deposit from opened_deposits

where start_date >= '2010-05-11');

4. Хочемо отримати усі рядки, де адреса більше 0, и при цьому в адресі повинен
бути дім з номером 155.

select * from client where client.address > 0 and client.address IN

(select id_address from address where num_house = 155);


5. Хочемо отримати усі імена і прізвища клієнтів, у котрих існує нормальний
номер телефону, щоб їх обзвонити і запропонувати нову добру пропозицію.

SELECT t_name, t_surname FROM full_name

WHERE '0' NOT IN

(SELECT phone_numer FROM client);

6. Вибрати ім'я і прізвище кожного клієнта, у яких, номер паспорта відповідає


певному регулярному виразу, що в паспорті повинно бути обов'язково тільки 5
будь-яких цифр.

WITH is_pass AS

(SELECT * from client where passp_number SIMILAR TO '[0-9]{5}')

select t_name, t_surname from full_name, is_pass

where full_name = id_full_name;


7. Оновлюємо стартову дату відкритого депозиту клієнтів або клієнта, у якого
номера паспорта відповідає нашому запиту (в нашому випадку 'hgr23rtyhg').

Початкові дані:

Запит:

update opened_deposits SET start_date = '2010-06-11'

where client in

(SELECT client from opened_deposits

where client = ANY(select id_client from client where passp_series = 'hgr23rtyhg' )

);

Результат оновлення:
8. Видалити строку из таблиці ПІБ, якщо поле прізвище об’єкта (строки) не
заповнено.

Початкові дані:

Запит:

delete from full_name

where id_full_name >=

(select id_full_name from full_name where patronymic IS NULL) ;

Результат видалення:

3. Висновки

У цій частина лабораторної роботи ми ознайомилися з процесом створення


підзапитів до таблиць. Використовували підзапити з використанням операторів
порівняння, зв’язані підзапити, спеціальних операторів, з секцією WITH. Проблем
з вирішенням лабораторної роботи не виникало.

You might also like