русс | укр

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

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

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

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


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

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


Дата добавления: 2013-12-23; просмотров: 1003; Нарушение авторских прав


Exists – булева функция, которая для данного запроса определяет, есть ли у него что-нибудь на выходе. Это реализация квантора существования в БД.

Пример: вывести список служащих, работающих над несколькими проектами.

Select distinct enum

From works t1

Where exists (select * from works t2

Where (t1.enum=t2.enum)

and (t1.pnum)<>(t2.pnum) )

Первое вхождение таблицы works помечено псевдонимом t1, второе – t2, т.е. выбираем того служащего, у которого номера проектов отличаются. Подзапрос связанный.

Оператор exists можно включать в различные булевские выражения, часто используется конструкция not exists. Пример: посчитать сотрудников, которые работают только над одним проектом.

Select distinct enum

From works t1

Where not exists (select * from works t2

Where (t1.enum=t2.enum)

and (t1.pnum)<>(t2.pnum) )

Операторы any и some – один и тот же оператор по смыслу. Они используются только для построения правильного, с точки зрения английской грамматики, предложения.

Оператор any, как и оператор exists, в качестве аргумента использует подзапрос, результат которого включается в оператор сравнения. Результат выполнения оператора сравнения истинен, если истинно какое-либо значение из результатов подзапроса.

Пример: найти всех сотрудников, занятых в проекте №1.

Select name

From empl

Where empno = ANY (select enum

From works

Where pnum=1)

Еще пример: вывести сотрудников, которые будут участвовать в проектах после 31 декабря 2012 года.

Select name

From empl

Where ‘12/31/2012’ < any (select finish from works

Where empl.empno=works.enum )

Оператор All. Оператор сравнения, использующий all, принимает значение «истина», если каждое значение, выбранное подзапросом, удовлетворяет его условию.

Пример: вывести, у кого из сотрудников участие во всех проектах заканчивается в конце 2012 года.



Select name

From works

Where ‘12/31/2012’>all (select finish from works

Where empl.empno=works.enum )

Операторы обновления данных – insert, update, delete. Занесение информации:

Insert into <имя таблицы>

Values (<значение 1>,<значение 2>,…)

Insert into <имя таблицы> (<атрибут 1>, <атрибут 2>, …)

Values (<значение 1>, <значение 2>, …)

Количество значений и количество атрибутов должно быть одинаково.

В таблицу можно вставить результат запроса:

Insert into empl_dep21

Select name, salary

From empl

Where depno=21

Create table empl_dep21 (

Name char(20),

Salary int)

Удаление записей.

Можно удалить все записи: delete from empl_dep21

Можно удалить одну или несколько записей: delete from Empl where depno=21

Обновление полей. Пример: увеличить зарплату всем сотрудникам отдела 21 на 20%.

Update empl

Set salary=salary*1,2

Where depno=21

Оператор занесения данных с подзапросом.

Правило: подзапрос не может использовать те данные, которые заносятся в таблицу. Это ограничение вызвано тем, что текущая строка формируемой таблицы не существует до тех пор, пока оператор insert не закончит свою работу.

Пример: построить таблицу служащих, работающих над проектом.

Insert into B_empl

Select * from empl

Where empno in ( select enum from works

Where pnum=(select pnum from project

Where pname = ‘Имя проекта’))

Оператор удаления с подзапросом.

Правило: в подзапросе в разделе from нельзя ссылаться на таблицу, из которой производится удаление, но в условие where можно ссылаться на текущую строку – кандидата на удаление, то есть можно использовать связанные подзапросы с таблицей, из которой идет удаление.

Пример: удалить из базы данных отделы, в которых есть служащие, получающие меньше 200$.

Delete from depart

Where 200>ANY ( select salary from empl

Where depart.depno=Empl.Depno)

Оператор модификации с подзапросом.

У оператора update такие же ограничения, как и у delete, также могут использоваться связные подзапросы.

Пример: увеличить на 20% зарплату служащим, участвующим более чем в двух проектах.

Update empl

Set salary = salary*1.2

Where 2<(select count(*) from works

Where empl.empno=works.enum)

 



<== предыдущая лекция | следующая лекция ==>
Создание запросов в базе данных. | Представления (view).


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


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

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

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


 


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

 
 

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

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