- •Вступ до баз даних. Загальна характеристика основних понять
- •1.1. Розвиток основних понять представлення даних
- •Лекція 6
- •Друга стадія концептуального проектування бд. (Моделі даних субд. Представлення концептуальної моделі засобами моделі даних субд)
- •6.1. Представлення концептуальній моделі засобами моделі даних субд
- •6.2 Типові моделі даних субд і представлення концептуальної моделі
- •6.2.1. Мережева модель даних
- •6.2.2. Ієрархічна модель даних
- •6.2.3. Реляційна модель даних
- •6.2.4. Багатовимірна модель даних
- •6.3. Засоби автоматизованого проектування концептуальної моделі
- •Лекція 6
- •Друга стадія концептуального проектування бд. (Моделі даних субд. Представлення концептуальної моделі засобами моделі даних субд)
- •6.1. Представлення концептуальній моделі засобами моделі даних субд
- •6.2 Типові моделі даних субд і представлення концептуальної моделі
- •6.2.1. Мережева модель даних
- •6.2.2. Ієрархічна модель даних
- •6.2.3. Реляційна модель даних
- •6.2.4. Багатовимірна модель даних
- •6.3. Засоби автоматизованого проектування концептуальної моделі
- •Лекція 7
- •Формалізація реляційної моделі
- •7.1. Формалізований опис відношень і схеми відношень
- •7.2. Маніпулювання даними в реляційній моделі
- •7.3. Операції реляційної алгебри
- •Лекція 8
- •Використання формального апарату для оптимізації схем відношень
- •8.1. Проблема вибору раціональних схем відношень
- •8.2. Функціональні залежності (залежності між атрибутами відношення)
- •8.3. Декомпозиція схеми відношення
- •8.4 .Вибір раціонального набору схем відношень шляхом нормалізації
- •8.5. Приклад нормалізації до 3нф
- •8.6. Цілісна частина реляційної моделі. Реалізація умови цілісності даних в сучасних субд
- •Лекція 9
- •Фізичні моделі даних (внутрішній рівень)
- •9.1. Структура пам'яті еом
- •9.2. Представлення екземпляра логічного запису
- •9.3. Організація обміну між оперативною і зовнішньою пам'яттю
- •9.4. Структури зберігання даних у зовнішній пам'яті еом
- •9.4.1. Послідовне розміщення фізичних записів
- •Пошук запису із заданим значенням ключа
- •9.4.2. Розміщення фізичних записів у вигляді спискової структури
- •Пошук запису із заданим значенням ключа
- •9.4.3. Використання індексів (індексування)
- •Пошук і читання запису із заданим значенням ключа
- •Модифікація (коректування) запису
- •Видалення запису
- •Додавання запису
- •9.4.5. Розміщення записів з використанням хешування
- •Пошук запису із заданим значенням ключа і читання
- •Модифікації запису
- •Видалення запису
- •Додавання запису
- •9.4.6. Комбіновані структури зберігання
- •Лекція 10
- •Структура сучасної субд на прикладі Microsoft sql Server 2008
- •10.1 Загальна структура субд
- •10.2. Архітектура бази даних. Логічний рівень
- •Тип даних hierarchyid
- •Просторові типи даних
- •Індекси
- •Представлення
- •Складки
- •Обмеження
- •Правила
- •Значення за замовчуванням
- •10.3. Архітектура бази даних. Фізичний рівень
- •Файли і файлові групи
- •Сторінки і екстенти
- •Сторінки файлів даних
- •Організація таблиць та індексів
- •Управління роботою з екстентами і вільним місцем
- •Відстежування вільного місця
- •Лекція 11
- •Програмне забезпечення роботи з сучасними базами даних
- •11.1. Основні завдання програмного забезпечення баз даних
- •11.2. Проблеми створення і ведення реляційних баз даних
- •11.3. Поняття мови sql і його основні частини
- •11.3.1. Історія виникнення і стандарти мови sql
- •11.3.2. Переваги мови sql
- •11.3.2. Загальна характеристика sql
- •Термінологія
- •Різновиди sql
- •Лекція 12
- •Основні оператори мови sql. Інтерактивний sql
- •12.1. Загальне уявлення про основні оператори мови sql
- •12.2 Інтерактивний режим роботи з sql (інтерактивна sql)
- •12.3. Використання мови sql для вибору інформації з таблиці
- •12.4. Використання sql для вибору інформації з декількох таблиць
- •12.5. Використання sql для вставки, редагування і видалення даних у таблицях
- •Лекція 13
- •Використання мови sql у прикладних програмах
- •13.1. Програмний (вбудований) sql
- •13.2. Статичний sql
- •13.3. Динамічний sql
- •13.4. Інтерфейси програмування додатків (api). Db‑Library, odbc, oci, jdbc
- •Протокол odbc
- •Протокол jdbc
- •Лекція 14
- •Напрями розвитку баз даних
- •Бібліотека db-Library
- •14.1. Об'єктно-орієнтований підхід до організації баз даних
- •Об'єктно-орієнтоване програмування
- •Об'єктно-орієнтовані бази даних
- •Об'єктно-реляційні субд
- •14.2. Розподілені бази даних
- •14.3. Сховища даних
- •Основи криптології
12.4. Використання sql для вибору інформації з декількох таблиць
До цих пір ми розглядали вибір інформації з єдиної таблиці. Можна запрошувати інформацію з декількох таблиць, реалізовуючи описані у відповідному розділі підручника реляційні операції. Варто згадати, що повний розгляд теми виходить за межі наших лекцій. Детально це питання можна вивчити при допомозі, наприклад [5], [23]. Розглянемо деякі приклади того, як це робиться.
Як правило, в тих випадках коли виникає необхідність вибирати інформацію з різних таблиць, вони тим або іншим чином пов'язані одна з іншою, наприклад відношеннями один до багатьох або один до одного по деякому полю.
Ще раз повернемося до наприклад з лекції 8. Розглянемо відповідну ER-діаграму (мал. 12.2.).
Мал. 12.2. Приклад зв'язаних таблиць
У цьому прикладі теж присутні зв'язані таблиці. Розглянемо таблиці student, mark_st та exam_st.
Таблиця mark_st пов'язана з таблицею exam_st по полю id_ex.
Таблиця mark_st пов'язана з таблицею student по полю id_st.
Припустимо, потрібно роздрукувати список студентів з оцінками, які вони отримали на іспитах. Для цього необхідно виконати наступний запит:
SELECT student.surname, mark_st.id_ex, mark_st.mark
FROM student, mark_st
WHERE student.id_st = mark_st.id_st
Відзначимо такі зміни в порівнянні із запитами до однієї таблиці.
У секції FROM вказано дві таблиці.
Оскільки таблиць стала більше однієї, з'явилася деяка неоднозначність при згадуванні полів. Так, у багатьох випадках невідомо, з якої таблиці із списку FROM брати поле. Для усунення неоднозначності імена полів указуються з префіксом – ім'ям таблиці. Ім'я таблиці від імені поля відділяється крапкою.
У реченні WHERE вказана умова з'єднання таблиць.
Неважко відмітити, що використання префіксів-імен таблиць сильно захаращує запит. Для того, щоб уникнути подібного захаращування, використовуються псевдоніми. Так, можна переписати попередній запит таким чином:
SELECT E.surname, M.id_ex, M.mark
FROM student E, mark_st M
WHERE E.id_st = M. id_st
12.5. Використання sql для вставки, редагування і видалення даних у таблицях
Для додавання даних у таблицю в стандарті SQL передбачена команда INSERT. Розглянемо ряд прикладів запитів.
INSERT INTO mark_st
VALUES (1, 2, 5)
Цей запит вставляє в таблицю mark_st рядок, що містить значення, перераховані в списку VALUES. Якщо не потрібно вказувати значення якого-небудь поля, можна присвоїти йому NULL:
INSERT INTO mark
VALUES (1, 2, NULL)
У випадку якщо необхідно використовувати для деяких полів значень за замовчуванням, SQL дозволяє явно вказати, які поля необхідно заповнити конкретними даними, а які – значеннями за замовчуванням:
INSERT INTO mark_st (id_st, id_ex)
VALUES (1, 2)
Для видалення даних з таблиці існує команда DELETE:
DELETE
FROM student
Цей запит видаляє всі дані з таблиці student.
Можна обмежити діапазон інформації, що видаляється, таким чином:
DELETE
FROM student
WHERE surname > 'И'
Для оновлення даних використовується команда UPDATE.
UPDATE mark_st
SET mark = '5'
WHERE id_st = 100 AND id_ex = 10
За допомогою цього запиту оцінка у студента з кодом 100 по іспиту з кодом 10 зміниться на "5".
12.5. Мова SQL і операції реляційної алгебри
Мова SQL є засобом виразу потужного математичного апарату теорії множин і реляційної алгебри. У цій лекції розглядається зв'язок операторів мови SQL з операціями реляційної алгебри і теорії множин.
Операція об'єднання
Засобами мови SQL операція об'єднання представляється таким чином:
SELECT *
FROM A
UNION
SELECT *
FROM B
Операція різниці
Засобами мови SQL операція різниці представляється таким чином:
SELECT *
FROM A
EXCEPT
SELECT *
FROM B
Операція проекції
SELECT Fieldi1 ..., Fieldin
FROM A
Операція вибірки (селекції)
SELECT *
FROM A
WHERE (<condition>)
Операція пересічення
SELECT *
FROM A
INTERSECT
SELECT *
FROM B
Операція з'єднання, еквіз'єднання
SELECT A.Field1, ..., A.Fieldn, B.Field1, ..., B.Fieldm
FROM A, B
WHERE (A.Fieldi Θ B.Field1)
Якщо Θ – операція "=", то це еквіз'єднання.
Операція природного з'єднання
Нехай є відношення A(X1 ..., Xn, A1 ..., Am) та B(X1 ..., Xn, B1 ..., Br).
SELECT A.X1, ..., A.Xn, A.A1, ..., A.Am, B.B1, ..., B.Br
FROM A, B
WHERE (A.X1 = B.X1) AND ... AND (A.Xn = B.Xn)
Короткі підсумки: У лекції дається загальна характеристика операторів мови SQL, використовуваних, зокрема, для роботи з базою даних в інтерактивному режимі (створення таблиць, вибір інформації з таблиць, додавання, видалення і модифікація елементів). Дається поняття інтерактивного режиму роботи з SQL. Розглядаються основні оператори SQL, використовувані для маніпулювання даними (вибір інформації з таблиць, додавання, видалення і модифікація елементів). Наводяться приклади запису запитів до бази даних мовою SQL з використанням операторів select, insert, update, delete. Розглядається зв'язок між операціями реляційної алгебри і операторами мови SQL.
Детальніше матеріали лекції розглядаються в [5]-[11].
