НОУ ІНТУЇТ | лекція | Основні оператори мови SQL. інтерактивний SQL
- 12.4. Використання SQL для вибору інформації з декількох таблиць До сих пір ми розглядали вибір...
- 12.5. Мова SQL і операції реляційної алгебри
- операція об'єднання
- операція різниці
- операція проекції
- Операція вибірки (селекції)
- операція перетину
- Операція з'єднання, еквісоедіненія
- Операція природного з'єднання
12.4. Використання SQL для вибору інформації з декількох таблиць
До сих пір ми розглядали вибір інформації з єдиною таблиці. Можна запитувати інформацію з декількох таблиць, реалізуючи описані у відповідному розділі підручника реляційні операції. Варто згадати, що повне розгляд теми виходить за рамки даного підручника. Детально це питання можна вивчити за допомогою, наприклад, [ [3.1] , [11.2] ]. Розглянемо деякі приклади того, як це робиться.
Як правило, в тих випадках коли виникає необхідність вибирати інформацію з різних таблиць, вони тим чи іншим чином пов'язані один з одним, наприклад відносинами один до багатьох або один до одного по деякому полю.
Ще раз повернемося до прикладу з "Фізичні моделі даних (внутрішній рівень)" . Розглянемо відповідну 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:
Цей запит видаляє всі дані з таблиці student.
Можна обмежити діапазон видаляється наступним чином:
DELETE FROM student WHERE surname> 'І'
Для поновлення даних використовується команда UPDATE.
UPDATE mark_st SET mark = '5' WHERE id_st = 100 AND id_ex = 10
За допомогою цього запиту зміниться на "5" оцінка у студента з кодом 100 по іспиту з кодом 10.
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
Операція з'єднання, еквісоедіненія
якщо - операція "=", то це еквісоедіненія.
Операція природного з'єднання
Нехай є відносини 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.
Більш докладно матеріали лекції розглядаються в [ [3.1] - [5.4] ].