русс | укр

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

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

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

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


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

Оператор DELETE з підлеглим запитом


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


Інколи буває потрібно провести відбір рядків в операторі DELETE, опираючись на дані із кілька таблиць.

Наприклад: потрібно вилучити всі замовлення, які прийняв працівник Іванов, причому код цього працівника ми забули.

Для того, щоб вибрати ці замовлення, можна побудувати запит до двох таблиць:

6). Вивести всі замовлення, які прийняв працівник Іванов:

6).а). SELECT Z .*

FROM Zamovlennia Z,

Pracivnyky P

WHERE Z . Prodavec = P. Kod_Pracivn

AND P.Prizv = ‘Іванов’

Цей оператор не можна перетворити у оператор DELETE заміною SELECT Z.* на DELETE, бо оператор DELETE не може звертатися до двох таблиць.

Для того, щоб виконати це завдання, потрібно використовувати умову відбору з підлеглим запитом:

6).б). SELECT *

FROM Zamovlennia

WHERE Prodavec = (SELECT Kod_Pracivn

FROM Pracivnyky

WHERE Prizv = ‘Іванов’)

Тепер – можна замінювати SELECT * на DELETE:

7). Вилучити всі замовлення, які прийняв працівник Іванов.

7). DELETE FROM Zamovlennia

WHERE Prodavec = (SELECT Kod_Pracivn

FROM Pracivnyky

WHERE Prizv = ‘Іванов’)

Підлеглий запит в операторі DELETE можуть мати кілька рівнів вкладеності. Вони також можуть містити зовнішні звертання до цільової таблиці оператора DELETE – тоді секція FROM оператора DELETE відіграє ту саму роль, що і секція FROM оператора SELECT.

Ось приклад запиту на вилучення, в якому потрібно використовувати підлеглий запит, що містить зовнішнє звертання до цільової таблиці:

8). Вилучити дані про клієнтів, які не робили замовлень від 1 січня 2000 р.

8). DELETE FROM Сlienty

WHERE NOT EXISTS

(SELECT *

FROM Zamovlennia

WHERE Client = Kod_Clienta

AND Data_Zamovl > ‘01-JAN-00’)

Цей оператор DELETE виконується таким чином: кожний рядок таблиці Clienty по черзі перевіряється на відповідність умові відбору.

Для кожного клієнта підлеглий запит вибирає всі замовлення, зроблені цим клієнтом після 1 січня 2000р. Звертання до стовпчика Kod_Clientа в підлеглому запиті – це зовнішнє звертання до ідентифікатора клієнта того рядка таблиці Clienty, який перевіряється оператором DELETE в даний момент.



Підлеглий запит в цьому прикладі –це корельованих підлеглий запит.

В підлеглих запитах оператора DELETE зовнішні звертання зустрічаються дуже часто, бо це єдиний спосіб „з’єднання” таблиць підлеглого запиту і цільової таблиці оператора DELETE.

В SQL1 єдине обмеження на застосування підлеглих запитів в операторі DELETE полягає в тому, що цільову таблицю не можна вказувати в секції FROM підлеглого запиту незалежно від рівня вкладеності. Це запобігає звертанню із підлеглих запитів на цільову таблицю (частина рядків якої вже може бути вилучена), за винятком зовнішніх звертань до рядка, який в даний момент перевіряється оператором DELETE.

В стандарті SQL2 це обмеження знімається: вважається, що звертання до цільової таблиці в підлеглому запиті – це звертання до повної цільової таблиці, із якої ще не вилучено жодного рядка.



<== предыдущая лекция | следующая лекция ==>
Оператор DELETE | Оператор UPDATE


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


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

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

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


 


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

 
 

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

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