- •Общие указания к выполнению практических работ
- •Критерии оценки:
- •Практическая работа № 1
- •Указания по выполнению практической работы Возможности монитора MySql
- •Задание 1
- •Описание учебного примера
- •Удаление таблиц
- •Задание 1
- •Контрольные вопросы
- •Практическая работа №2
- •Указания по выполнению практической работы Команда alter table
- •Задание 1
- •Задание 2
- •Контрольные вопросы
- •Практическая работа № 3
- •Указания по выполнению практической работы
- •Задание 1
- •Задание 1
- •Задание 2
- •1. Создание eer-диаграммы
- •Контрольные вопросы
- •Лабораторная работа № 7
- •Указания по выполнению лабораторной работы
- •Для компонента adoConnection1 устанавливаем следующие свойства
- •Простая выборка
- •Использование вычисляемых полей
- •Логические связки and и or
- •Выборка с упорядочением
- •Контрольные вопросы
- •Практическая работа № 11
- •Указания к выполнению лабораторной работы Запросы к нескольким таблицам
- •Задание1
- •Табличный подзапрос
- •Использование операций in и not in
- •Использование операций some, any и all
- •Использование exists и not exists
- •Задание
- •Контрольные вопросы
- •Лабораторная работа № 14
- •Команда insert
- •Задание 1
- •Команда update
- •Задание 2
- •Команда delete
- •Задание 3
- •Контрольные вопросы
- •Лабораторная работа № 15
- •Задание
- •Задание 2
- •Контрольные вопросы
- •Лабораторная работа № 16
- •Контрольные вопросы
- •Практическая работа № 17
- •Задание 1
- •Задание 2
- •Контрольные вопросы
- •Практическая работа № 18
- •Добавление триггера
- •Создание триггера на before update
- •Удаление триггера
- •Список созданных триггеров
- •Задание 1
- •Задание 2
- •Задание 3
- •Задание 4
- •Контрольные вопросы
- •Лабораторная работа № 19
- •Задание 1
- •Задание 2
- •Контрольные вопросы
- •Практическая работа № 20
- •Задание 1
- •Контрольные вопросы
- •Практическая работа № 21
- •Уровни привилегий и пользователи
- •Отмена привилегий и удаление пользователей
- •Задание 1 Работа локально
- •Варианты заданий предметных областей для создания баз данных Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •Вариант16
- •Вариант 17
- •Вариант 18
- •Вариант 19
- •Вариант 20
- •Вариант 22
- •Вариант 23
- •Вариант 24
- •Вариант 25
- •Вариант 26
- •Вариант 27
- •Вариант 28
- •Вариант 29
- •Вариант 30
- •Вариант 31
- •Вариант 32
Табличный подзапрос
Рассмотрим второй случай, когда подзапрос возвращает один столбец таблицы. В этом случае условие во фразе WHERE может иметь следующий вид:
<ИмяАтрибута> { [NOT] IN | SOME | ALL } <Подзапрос>
Рассмотрим отдельно использование каждого из операторов [NOT] IN, SOME, ALL.
Пусть даны следующие таблицы:
1. Товары(*НомерТовара, Название, Цена)
2. Клиенты(*НомерКлиента, ФИО, Адрес)
3. Сделки(*НомерСделки, НомерКлиента, НомерТовара,
Количество, ДатаСделки)
Назначения полей очевидны. В таблице «Товары» содержится описание вообще всех товаров. В таблице «Клиенты» содержится информация вообще обо всех клиентах. А в таблице «Сделки» содержится информация только о тех товарах, которые покупались клиентами и только о тех клиентах, которые покупали товар.
Для простоты будем использовать русские имена полей.
Использование операций in и not in
Оператор IN используется для сравнения некоторого значения со списком значений. При этом проверяется, входит ли это значение в список значений или не входит ( в случае NOT IN).
Например, выбрать список товаров, которые покупались, т.е. таких, которые содержатся в таблице «Сделка». Запрос будет иметь следующий вид:
SELECT Товары.Название FROM Товары
WHERE Товары.НомерТовара IN
(SELECT НомерТовара FROM Сделки)
Вложенный запрос вернет столбец значений, поэтому правомерно использование операция IN «содержится в списке». Из таблицы «Товары» будут выбраны все те товары, которые
имеются в таблице «Сделки». Следующий пример, выбрать всех клиентов, которые ни разу
не покупали товар:
SELECT Клиенты.ФИО FROM Клиенты
WHERE Клиенты.НомерКлиента NOT IN
(SELECT НомерКлиента FROM Сделки);
Из таблицы Клиенты будут выбраны только те клиенты, которых нет в таблице Сделка.
Использование операций some, any и all
Все эти ключевые слова используются с подзапросами, которые возвращает один столбец. Операторы SOME и ANY являются синонимами. Если записи подзапроса предшествует ключевое слово ANY или SOME, то условие считается истинным, если оно выполняется, хотя бы для одного значения из списка значений. В случае ALL условие считается истинным, если оно выполняется для всех записей подзапроса.
Например, выбрать всех клиентов, которые хотя бы раз покупали товар:
SELECT Клиенты.ФИО FROM Клиенты
WHERE Клиенты.НомерКлиента SOME
(SELECT НомерКлиента FROM Сделки);
Следующий пример, выбрать даты сделок с самым большим количеством товара:
SELECT ДатаСделки FROM Сделки WHERE Количество >=ALL
(SELECT Количество FROM Сделки);
Использование exists и not exists
Операции EXISTS и NOT EXISTS используются, если подзапрос возвращает несколько строк, т.е. целую таблицу. Для ключевого слова EXISTS условие в WHERE будет истинным, если в возвращаемой подзапросом результирующей таблице присутствует, хотя бы одна строка. По ключевым словам EXISTS и NOT EXISTS проверяется только наличие или отсутствие строк в подзапросе.
Например, выбрать список товаров, которые ни разу не покупались:
SELECT Товары.Название
FROM Товары
WHERE NOT EXISTS
(SELECT * FROM Сделки
WHERE Сделки.НомерТовара= Товары. НомерТовара);
