- •Загальні відомості
- •Поняття відношень
- •Реляційна база даних „успішність”
- •Операції реляційної алгебри
- •Теоретико-множинні операції ра
- •Операції, властиві тільки ра
- •Реляційне числення
- •Квантор існування. З'єднання
- •Квантор загальності. Ділення
- •Типи даних
- •Створення простого запиту в sql
- •Групування даних
- •Багатотабличні запити
- •Природне з'єднання
- •Тета-з'єднання
- •Зовнішнє з'єднання
- •Використання оператора join в інструкції from
- •Операції реляційної алгебри в sql-92
- •Підзапити у sql
- •Способи включення підзапиту в запит
- •Особливості синтаксису включення підзапиту
- •Підзапит в цільовому списку
- •Підзапити в інструкції where. Некорельований підзапит
- •Корельовані підзапити
- •Квантор існування в підзапитах
- •Оператори all, any, some
- •Оператори модицікації даних
- •Мова опису даних
- •Представлення
- •Висновок
- •Лабораторний практикум Лабораторна робота № 1
- •Лабораторна робота № 2
- •Контрольні завдання по sql
- •Бібліографічний список
Реляційне числення
Операції РЧ, так само, як і операції РА, маніпулюють реляційними таблицями, але синтаксис операцій позбавлений звичного оператора присвоєння, що відокремлює результуючі відношення від операндів і параметрів операції. Запит в РЧмістить дві головні складові, якілежатьв {} і розділені «:»
{цільовий список: визначаючий вираз}.
Цільовий Список- визначає атрибути результуючого відношення.
Визначаючий Вираз- умови, що обмежують входження елементів у відношення.
6-в-одному: операції об'єднання, перетину, різниці, добутку, вибірки, проекції
Запит.Хто зі студентів проживає за адресою А2?
Рішення. {r.СПрізв: r IN СТУДЕНТ AND r.САдреса= 'А2'}.
Подібний запит містить майже всі конструкції синтаксису РЧ. Розглянемо їх докладніше.
• {}. Фігурні дужки позначають, що відповіддю на запит будеМНОЖИНАзначень даних. Що саме входить уцю множинупояснюється в дужках.
• Цільовий список. У нашому випадку це вираз r.СПрізв, де r-змінна, що позначає довільну рядок таблиці, ім'я якої визначається у визначальному вираженні. Ми будемо позначати рядки-змінні маленькими латинськими літерами - r, s, p, q ...
• Визначальний вираз. У нашому випадку це вираз r IN СТУДЕНТ AND r.САдреса= 'А2'. Розглянемо його складові частини.
• rIN СТУДЕНТ. Оператор IN - визначає ім'я відношення, з якого беруться рядки r.
• r.САдреса= 'А2'. Умова, за якою відбираються записи в результуюче відношення. Умова будується за допомогою стандартних операцій логіки AND, OR, NOT, шести операцій порівняння (=,! =,>,> =, <, <=) І оператора IN.
Таким чином, розглянутий приклад демонструє запис операцій вибірки SELECT і створення проекцій. Крім того, з розглянутих вже конструкцій можна отримати і всі аналоги теоретико-множинних операцій. Обговоримо це коротко на вже знайомих нам прикладах. Відзначимо, що таблиці повинні бути об'єднувально-сумісними.
Об'єднання
Запит. Отримати список всіх студентів на основі відношень КОНСУЛЬТАНТ і КОНСУЛЬТОВАНИЙ.
Рішення. {r.ID_Stud, г.СПрізв, г.САдреса: r IN КОНСУЛЬТОВАНИЙ ОR r IN КОНСУЛЬТАНТ}.
Оскільки результати запитів будуть збігатися з відношеннями, що виходять в результаті виконання відповідних операцій РА, ми не будемо зупинятися на конкретних прикладах.
Перетин
Запит.Визначити, хто з студентів консультується, сам будучи консультантом.
Рішення.{r.ID_Stud,r.СПрізв,r.САдреса:rINКОНСУЛЬТОВАНИЙ ANDrINКОНСУЛЬТАНТ}.
Різниця
Запит.Визначити, хто з студентів консультується, сам НЕ будучи консультантом.
Рішення.{r.ID_Stud,r.СПрізв,r.САдреса:rINКОНСУЛЬТОВАНИЙ ORrNOTINКОНСУЛЬТАНТ}. І знову А-В <> В-А.
Запит.Визначити, хто з студентів консультує, але сам НЕконсультується.
Рішення. {r.ID_Stud, r.СПрізв, r.САдреса: r NOT IN КОНСУЛЬТОВАНИЙ OR r IN КОНСУЛЬТАНТ}.
Множення
Запит.Данідві РТ: А = <Х, У>; В = <W,Z>
Рішення. {r.X, r.Y, s.W, s.Z: r IN А AND s IN B}.
Квантор існування. З'єднання
Для введення двох залишившихся операцій в РЧ розглядаються два квантори.
Квантор Існування (ЕХІSTS) - вираз РЧ, що означаєіснуванняХОЧА Б ОДНОГОрядка, що задовольняє умовівизначаючоговираза.
Квантор існування дозволяє розглядати кілька пов'язаних відносин, причому в його термінах передбачено і природне, і зовнішнє, і тета-з'єднання. Розглянемо приклади.
Природне з'єднання
Запит. Хто здавав курс К1?
Рішення. Побудову запиту виконаємо поетапно.
• На питання ХТО? необхідно шукати кортежі у відношенні СТУДЕНТ. Тому цільовий список повинен містити атрибути з цього відношення, а визначаючий вираз - оператор приналежності кортежів до Студент, наприклад, так:
{r.ID_Stud, r.СПрізв: r IN СТУДЕНТ ...}
• Інформація про здані курси міститься у відношенні УСПІШНІСТЬ. При цьому в результуюче відношення буде включатисЬ інформація про студентів, для яких існує хоча б один кортеж в УСПІШНОСТІ. Умова існування задається одноіменнім квантором EXISTS, за яким слідує умова з'єднання, яка вказується, як у випадку природного, так і тета-з'єднання: {r.ID_Stud, r.СПрізв: r IN СТУДЕНТ AND EXISTS s IN УСПІШНІСТЬ
(s.ID_Stud = r.ID_Stud ...)}.
• І нарешті, необхідно додати вибірку по курсу К1. В результаті будемо мати наступний вираз РІ: {r.ID_Stud, r.СПрізв: r IN СТУДЕНТ AND EXISTS s IN
УСПІШНІСТЬ (s.ID_Stud = r.ID_Stud AND s.ID_Subj = 'K1'}.
Слід зазначити, що дослідження кортежів на предмет розміщення їх у результуюче відношення починається з першого кортежу відношення СТУДЕНТ (його значення тимчасово присвоюється змінної r), для r шукається відповідний (по ID_Stud) кортеж s відносно успішності. Якщо такий кортеж знайдений, то він перевіряється на задоволення умові. Якщо ж і з цим все в порядку, то потрібні атрибути поточного кортежу СТУДЕНТ'а поміщається в результуюче відношення, якщо ж умова не виконується, то пошук переходить до наступного кортежу в Успішності, значення якого тепер пишеться в s. Якщо перегляд всього відношення УСПІШНІСТЬ завершений і або кортеж s, відповідний r, не знайдений, або жоден із виявлених кортежів не має номером курсу К1, то кортеж r в результуюче відношення не поміщається.
Приклад запиту до декількох зв'язаних відношень.
Запит. Хто здавав вищу математику за 1 семестр?
Рішення. {r.ID_Stud, r.СПрізв: r IN СТУДЕНТ AND EXISTS s IN УСПІШНІСТЬ (s.ID_Stud = r.ID_Stud AND s.Семестр = '1 'AND EXISTS t IN КУРС (t.ID_Subj = s.ID_Subj AND t.Найменування = 'Вища математика '))}.
Тета-з'єднання
Запит. Ідентифікувати студентів, чий консультант Андреєва А.А.
Рішення. {r.ID_Stud, r.СПрізв: r IN СТУДЕНТ AND EXISTS s IN СТУДЕНТ (s.ID_Stud = r.Консультант AND s.СПрізв = 'Андреєва А.А.')}.
Зовнішнє з'єднання
Зовнішнє з'єднання виконується в рамках квантора існування також природно.
Запит. Приєднати інформацію про успішність до інформації про студентів.
Рішення. {r.ID_ Stud, r.СПрізв, r.САдреса, r.Консультант, s.ID_ Subj, s.Семестр, s.Оцінка : r IN СТУДЕНТ OR EXISTS s IN УСПІШНІСТЬ (s. ID_Stud = r.ID_Stud)}.