Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Чичкань.docx
Скачиваний:
6
Добавлен:
01.05.2025
Размер:
2 Мб
Скачать
☆
      1. 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

Відзначимо такі зміни в порівнянні із запитами до однієї таблиці.

  1. У секції FROM вказано дві таблиці.

  2. Оскільки таблиць стала більше однієї, з'явилася деяка неоднозначність при згадуванні полів. Так, у багатьох випадках невідомо, з якої таблиці із списку FROM брати поле. Для усунення неоднозначності імена полів указуються з префіксом – ім'ям таблиці. Ім'я таблиці від імені поля відділяється крапкою.

  3. У реченні WHERE вказана умова з'єднання таблиць.

Неважко відмітити, що використання префіксів-імен таблиць сильно захаращує запит. Для того, щоб уникнути подібного захаращування, використовуються псевдоніми. Так, можна переписати попередній запит таким чином:

SELECT E.surname, M.id_ex, M.mark

FROM student E, mark_st M

WHERE E.id_st = M. id_st

      1. 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".

      1. 12.5. Мова SQL і операції реляційної алгебри

Мова SQL є засобом виразу потужного математичного апарату теорії множин і реляційної алгебри. У цій лекції розглядається зв'язок операторів мови SQL з операціями реляційної алгебри і теорії множин.

          1. Операція об'єднання

Засобами мови SQL операція об'єднання представляється таким чином:

SELECT *

FROM A

UNION

SELECT *

FROM B

          1. Операція різниці

Засобами мови SQL операція різниці представляється таким чином:

SELECT *

FROM A

EXCEPT

SELECT *

FROM B

          1. Операція проекції

SELECT Fieldi1 ..., Fieldin

FROM A

          1. Операція вибірки (селекції)

SELECT *

FROM A

WHERE (<condition>)

          1. Операція пересічення

SELECT *

FROM A

INTERSECT

SELECT *

FROM B

          1. Операція з'єднання, еквіз'єднання

SELECT A.Field1, ..., A.Fieldn, B.Field1, ..., B.Fieldm

FROM A, B

WHERE (A.Fieldi Θ B.Field1)

Якщо Θ – операція "=", то це еквіз'єднання.

          1. Операція природного з'єднання

Нехай є відношення 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].