Использование оператора Exists. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Использование оператора Exists.



Оператор Exists равносилен квантору существования.

Exists (select *) проверяет пустое или нет множество ответов, если пустое, то возвращает ложь, если не пустое, то возвращает истина.

Not exists –действует наоборот.

Пример.

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

Select фамилия from Поставщики 1

where exists (select * from поставки 2

where 1.код_поставщика=2.код_поставщика and код_детали=2)

Использование квантора exists для поиска пересечения и разности.

 
 


Пересечение

 

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

Select distinct город

from Поставщики 1

where exists (select * from Детали 2

where 1.город=2.город)

Разность

 

A B

 

Найти множество городов, где есть поставщик, но нет детали.

В этом случае в предыдущий запрос нужно вместо exists поставить not exists.

Квантор общности моделирующий операцию деления.

Реализация деления идет на основе формулы .

Выдать фамилии поставщиков, которые поставляют все детали (иначе выдать фамилии поставщиков такие, что для всех деталей существует поставщик их поставляющий).

select фамилия from Поставщики 1

where not exists (select * from Детали 2

where not exists (select * from Поставки 3

where 1.код-поставщика=3.код-поставщика

and 2.код-детали=3.код_детали))

Соответствия между операциями

Реляционной алгебры и SQL.

Мощность языка SQL совпадает с мощностью реляционной алгебры, все операции реляционной алгебры можно записать и на языке SQL.

Запись части операций мы рассмотрели выше, теперь рассмотрим оставшиеся.

Проекция записывается следующим образом

Select ст1, ст2, ст3 from таблица.

Селекция записывается через where условие.

Объединение (union) рассмотрим на примере:

Перечислить города, в которых находится поставщик или деталь

Select город from Поставщики

union all (select город from Детали).

Декартово произведение

Select 1.*, 2.* from Поставщики 1, Детали 2

А если еще записать [where условие], то тогда это будет соединение.

Технологии клиент-сервер.

Сервер – это компьютер, управляющий некоторыми ресурсами и предоставляющий их для коллективного использования. Сервера бывают почтовые, баз данных, вычислительные.

Клиент – это программа или компьютер, обращающийся к услугам сервера

Существуют разные технологии клиент-сервер.

Любая программа может быть представлена из нескольких частей:

· Ввод/вывод (интерфейсная часть);

· Вычисление на основе каких-либо бизнес правил;

· Обращение к данным;

· Управляющая часть, создает единый алгоритм.

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

1 вариант - файловый сервер.

Введем обозначения: К – клиент, С – сервер.

К выполняет 1,2,4 части, а на С содержится информация, необходимая для запроса, т.е. С выполняет 3 часть.

запрос

К С

ответ-файл

В данной технологии основная нагрузка падает на клиента.

2 вариант – удаленный доступ.

Данная технология позволяет получить только ту информацию, которая нас интересует, а не весь файл.

 

Запросы пишутся на динамическом SQL. А в ответ получаем ту порцию информации, которую запросили, эта порция информации называется курсором.

Динамический SQL - это операторы SQL, которые передаются и выполняются не сервере.

Имеют место следующие операторы:

Prepare имя_оператора from строка

Select

Insert

Delete

Update

Execute имя_оператора – позволяет выполнить запомненный на сервере оператор;

Drop имя_оператора – позволяет удалит оператор;

Эти операторы передаются в интерактивном режиме, а если хотим записать в рамках какой-то программы, то, например на Паскале, это будет выглядеть так:

Exec sql “sql оператор”.

Описание курсора на SQL:

Declare имя_курсора [scroll] cursor for подзапрос [for update].

Курсор может быть обычным, то есть просматриваемым в одном направлении, от начала к концу, если стоит scroll, то просматривать курсор можно в любом направлении. Если стоит for update, то это значит, что курсор изменяемый, все изменения будут запоминаться на сервере.

Операции с курсором:

Open имя_курсора – позволяет получить курсор;

Fetch имя_курсора – позволяет перейти к следующей записи курсора, если перед именем курсора поставить Last, то перейдем к последней записи, First – к первой записи, Current к текущей;

Close имя_курсора – закрытие курсора, но он остается определенным;

Free имя_курсора – удаление курсора.

3 вариант – сервер Базы Данных.

 
 

 

 


Бизнес-правила хранятся на сервере в виде хранимых процедур. Хранимые процедуры – это программы, написанные на некотором языке хранимых процедур с SQL вставками. Их можно написать заранее и поместить в библиотеку.



Поделиться:


Последнее изменение этой страницы: 2016-09-20; просмотров: 209; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.235.104 (0.007 с.)