Копирование данных из одной таблицы в другую
С помощью инструкции INSERT можно скопировать значения из одной таблицы в другую. При этом первая таблица, из которой копируются данные, не изменяется.
Пример 12
INSERT INTO Сегодня
SELECT *
FROM Покупка
WHERE Дата = cdate(“18.12.2014”);
В результате выполнения этого запроса вся информация о покупках за 18 декабря 2014 года заносится в таблицу Сегодня.
Замечание 1. Таблица Сегодня нами уже предварительно создана и имеет такую же структуру, что и таблица Покупка.
Замечание 2. Этот запрос является примером подчинённого запроса, во внутреннем запросе из таблицы Покупкавыбираются записи, содержащие информацию о покупках за 18 декабря 2014 года, а во внешнем запросе они копируются в таблицуСегодня.О подчинённых запросах более подробно будет рассказано на следующем семинаре.
Удаление таблицы
Чтобы удалить существующую таблицу, необходимо предварительно удалить все данные из этой таблицы, т.е. сделать её пустой. Таблица, имеющая строки не может быть удалена. Инструкция удаления таблицы имеет вид:
DROP TABLE <Имя таблицы>;
Пример 13
Инструкция
DELETE FROM Сегодня;
удаляет все строки таблицы Сегодня. В результате таблица Сегодня становится пустой.
Пример 14
Инструкция
DROP TABLE Сегодня;
удаляет таблицу Сегодня.
Задание.Выполните на компьютере все запросы, представленные на этом семинаре.
Домашнее задание 3.1
(по базе данных «Косметическая фирма»)
1. В таблице Продукция внесите изменения в записи, в которых содержится информация о шампунях, увеличив количество баллов в 1,6 раза.
2. В таблице Продукцияудалите записи, касающиеся продукта Крем для рук.
3. Введите в таблицу Продукция строку с новым продуктом: Пудра, наименование - Бежевая, цена - 760 рублей. Указать, что за этот продукт начисляется 12 баллов.
4. Внесите изменения в таблицу Продукция, касающиеся одеколона «Прохлада», увеличив количество баллов на 5, а цену на 105 рублей.
5. Создайте таблицу Покупка декабрь 2014 года и заполните её информацией из таблицы Покупка.
Домашнее задание 3.2
(по базе данных «Борей»)
1. В таблице Товары увеличьте цену на напитки в 1,2 раза.
2. В таблице Товары удалите товары, поставляемые ООО Экзотика.
3. В таблицу Товары внесите информацию по новому продукту.
4. Внесите изменения в таблицу Товары по приправам, увеличив цену на 15 рублей, а минимальный запас - на 5.
5. Создайте таблицу Заказы сентябрь 1996 и заполните её информацией из таблицы Заказы (по дате исполнения).
ПЕРЕХОД НА Оглавление
Семинар №13
Подчинённые запросы.
Объединение запросов с помощью конструкции UNION
Часто невозможно решить задачу путём использования одного запроса. Это происходит в тех случаях, когда значение (или несколько значений), с которыми надо сравнивать, заранее не определено и должно быть вычислено в момент выполнения запроса.
Запрос называется подчинённым, если он находится внутри другого запроса. При этом основной запрос использует данные, предоставляемые подчинённым запросом.
Подчинённым запросом называют команду SELECT, вложенную в запрос SELECT, SELECT…INTO, INSERT…INTO, DELETE, UPDATE или в другой подчинённый запрос.
В том случае, когда подчинённый запрос находится внутри запроса SELECT, запрос выглядит следующим образом:
SELECT <Имена полей>
FROM <Имена таблиц>
WHERE <Поле> <Оператор сравнения>
(SELECT <Имя поля>
FROM <Имя таблицы>
[WHERE…]
…);
Замечание. Оператор SELECT подзапроса может выбирать только одно поле. Попытка произвести выборку нескольких полей приведёт появлению сообщения об ошибке.
Рассмотрим несколько подчинённых запросов к базе данных «Косметическая фирма».
Пример 1
SELECT *
FROM Продукция
WHERE Баллы>
(SELECT AVG (Баллы)
FROM Продукция);
Как вы видите, во внутреннем запросе вычисляется средний балл, начисляемый клиенту при покупке косметики, по прайс-листу. Затем во внешнем запросе на основе полученного значения в прайс-листе находится вся информация об этой продукции. Значение поля Баллы в условии WHEREсравнивается со средним значением, полученным во внутреннем запросе с помощью оператора сравнения «>».
Пример 2
SELECT*
FROM Покупка
WHERE КодТовара =
(SELECT КодТовара
FROM Продукция
WHERE Цена=350);
В результате выполнения этого запроса выводится вся информация о покупке товара стоимостью 350 рублей.
Задание.Рассмотрите два варианта:
· В таблице Продукция один продукт с ценой 350 рублей.
· В таблице Продукция несколько продуктов с ценой 350 рублей.
В том случае, когда несколько товаров имеют цену 350 рублей, мы во внутреннем запросе получим несколько названий продуктов (множество продуктов), и использование оператора «=» становится невозможным.
Для работы с множествами применяются специальные операторы сравнения. С одним из них мы уже знакомы. Это оператор IN.Давайте вспомним, как работает оператор IN – оператор проверки принадлежности элементов некоторому множеству.
Пример 3
SELECT *
FROM Продукция
WHERE Баллы IN (3, 5, 7, 8);
Результатом этого запроса является информация о продукции, за которую начисляется 3, 5, 7 или 8 баллов. А теперь давайте посмотрим использование этого оператора в подчиненном запросе.
Пример 4
SELECT *
FROM Покупка