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

3.2. Использование подзапросов в insert

UPDATE STUDENT 1

SET STIPEND = STIPEND*2

WHERE CITY = 'Москва';

Предложение SET не является предикатом, поэтому в нем можно указать значение NULL следующим образом:

UPDATE UNIVERSITYl

SET RATING = NULL

WHERE CITY = 'Москва';

Вилучення записів з таблиць

Вилучення записів з таблиць виконується інструкцією DELETE. її використання подібне до використнання інструкції UPDATE. Для вилучення окремих записів з таблиці використовують інструкцію:

DELETE FROM назва_таблиці WHERE умова_відбору LIMIT кількість_рядків; Вилучення всіх записів з таблиці:

DELETE FROM назва_таблиці;

Ітоги 6. Що ми узнали про оновлення та вилучення записів у таблицях

1. Інструкція SQL для оновлення записів має такий загальний вид:

UPDATE назва_таблиці

SET поле1=вираз1, поле2=вираз2, . . . WHERE умова_відбору_записів LIMIT кількість_рядків

2. Вилучення записів з таблиць виконується інструкцією

DELETE FROM назва_таблиці WHERE умова_відбору LIMIT кількість_рядків

  1. Вилучення всіх записів з таблиці: DELETE FROM назва_таблиці;

  2. Конструкція WHERE умова_відбору_записів в операторі дозволяє оновити або вилучити не всі, а лише окремі записи таблиці.

  3. Конструкція LIMIT кількість_рядків задає кількість рядків, що підлягають оновленню або вилученню.

Лекція на тему: Вибірка даних з субд MySql.

Якщо виникає необхідність одержати дані з кількох таблиць одночасно, то для цього виконується операція, яка називається об'єднанням таблиць. Фактично, об'єднання таблиць - це виборка даних з кількох таблиць одночасно.

Для об'єднання таблиць створюється складний запит, де після інструкції SELEСТ вказують перелік полів у формі назва_таблиці. назва_поля, після команди FROM йде перелік таблиць, що об'єднуються, а після WHERE - умова об'єднання таблиць у вигляді назва таблиці. назва_поля="значення".

Тобто загальний вигляд простої інструкції на виборку даних з кількох таблиць такий:

SELECT таблиця_1.потрібне_поле, таблиця_2.потрібне_поле, ... FROM таблиця__1, таблиця_2, ... WHERE умова_об'єднання_таблиць;

Зауваження. Створення і використання умов об'єднання таблиць подібне до використання кількох умов відбору записів при перегляді таблиць. Це питання докладно розглядалося на занятті 5.

У складних інструкціях на виборку даних з кількох таблиць можна також групувати записи, задавати критерії пошуку записів, порядок сортування та кількість записів. Для цього до інструкції необхідно додатково включити наступні команди:

GROUP BY порядок_групування записів

HAVING критерії_пошуку_записів

ORDER BY порядок_сортування_записів

LIMIT критерії обмеження_кількості__записів;

Просте об'єднання двох таблиць

Безпосередньо об'єднувати можна лише ті таблиці, між якими існує прямий зв'язок (тобто ті, що мають однойменні ключові поля). Наприклад, такі:

customers

customerlD

name

address

orders

orderID

customerlD

amount

date

►► Ознайомтеся з наступним прикладом.

Приклад: необхідно одержати повні відомості про замовлення клієнта іваненка.

Відповідна інструкція на запит матиме наступний вид:

mysql> select customers.name, orders.* from customers, orders

where customers.пате="Иван Иваненко" and customers.customerID=orders.customerID;

Ця інструкція вибирає відомості з двох таблиць - customers та orders. Причому з таблиці customers вибирається тільки ім'я користувача (поле name), це записується у вигляді customers. name, а з таблиці orders вибираються всі поля, відповідний запис - orders . *. (Примітка. Якщо немає потреби виводити на монітор всі поля таблиці, то у переліку полів треба вказати кожне поле окремо).

Умова об'єднання таблиць має вид

customers.namе="Иван Иваненко" and customers.customerID=orders.customerlD

Вона складається з двох умов, які повинні виконуватися одночасно. Ця умова об'єднання означає, що з обох таблиць відбираються лише записи, які стосуються клієнта Іваненка, а саме: спочатку з першої таблиці customers відбираються записи щодо Іваненка (умова customers. namе="Иван Иваненко"), а потім з таблиці orders відбираються лише ті записи, у яких ідентифікатор customerlD співпадає з customerlD записів, вже відібраних з таблиці customers.

Виконайте наведений вище запит на одержання повних відомостей про замовлення клієнта Іваненка.

Відповідь сервера:

I name I OrderlD I CustomerlD | Amount I Date І

І Iван Иваненко | 2 | 1 І 144.00 | 2003-09-10 І

1 row in set (0.05 sec)

►► Якщо у запиті немає необхідності виводити всі поля на екран монітору, то зайве поле не треба включати у перелік полів після інструкції SELECT. Виконайте наступний запит і переконайтеся, що у цьому запиті customerlD на монітор не виводиться.

mysql> select customers.name, orders.orderID, orders.amount, orders.date

from customers, orders

where customers . name like ( "%Иван.% " ) and customers.customerID=orders.customerlD;

Результат запиту.

name

order ID

amout

! date

Иван Иваненко

1

60 . 00

! 2003-09-01

1 row in set (0.00 sec)

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