Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Лабораторная работа № 16. Предикат NULL. Подзапросы. Предикаты exists, ANY, ALL





Цель работы: научиться применять в запросах предикаты NULL, EXISTS, ANY и ALL.

Предикат IS NULL. Для выяснения смысла значения NULL рассмотрим пример. Пусть в городе N ведётся база данных, в которой хранятся данные обо всех жителях, включая детей. Очевидно, что в графу «профессия» записи о ребёнке поместить нечего, так как у ребёнка ещё нет профессии. Графа профессия может оказаться пустой и в том случае, когда в момент занесения данных профессия жителя не была известна. Предполагается, что графа будет заполнена позже. Для неизвестного значения в SQL применяется специальное обозначение NULL. Значение NULL имеют по умолчанию все поля, в которые ничего не заносилось.

NULL применяется в полях всех типов и само не имеет типа. Значение NULL можно использовать только в специальном предикате IS NULL, имеющем следующий синтаксис:

<выражение> IS [NOT]NULL

Предикат IS NULL принимает значение «истина» только, если выражение равно NULL.

Для работы с NULL-значениями полей создайте в базе данных таблицу NullPusto, состоящую из двух текстовых полей длиной по 30 символов. Назовите поля «ФИО» и «адр». Введите в таблицу данные из табл. 3.

Создайте и выполните следующие запросы к таблице NullPusto:

a) выбрать все записи с NULL;

b) выбрать все записи с “”;

c) выбрать все записи, в которых есть адреса;

d) выбрать все записи, в которых нет адресов;

e) подсчитать количество записей, содержащих NULL;

f) подсчитать количество записей, содержащих NULL и “”.

Сохраните запросы и покажите их преподавателю.

Таблица 3

Поле Значение в поле «адр»
ФИО адр
А К “К”
Б   “” (две двойные кавычки)
В   NULL
Г М “М”
Д   NULL
Е   “” (две двойные кавычки)
Ж   NULL

 

Подзапросы. С помощью SQL можно вкладывать один запросы внутрь другого. Внутренний запрос называют подзапросом. Обычно, внутренний запрос генерирует значение, которое проверяется в предикате внешнего запроса, определяющего верно оно или нет. Например, в следующем запросе выбираются из таблицы «Товары» те товары, цена которых меньше средней цены всех товаров таблицы:

SELECT *
FROM Товары
WHERE Цена<(SELECT AVG(Цена) FROM Товары);

Самостоятельно с помощью подзапроса выберите из таблицы «Заказано» заказы на товары с маркой «Pavlova». Марки товаров хранятся в таблице «Товары».

Предикат EXISTS имеет синтаксис

EXISTS подзапрос

и принимает значение ИСТИНА (TRUE), если подзапрос содержит хотя бы одну строку.

В следующем запросе выбираются фамилии всех сотрудников, оформлявших заказы для клиента ANTON, при условии, что хотя бы один заказ для клиента ANTON был размещён в мае любого года.

SELECT DISTINCT b.Фамилия
FROM Заказы a, Сотрудники b
WHERE EXISTS (SELECT * FROM Заказы WHERE КодКлиента='ANTON' AND DatePart('m',ДатаРазмещения)=5)
AND a.КодСотрудника = b.КодСотрудника AND a.КодКлиента='ANTON';

Самостоятельно, используя таблицы «Сотрудники», «Клиенты» и «Заказы», создайте и выполните запрос на выборку всех клиентов из Рио-Де-Жанейро, если был сделан хотя бы один заказ из Рио-Де-Жанейро, оформленый сотрудником Кротовым.

Предикаты количественного сравнения ANY, SOME и ALL имеют синтаксис

оператор сравнения {ANY | SOME | ALL} подзапрос.

ANY и SOME – синонимы.

Пример использования предиката ANY:

SELECT КодЗаказа
FROM Заказы
WHERE СтоимостьДоставки < ANY(SELECT СтоимостьДоставки FROM Заказы WHERE ГородПолучателя ='Ванкувер');

Для исследования особенностей предиката ANY проделайте следующее упражнение:

a) выберите из таблицы «Товары» цены товаров от поставщика с кодом 2; запишите эти цены;

b) используя ANY, выберите все товары, цены которых больше цен поставщика 2; сравните выбранные цены с записанными;

c) повторите предыдущий пункт, иcпользуя вместо ANY предикат ALL; сравните результаты.

Сохраните все выполненные запросы и покажите их преподавателю







Date: 2015-12-12; view: 694; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.012 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию