Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
prak_7_OK_15.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
234.5 Кб
Скачать

8

Практична роботи № 7

Тема: Вибірка даних з кількох таблиць

Мета: Навчитися будувати складні запити на вибирання даних з кількох таблиць. Навчитися об’єднувати запити та отримувати з бази даних необхідну інформацію.

1 Теоретичні відомості

Вибирання даних з кількох таблиць. При написанні запитів часто потрібна інформація для вибирання даних з кількох таблиць. Для цього таблиці необхідно зв’язати. Зв’язок — це відповідність між рядками двох таблиць; зв’язок між таблицями встановлюється по значеннях полів (тобто таблиці не можуть бути зв’язані "взагалі", вони обов’язково зв’язуються по деяких значеннях полів). Вибір полів, по яких проводиться зв’язування, визначає тип зв’язку: Є три типи зв’язків між таблицями:

    • один до багатьох;

    • багато до багатьох;

    • один до одного.

Найпоширенішим є зв’язок один до багатьох.

Для об’єднання таблиць по полях table1.id і table2.i d використовується оператор:

SELECT * FROM table1,table2 WHERE table1.id і = table2.id;

Приклади таблиць і запиту на їх зв’язок. Для прикладу розглянемо дві таблиці:

    • ГРУПА (КодГрупи, НаваГрупи, Курс, ЧислоСтудентів, ПрізвищеКуратора, ІмяКуратора);

    • СТУДЕНТИ(Код_Студента Прізвище_Студента Ім’я_Студента Код_Групи).

В таблиці ГРУПА первинним ключем є поле Код групи, а в таблиці СТУДЕНТИ – поле Код_Студента. Створимо структури цих таблиць:

Перевірка структур створених таблиць:

Наповнення таблиць:

Для реалізації зв’язку таблиці СТУДЕНТИ вчаться в групі (таблиця ГРУПИ) використовується команда:

SELECT * FROM СТУДЕНТИ, ГРУПИ

WHERE СТУДЕНТИ. Код_Групи = ГРУПИ. КодГрупи;

Запити на зв’язок таблиць по полях СТУДЕНТИ. Код_Групи і ГРУПИ. Код групи і результати їх виконання:

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

    • В виразі FROM вказані дві таблиці, так як запит буде одержувати інформацію з обох.

    • При об’єднанні інформації з декількох таблиць необхідно вказати, як рядки одної таблиці зв’язується з записами другої. Це просто, так як в обох таблицях є стовпець з іменами. Тут вираз WHERE використовується для співставлення записів з двох таблиць по значенням імен.

    • Так як стовпець Т1 присутній в обох таблицях, то потрібно явно вказати, яку таблиця мається на увазі. Це можна зробити, уточнивши поле іменем таблиці з іменем стовпця.

Таблицю також можна об’єднати саму з собою

mysql> SELECT p1.name, p1.sex, p2.name, p2.sex, p1.species

-> FROM t_name AS p1, t_name AS p2

-> WHERE p1.species = p2.species AND p1.sex = "f" AND p2.sex = "m";

+--------+------+--------+------+---------+

| name | sex | name | sex | species |

+--------+------+--------+------+---------+

| Fluffy | f | Claws | m | cat |

| Buffy | f | Fang | m | dog |

| Buffy | f | Bowser | m | dog |

+--------+------+--------+------+---------+

В запиті вказуються псевдоніми імен таблиці, для звернення до стовпців і визначення, до якої з таблиць відноситься кожне посилання на стовпець.

Тепер можливо виконати запит з об'єднанням цих двох таблиць із ключем id (Всі небілі футболки, що належать людям, чиї імена починаються з 'Lilliana'):

SELECT s.* FROM persons p, shirts s

WHERE p.name LIKE 'Lilliana%'

AND s.owner = p.id

AND s.color <> 'white';

+---+------+---------+--------+

| id | style | color | owner |

+---+------+---------+--------+

| 4 | dress | orange | 2 |

| 5 | polo | red | 2 |

| 6 | dress | blue | 2 |

+---+-------+--------+--------+

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]