русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Использование предикатов ANY, ALL, EXISTS и IN.


Дата добавления: 2015-07-09; просмотров: 1771; Нарушение авторских прав


Напомним, что ANY и ALL следуют за одним из предикатов =, !=, >, <, <=, >= и проверяет, выполняется ли этот предикат хотя бы для одного (при ANY) или для всех (при ALL) значениях множества, заданного в правой части, по отношению к элементу, заданному в левой части.

Например, для получения списка кафедр, фонды которых больше хотя бы одной из кафедр факультета информатики, следует записать:

SELECT Name

FROM DEPARTMENT

WHERE Fund > ANY (SELECT DEPARTMENT.Fund

FROM FACULTY, DEPARTMENT

WHERE FACULTY.#F = DEPARTMENT.#F AND

FACULTY.Name = 'IT' )

Если же необходимо, чтобы фонды искомых кафедр были больше любой (то есть всех ) из кафедр факультета информатики, то это записывается следующим образом:

SELECT Name

FROM DEPARTMENT

WHERE Fund > ALL (SELECT DEPARTMENT.Fund

FROM FACULTY, DEPARTMENT

WHERE FACULTY.#F = DEPARTMENT.#F AND

FACULTY.Name = 'IT' )

EXISTS является одноместным предикатом, которые дает TRUE, если подзапрос, к которому он применяется, содержит хотя бы одну строку. Например, для получения списка преподавателей, которые читают хотя бы один курс лекций, следует записать:

SELECT Name

FROM TEACHER

WHERE EXISTS (SELECT *

FROM LECTURE

WHERE LECTURE.#T = TEACHER.#T )

Если же нас интересуют те преподаватели, которые не читают никаких лекций, то следует записать:

SELECT Name

FROM TEACHER

WHERE NOT EXISTS (SELECT *

FROM LECTURE

WHERE LECTURE.#T = TEACHER.#T )

Предикат IN проверяет вхождение элемента во множество. Левый операнд предиката должен быть спецификацией индивидного значения, например, константа или имя поля, а правая – спецификация множества, например, константа-множество или select-запрос. Константа-множество специфицируется списком элементов множества, заключенных в фигурные скобки, например, {'Иванов', 'Петров', 'Игнатов'}. Обратим внимание, что выражение типа x IN {'Иванов', 'Петров', 'Игнатов'} эквивалентно следующему: x = 'Иванов' OR x = 'Петров' OR x = 'Игнатов'.



К предикату IN можно использовать отрицание, тогда он принимает вид NOT IN.

Рассмотрим ряд примеров. Выдать названия факультетов, расположенных в корпусах 1, 3, 5, 11:

SELECT Name

FROM FACULTY

WHERE Building IN {1, 3, 5, 11}.

Выдать названия факультетов, расположенных в тех же корпусах, что и факультеты информатики и экономики:

SELECT Name

FROM FACULTY

WHERE Building IN (SELECT Building

FROM FACULTY

WHERE Name = 'Информатика' OR Name = 'Экономика')

Выдать факультеты, расположенные в корпусах, отличающихся от тех, в которых расположены факультеты информатики и экономики:

SELECT Name

FROM FACULTY

WHERE Building NOT IN (SELECT Building

FROM FACULTY

WHERE Name = 'Информатика' OR Name = 'Экономика')



<== предыдущая лекция | следующая лекция ==>
Подзапросы: вкладывание блоков SELECT друг в друга | Использование теоретико-множественных операторов


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.143 сек.