
- •Практичні завдання
- •2.Робота із запитами Теоретичні відомості
- •Практичні завдання
- •3. Функції маніпулювання даними Теоретичні відомості
- •Практичні завдання
- •Теоретичні відомості
- •Практичні завдання
- •5. Об’єднання таблиць Теоретичні відомості
- •Практичні завдання
- •7. Представлення Теоретичні відомості
- •Практичні завдання
- •8. Індекси. Зовнішній ключ Теоретичні відомості
- •Практичні завдання
- •9. Транзакції Теоретичні відомості
- •Практичні завдання
- •10. Проектування власної бази даних MySql
5. Об’єднання таблиць Теоретичні відомості
При нормалізації БД створюється багато таблиць. При вибірці даних з БД часто потрібні дані містяться в кількох таблицях, пов'язаних між собою за допомогою спільних полів і відношень між ними. Для того, щоб виорати дані з кількох таблиць і мати можливість використовувати при цьому засоби SQL для обробки даних (фільтрації, пошуку, групування, використання агрегатних функцій тощо) використовують об єднання кількох таблиць в одну, згідно з певними критеріями. Результат об’єднання існує тільки yfмомент виконання запиту.
Повне ім’я стовпця складається з імені таблиці і власне імені стовпця, яке пишеться після імені таблиці і відділяється від нього крапкою. Наприклад:
Students,courseFaculty,Name Speciality.ID
При виборі однієї таблиці в іменах стовпців не вказують імені таблиці — джерела даних. При об’єднанні таблиць часто трапляється, що різні таблиці мають поля з однаковими іменами. Щоб СУБД могла розрізнити такі поля, при виконанні запиту слід використовувати повне ім’я поля.
Об’єднання таблиць дозволяє робити конструкція JOIN. Вона може мати один з таких форматів:
SELECT
FIELD [,... n]
FROM
Table1
{INNER | {LEFT | RIGHT | FULL} OUTER | CROSS } JOIN
Table2
ON <condition>
або при перехресному з’єднанні (CROSS JOIN)
SELECT
FIELD [,... n]
FROM
Table1,
Table2
Практичні завдання
Примітка. Завдання виконувати в базі даних univer.
Додати в таблицю specialityнове поле faculty_id.
Перейти до БД univer, та прописати SQL запит, щоб додати нове поле у таблицю
ALTER TABLE `speciality` ADD `faculty_id` INT(10) NOT NULL
За повнити поле faculty_id відповідно до факультетів.
Щоб заповнити поле faculty_id відповідно до факультетів, використовуємо UPDATE та вносимо SQL-запит:
UPDATE `univer`.`speciality` SET `faculty_id` = '1' WHERE `speciality`.`id` =1
UPDATE `univer`.`speciality` SET `faculty_id` = '2' WHERE `speciality`.`id` =2
UPDATE `univer`.`speciality` SET `faculty_id` = '3' WHERE `speciality`.`id` =3
UPDATE `univer`.`speciality` SET `faculty_id` = '4' WHERE `speciality`.`id` =4
UPDATE `univer`.`speciality` SET `faculty_id` = '5' WHERE `speciality`.`id` =5
UPDATE `univer`.`speciality` SET `faculty_id` = '6' WHERE `speciality`.`id` =6
UPDATE `univer`.`speciality` SET `faculty_id` = '7' WHERE `speciality`.`id` =7
До таблиці faculty додати новий факультет.
Так як у нас записаний точний шлях до таблиць, SQL-запит ми можемо виконувати будь звідки.
INSERT INTO `univer`.`faculty` (`id`,`name`) VALUES ('4', 'Юридичний факультет');
До таблиці speciality додати за допомогою SQL-запиту нову спеціальність не пов’язану із жодним факультетом.
Щоб додати нову спеціальність і щоб вона не була пов’язана із жодним факультетом, використовуємо INSERT
INSERT INTO `univer`.`speciality` (`id`,`name`) VALUES ('8', 'Конструкція літаків');
Із таблиць students та faculty,бази даних univer, вивести список студентів, що складається з двох полів: імені студента і факультету, на якому він навчається.
Ввійти до БД univer та у пункті меню SQL записати таке:
SELECT students.name, faculty.name
FROM `students`
INNER JOIN `faculty` ON students.faculty_id=faculty.id
Із таблиць students та speciality вивести список студентів, що складається з двох полів: імені студента і спеціальності, на якій він навчається.
Майже так само виконуємо як і попереднє завдання, тільки заміняємо факультет на спеціальність.
SELECT students.name, speciality.name
FROM `students`
INNER JOIN `speciality` ON students.speciality_id=speciality.id
Із таблиць faculty та speciality вивести всю інформацію, почерзі використовуючи наступні запити:
1
2
3
4
5
6
7
Зробити висновки про отримані результати та роботу оператора join.
Функція join дозволяє зменшити обєм даних при необхідності вибірки з декількох таблиць бо дозволяє задати умови за якими повязуються дані з цих таблиць відтворюючи таким чином звязки кортежів у базі даних.