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

Лабораторная работа № 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 Город='Лондон';