Delphi | Сети | ПК | Маршрутизаторы | Моделирование | Протоколы | Экспертные системы |
Художественные возможности материалов
Удаленный доступ | Доменные имена развития компьютерной графики
Аплеты | SQL | Надежность | Задачи | Информационные процессы | Очередь JAVA | Отказы изделия | Расчет надежности показателей | Инфсис

Основные понятия и способы применения SQL - в примерах и задачах

SQL язык запросов к реляционным базам данных Учебник

Манипулирование данными

 Использование подзапросов с DELETE

Пусть филиал университета в Нью-Васюках ликвидирован и требуется удалить из таблицы STUDENT записи о студентах, которые там учились. Эту операцию можно выполнить с помощью запроса

DELETE

FROM STUDENT

WHERE UNIV_ID IN

(SELECT UNIV_ID FROM UNIVERSITY WHERE CITY = 'Нью-Васюки');

В предикате предложения FROM (подзапроса) нельзя ссы­латься на таблицу, из которой осуществляется удаление. Однако можно ссылаться на текущую строку из таблицы, являющуюся кандидатом на удаление, то есть на строку, которая в настоящее время проверяется в основном предикате.

DELETE FROM STUDENT WHERE EXISTS (SELECT *

FROM UNIVERSITY 1,1

WHERE RATING = 401

AND STUDENT.UNIV_ID = UNIVERSITY. UNIV_ID) ;

Часть AND предиката внутреннего запроса ссылается на таб­лицу STUDENT. Команда удаляет данные о студентах, которые учатся в университетах, имеющих рейтинг, равный 401. Сущес­твуют и другие способы решения этой задачи.

DELETE

FROM STUDENT WHERE 401 IN

(SELECT RATING FROM UNIVERSITY WHERE STUDENT. UNIV_ID = UNIVERSITY. UNIV ID) ;

Пусть нужно найти наименьшее значение оценки, полу­ченной в каждый день сдачи экзаменов, и удалить из таблицы сведения о студенте, который получил эту оценку. Запрос бу­дет иметь вид:

DELETE

FROM STUDENT

WHERE STUDENT_ID IN

(SELECT STUDENT_ID FROM EXAM_MARKS A

WHERE MARK= (SELECT MIN(MARK)

FROM EXAM_MARKS В

WHERE A.EXAM_DATE = В.EXAMJDATE) ) ;

Так как столбец STUDENT_ID является первичным ключом, то удаляется единственная строка.

Если в какой-то день сдавался только один экзамен (то есть получена только одна минимальная оценка) и по какой-либо причине запись, в которой находится эта оценка, требуется ос­тавить, то решение будет иметь вид:

DELETE

FROM STUDENT

WHERE STUDENT_ID IN

(SELECT STUDENT_ID FROM EXAM_MARKS A WHERE MARK =

(SELECT MIN(MARK) FROM EXAM_MARKS В

WHERE A.EXAM_DATE = B.EXAM_DATE AND 1 <

(SELECT COONT(SUBJ_ID) FROM EXAM_MARKS В WHERE A.EXAM_DATE  = В.EXAM_DATE) ) ) ;

3.2.3. Использование подзапросов с UPDATE

С помощью команды UPDATE можно применять подзапро­сы в любой форме, приемлемой для команды DELETE.

Например, используя связанные подзапросы, можно увели­чить значение размера стипендии на 20 в записях студентов, сдавших экзамены на 4 и 5.

UPDATE STUDENT1

SET STIPEND = STIPEND + 20

WHERE 4 <=

(SELECT MIN(MARK) FROM EXAM_MARKS WHERE EXAM_MARKS.STUDENT_ID = STUDENT1 .STUDENT_ID) ;

Другой запрос: «Уменьшить величину стипендии на 20 всем студентам, получившим на экзамене минимальную оценку».

UPDATE STUDENT1 SET STIPEND = STIPEND - 20 WHERE  STUDENT_ID IN (SELECT STUDENT_ID

FROM EXAM_MARKS A WHERE MARK =

(SELECT MIN(MARK) FROM EXAM_MARKS В WHERE A. EXAM  DATE = B . EXAM DATE));

Упражнения

1. Пусть существует таблица с именем STUDENTI, определения столб­ цов которой полностью совпадают с определениями столбцов таб­ лицы STUDENT. Вставить в эту таблицу сведения о студентах, ус­ пешно сдавших экзамены более чем по пяти предметам обучения.

Напишите команду, удаляющую из таблицы SUBJECTI сведения о предметах обучения, по которым студентами не получено ни од­ ной оценки.

Напишите запрос, увеличивающий данные о величине стипендии на 20% всем студентам, у которых общая сумма баллов превышает значение 50.

 

Maya 3D графика в кино и телевидении Воздействие испытаний ядерного оружия на здоровье населения Объектно-ориентированный язык программирования Java Объектно-ориентированное программирование Delphi Библиотека визуальных компонентов VCL и ее базовые классы Кроссплатформенное программирование для Linux Элементы управления Win32 Элементы управления Windows XP Файлы и устройства ввода/вывода Что такое экспертная система? Объектно-ориентированное программирование Инструментальные средства разработки экспертных систем Программирование на языке CLIPS Критерии и количественные характеристики надежности Расчет характеристик надежности невостанавливаемых резервированных изделий Расчет надежности системы с постоянным резервированием Интегрирование тригонометрических функций ;