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

 

Лабораторная работа № 18. Операторы INSERT, UPDATE, DELETE

Вставка в таблицу одной или нескольких строк с помощью оператора INSERT.

Добавить в таблицу «писатель» Толстого А.Н..

INSERT INTO Писатель (КодП, ФИО)

VALUES (10, 'А.Н.Толстой');

 

Добавить в таблицу «книга» - роман «Сёстры».

INSERT INTO Книга (КодКн, Наим, Автор)

VALUES (10, 'Сёстры', 10);

 

Изменение (редактирование) данных в таблице с помощью оператора UPDATE.

С помощью оператора UPDATE занести в таблицу «книга» все недостающие значения полей.

UPDATE книга SET Автор = 10

WHERE КодКн=8;

Указали в таблице книга недостающий код писателя.

 

Удаление строк таблицы с помощью оператора DELETE.

С помощью оператора DELETE удалить из таблицы «писатель» Тургенева.

DELETE *

FROM писатель

WHERE КодП=4;

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: