- •Varchar [(длмня)], char varying [(длина)],
- •Числовые типы данных
- •Дата и время
- •Неопределенные или пропущенные данные (noll)
- •Используемые термины и обозначения
- •Команды манипулирования данными
- •3.2. Использование подзапросов в insert
- •Создание таблиц базы данных
- •Создание объектов базы данных
- •Зміна структури таблиці
- •Внимание
- •Зміна структури таблиць
- •Заняття 4. Вставка записів у таблиці
- •Ограничение not null
- •2.4. Листинг 2.4. Команда создания таблицы Orders
- •Перегляд окремих записів та окремих полів у таблиці
- •Використання кількох умов відбору записів
- •Ітоги . Що ми узнали про перегляд даних у таблицях
- •Лекція на тему: Оновлення та вилучення записів в субд MySql.
- •3.2. Использование подзапросов в insert
- •Вилучення записів з таблиць
- •Лекція на тему: Вибірка даних з субд MySql.
- •Просте об'єднання двох таблиць
- •Самостійно.
- •Об'єднання трьох і більше таблиць
- •Об'єднання таблиць за остачею
- •Підсумок
- •Лекція на тему: Групування даних. Запити з обчисленнями.
- •Обчислення середнього значення: функція avg
- •Підрахунок кількості записів: функція count
- •Підрахунок суми значень: функція sum()
- •Пошук найбільшого та найменшого значення: функції max та min
Самостійно.
Створіть і виконайте запит: Список всіх замовлень клієнта Петренка.
Створіть і виконайте запит: Повний список книг з назвами та анотаціями. Вказівки. Цей запит повинен об'єднувати дані з двох таблиць - books та book_reviews. З таблиці books виберіть поле books . title, а з таблиці book_reviews- поле book_reviews.review.
Умова об'єднання таблиць - books . ISBN=book_reviews . ISBN
Отже, запит має бути таким
select books.title, book_reviews.review from books, book_reviews where books.ISBN=book_reviews.ISBN;
Створіть і виконайте запит: Список авторів, книги яких були замовлені лише по одному екземпляру.
Вказівки. Запит повинен об'єднувати дані з таблиць books та order_items. З таблиці books необхідно вибрати поле books . author, а з таблиці book_reviews - поле order_items . quantity Умова об'єднання таблиць: books . ISBN = order_ і terns . ISBN and order_items.quantity=l
Отже, запит має бути таким
select books.author, order_items.quantity from books, order_items where books.ISBN=order_items.ISBN and order_iterns.quantity=l ;
cтворіть і виконайте запит: Перелік дат, коли клієнт на прізвище "Петренко" замовляв книги.
Об'єднання трьох і більше таблиць
Об’єднання трьох і більше таблиць виконують у двох випадках:
коли необхідно вибрати дані одночасно з двох таблиць, які не мають безпосереднього прямого зв'язку через однойменні ключові поля, але вони зв'язані між собою через одну або декілька інших таблиць;
коли необхідно вибрати дані з трьох і більше таблиць одночасно.
Об'єднання трьох і більше таблиць виконується аналогічно простому об'єднанню двох таблиць. Головне правило; таблиці треба об'єднувати попарно через однойменні ключові поля, враховуючи умови об'єднання.
► Приклад. Нехай необхідно одержати список клієнтів, які замовляли книгу по FoxPro.
1. Зверніться до схеми зв'язків між таблицями. Згідно цієї схеми, для побудови такого запиту необхідно об'єднати дані з таблиць customers та books. З таблиці customers необхідно буде вибрати поле customers . name, яке містить імена клієнтів, а з таблиці books - поле books, title, яке містить назви книг.
Отже, запит має починатися такою інструкцією:
select customers.name, books.title
……………………………..
Зауваження. Поле books, title не обов'язково виводити на монітор. Тому початок запиту може бути таким:
select customers.name
2. Зі схеми зв'язків можна побачити, що таблиці customers та books не можна об'єднати безпосередньо тому, що між ними не має прямого зв'язку - вони зв'язані між собою через таблиці orders та order items. Тобто, для побудови запиту необхідно виконати об'єднання чотирьох таблиць, а саме: customers , orders, order_ items та books.
Продовження інструкції запиту:
……………………..
from customers, orders, order_items, books
……………………………..
3. Таблиці об'єднуються попарно через однойменні ключові поля. Крім того, з останньої таблиці books необхідно вибрати лише ті книги, у назві яких міститься слово "FoxPro".
Тому інструкція на запит завершується такою умовою об'єднання:
………………………………
where customers.customerID=orders.customerlD and orders.orderID=order items.orderlD and order_items.ISBN=books.ISBN and books.title like "%FoxPro%";
Повний текст інструкції на запит: select customers.name
from customers, orders, order_items, books
where customers.customerID=orders.customerlD
аnd orders . orderID=order_items . orderlD
and order_items.ISBN=books.ISBN
and books.title like "%FoxPro%";
Ця інструкція вибирає з бази даних імена лише тих клієнтів, хто замовляв книгу no FoxPro.
Виконайте інструкцію на запит, створену у попередньому прикладі. Результат запиту має бути таким:
I name І
1 Иван Иваненко ! І !
!Сидор Сидоренко !
2 rows in set (0.22 sec)
Ознайомтеся з інструкцією і виконайте запит: Список книг, які замовляв клієнт Йван Иваненко. Інструкція на запит:
select books.title
from customers, orders, order_items, books where customers.customerID=orders.customerlD and orders . order I D=order __i terns . orderlD and order_items.ISBN=books.ISBN and customers.пате="Иван Иваненко";
Результат запиту:
title
I MySQL. Библиотека профессионала
1 Visual FoxPro 7. Руководство пользователя с примерами
2 rows in set (0.00 sec)
Самостійно. Створіть і виконайте запити:
Список імен та адрес всіх клієнтів, які замовляли книгу по MySQL
Список всіх книг, які замовляв клієнт на прізвище "Сидоренко".
Перелік дат, коли клієнт на прізвище "Петренко" замовляв книги по PHP.
Відомості про ті замовлення клієнта Сидоренка, коли сума замовлення первищувала 100.
Відомості про всі замовлення клієнта Сидоренка, з указаниям кількості замовлених екземплярів, ціни замовлених книг та загальної суми замовлення.
