
- •Лабораторная работа № 13. Оператор select … where. Выборка из таблицы записей, удовлетворяющих заданному условию.
- •Лабораторная работа № 14. Предложения group by и having
- •Лабораторная работа № 15. Многотабличные запросы
- •Лабораторная работа № 16. Предикат null. Подзапросы. Предикаты exists, any, all
- •Лабораторная работа № 17. Объединение результатов нескольких запросов – union. Создание таблицы из существующих таблиц – select … into
- •Лабораторная работа № 18. Операторы insert, update, delete
Лабораторная работа № 16. Предикат null. Подзапросы. Предикаты exists, any, all
Предикат IS NULL.
Создать в базе данных таблицу NullPusto, состоящую из двух текстовых полей длиной по 30 символов. Назвать поля «ФИО» и «адр».
CREATE Table NullPusto
(ФИО CHAR (30),
Адр CHAR (30));
Ввести в таблицу данные из табл. 1.
Таблица 1
Поле |
Значение в поле «адр» |
|
ФИО |
адр |
|
А |
К |
“К” |
Б |
|
“” (две двойные кавычки) |
В |
|
NULL |
Г |
М |
“М” |
Д |
|
NULL |
Е |
|
“” (две двойные кавычки) |
Ж |
|
NULL |
выбрать все записи с NULL
SELECT *
FROM NullPusto
WHERE Адр="NULL";
выбрать все записи с “”
SELECT *
FROM NullPusto
WHERE Адр="";
выбрать все записи, в которых есть адреса
SELECT *
FROM NullPusto
WHERE NOT Адр='NULL' AND Адр<>'';
выбрать все записи, в которых нет адресов
SELECT *
FROM NullPusto
WHERE Адр='NULL' OR Адр='';
подсчитать количество записей, содержащих NULL
SELECT COUNT(*)
FROM NullPusto
WHERE Адр='NULL';
подсчитать количество записей, содержащих NULL и “”
SELECT Count(*)
FROM NullPusto
WHERE Адр='NULL' OR Адр='';
Подзапросы.
Выбрать из таблицы «Заказано» заказы на товары с маркой «Pavlova». Марки товаров хранятся в таблице «Товары».
SELECT *
FROM Заказано
WHERE КодТовара=(SELECT КодТовара FROM Товары WHERE Марка='Pavlova');
Предикат EXISTS.
Используя таблицы «Сотрудники», «Клиенты» и «Заказы», создать и выполнить запрос на выборку всех клиентов из Рио-Де-Жанейро, если был сделан хотя бы один заказ из Рио-Де-Жанейро, оформленый сотрудником Кротовым.
SELECT DISTINCT b.Название
FROM Сотрудники AS a, Клиенты AS b
WHERE EXISTS (SELECT * FROM Клиенты WHERE Город='Рио-де-Жанейро'
AND a.Фамилия='Кротов');
Предикаты количественного сравнения ANY, SOME и ALL.
Выбрать из таблицы «Товары» цены товаров от поставщика с кодом 2; записать эти цены;
SELECT Цена
FROM Товары
WHERE КодПоставщика=2;
Полученные данные (1): 947,25р., 765,00р., 990,00р., 960,75р.
Используя ANY, выбрать все товары, цены которых больше цен поставщика 2; сравнить выбранные цены с записанными;
SELECT *
FROM Товары
WHERE Цена>ANY(SELECT Цена FROM Товары WHERE КодПоставщика=2);
Были выбраны цены больше, чем наименьшая цена из полученных данных (1).
Повторить предыдущий пункт, используя вместо ANY предикат ALL; сравнить результаты.
SELECT *
FROM Товары
WHERE Цена>ALL(SELECT Цена FROM Товары WHERE КодПоставщика=2);
Были выбраны цены больше, чем наибольшая цена из полученных данных (1).
Лабораторная работа № 17. Объединение результатов нескольких запросов – union. Создание таблицы из существующих таблиц – select … into
Предложение UNION
Выбрать из таблиц «Клиенты» и «Сотрудники» следующие данные: фамилию и имя; должность, город. В дополнительном столбце указать, из какой таблицы выбрана запись.
SELECT ALL Должность, Город, 'Заказы' AS Источник
FROM Клиенты
UNION SELECT ALL Фамилия, Имя, 'Клиенты' AS Источник
FROM Сотрудники;
Создание таблицы из существующих таблиц с помощью SELECT … INTO.
С помощью SELECT … INTO создать таблицу «Клиенты2», содержащую данные из таблицы «Клиенты» обо всех клиентах, живущих в Лондоне.
SELECT DISTINCT * INTO Клиенты2
FROM Клиенты
WHERE Город='Лондон';