- •1. Програма навчальної дисципліни «Системи управління базами даних»
- •Мета і завдання курсу
- •Міждисциплінарні зв’язки
- •Зміст навчальної дисципліни (відповідно до тематики методичних вказівок)
- •1. Лабораторна робота (0-4 бали):
- •2...Самостійна робота студента (0-5 бали):
- •Критерії оцінювання знань студентів при проведенні підсумкового контролю
- •2. Теоретичні відомості
- •2.1. Основні поняття й визначення
- •2.2. Відмінність sql від процедурних мов програмування
- •2.3. Інтерактивний і вбудований sql
- •2.4. Складові частини sql
- •2.5. Типи даних sql
- •2.5.1. Тип даних «рядок символів»
- •2.5.2. Числові типи даних
- •2.5.3. Дата й час
- •2.5.4. Невизначені або пропущені дані (null)
- •2.6. Використовувані терміни й позначення
- •2.7. Навчальна база даних
- •3.1. Лабораторна робота №1
- •Теоретичні відомості
- •Завдання для самостійної роботи
- •3.2. Лабораторна робота №2
- •Теоретичні відомості
- •Завдання для самостійної роботи
- •3.3. Лабораторна робота №3
- •Теоретичні відомості
- •Завдання для самостійної роботи
- •3.4. Лабораторна робота №4
- •Теоретичні відомості
- •Завдання для самостійної роботи
- •3.5. Лабораторна робота №5
- •Теоретичні відомості
- •Завдання для самостійної роботи
- •3.6. Лабораторна робота №6
- •Теоретичні відомості
- •Завдання для самостійного виконання
- •3.7. Лабораторна робота №7
- •Теоретичні відомості
- •Завдання для самостійного виконання
- •3.8. Лабораторна робота №8
- •Теоретичні відомості
- •Завдання для самостійної роботи
- •3.9. Лабораторна робота №9
- •Теоретичні відомості
- •Завдання для самостійної роботи
- •3.10. Лабораторна робота № 10
- •Теоретичні відомості
- •Завдання для самостійної роботи
- •3.11. Лабораторна робота №11
- •Теоретичні відомості
- •Завдання для самостійної роботи
- •Список рекомендованої літератури
Завдання для самостійної роботи
1. Напишіть запит з EXISTS, що дозволяє вивести дані про всіх студентів, що навчаються у вузах, які мають рейтинг вище 300
2. Напишіть попередній запит, використовуючи з'єднання.
3. Напишіть запит з EXISTS, що вибирає відомості про всіх студентів, для яких у тому ж місті, де живе студент, існують університети, у яких він не вчиться.
4. Напишіть запит, що вибирає з таблиці SUBJECT дані про назви предметів навчання, екзамени з яких здані більш ніж одним студентом.
3.9. Лабораторна робота №9
Тема: Оператори порівняння з множиною значень IN, ANY, ALL
Мета роботи: набути практичні навички використання операторів порівняння з множиною значень IN, ANY, ALL при роботі з реляційною базою даних.
Порядок виконання роботи
1. Ознайомитися з теоретичними положеннями до лабораторної роботи.
2. Виконати всі наведені приклади в середовище СУБД ACCESS.Для цього необхідно:
завантажити СУБД ACCESS;
виконати режим відкриття бази даних «ВНЗ SQL»;
у вікні БД «ВНЗ SQL» вибрати вкладку «Запити»;
в діалоговому вікні вказати режим «Додати таблицю» і вибрати необхідні дані;
на панелі інструментів вибрати пункт меню «Вид» і вказати режим роботи SQL;
в поточному діалоговому вікні ввести текст запиту в форматі SQL;
виконати введений запит, для чого натиснути кнопку «Запуск» (!) на панелі інструментів;
отриманий результат виконання запиту занести в звіт та перевірити на відповідність умовам прикладу;
зберегти створений запит, надавши йому власне ім’я.
3. Виконати індивідуальне завдання (дивись завдання для самостійної роботи). Номери індивідуальних завдань видаються викладачем.
4. Результати виконання індивідуальних завдань занести у звіт.
5. Захистити звіт.
Теоретичні відомості
Оператори порівняння з множиною значень мають наступний зміст.
IN |
Дорівнює кожному зі значень, отриманих у внутрішньому запиті. |
NOT IN |
Не дорівнює жодному зі значень, отриманих у внутрішньому запиті. |
= ANY |
Те ж, що й IN. Відповідає логічному оператору OR. |
> ANY, > = ANY |
Більше, ніж (або більше або дорівнює) будь-яке отримане число. Еквівалентно > або > = для найменшого отриманого числа. |
< ANY, < = ANY |
Менше, ніж (або менше або дорівнює) будь-яке отримане число. Еквівалент < або < = для найбільшого отриманого числа. |
= ALL |
Дорівнює всім отриманим значенням. Еквівалентно логічному оператору AND |
> ALL, > = ALL |
Більше, ніж (або більше або дорівнює) всі отримані числа. Еквівалент > або > = для найбільшого отриманого числа. |
<ALL, < = ALL |
Менше, ніж (або менше або дорівнює) всі отримані числа. Еквівалентно < або < = найменшого отриманого числа |
Варто мати на увазі, що в деяких СУБД підтримуються не всі із цих операторів.
Приклад 1. Вибрати відомості про студентів, що проживають у місті, де розташований університет, у якому вони вчаться.
SELECT *
FROM STUDENT S
WHERE CITY = ANY
(SЕLECT CITY
FROM UNIVERSITY U
WHERE U.UNIV_ID = S.UNIV_ID);
Приклад 2. Виконати інший варіант цього запиту.
SELECT *
FROM STUDENT S
WHERE CITY IN
(SELECT CITY
FROM UNIVERSITY U
WHERE U.UNIV_ID = S. UNIV_ID) ;
Приклад 3. Вибрати дані про ідентифікатори студентів, у яких оцінки перевищують величину, принаймні, однієї з оцінок, отриманих ними ж 6 жовтня 2008 року.
SELECT DISTINCT STUDENT_ID
FROM EXAM_MARKS
WHERE MARK > ANY
(SELECT MARK
FROM EXAM_MARKS
WHERE EXAM DATE = '06/10/2008')
Оператор ALL, як правило, ефективно використовується з нерівностями, а не з рівностями, оскільки значення дорівнює всім, котре повинне вийти в цьому випадку в результаті виконання підзапиту, може мати місце, тільки якщо всі результати ідентичні. Така ситуація практично не може бути реалізована, тому що, якщо підзапит генерує множину різних значень, то ніяке одне значення не може бути рівним відразу всім значенням у звичайному сенсі. В SQL вираз < > ALL реально означає нерівно жодному з результатів підзапиту.
Приклад 4. Напишіть підзапит, що вибирає дані про назви всіх університетів з рейтингом більше високим, чим рейтинг будь-якого університету Вінниці:
SELECT *
FROM UNIVERSITY
WHERE RATING > ALL
(SELECT RATING
FROM UNIVERSITY
WHERE CITY = 'Вінниця' ) ;
Приклад 5. У цьому запиті замість ALL можна використати ANY (проаналізуйте, як у цьому випадку зміниться зміст наведеного запиту):
SELECT *
FROM UNIVERSITY
WHERE NOT RATING > ANY
(SELECT RATING
FROM UNIVERSITY
WHERE CITY = 'Вінниця');
Використання COUNT замість EXISTS
При відсутності NULL-значень оператор EXISTS може бути використаний замість ANY і ALL. Також замість EXISTS і NOT EXISTS можуть бути використані ті ж самі підзапити, але з використанням COUNT(*) в конструкції SELECT.
Приклад 6. Виконати запит:
SELECT *
FROM UNIVERSITY A
WHERE NOT EXISTS
(SELECT *
FROM UNIVERSITY В
WHERE A.RATING > = B.RATING
AND B.CITY = 'Миколаїв');
Приклад 7. Виконати запит, який може бути представлений в наступному вигляді:
SELECT *
FROM UNIVERSITY A
WHERE 1 >
(SELECT COUNT(*)
FROM UNIVERSITY В
WHERE A.RATING > = B.RATING
AND B.CITY = 'Миколаїв');
