
- •Практический раздел содержание
- •Лабораторная работа №1
- •Основные понятия диаграмм классов uml
- •Классы, атрибуты, операции
- •Категории связей. Связь-зависимость
- •Связи-обобщения и механизм наследования классов в uml
- •Связи-ассоциации: роли, кратность, агрегация
- •Получение схемы реляционной базы данных из диаграммы классов uml
- •Лабораторная работа №2
- •Лабораторная работа №3
- •Лабораторная работа №4
- •Лабораторная работа №5
- •Лабораторная работа №6
- •3Апрос 6-2-1
- •3Апрос 6-2-2
- •Лабораторная работа №7
- •Лабораторная работа №8
- •Создание макроса
- •Сведения о построителе макросов
- •Создание изолированного макроса
- •Создание группы макросов
- •Создание внедренного макроса
- •Изменение макроса
- •Использование условий для контроля за действиями макроса
- •Примеры условных выражений в макросах
- •Лабораторная работа №9
- •Описание
- •Порядок обработки элементов оператора select:
- •Конструкция where
- •Конструкция group by
- •Конструкция having
- •Конструкция order by
- •Seller (Продавцы)
- •Sale (Продажи)
- •Supplier (Поставщики)
- •Goods (Товары)
- •Model (Модели)
- •Custom (Заказ)
- •Простые запросы
- •Агрегатные функции
- •Лабораторная работа №10
- •Многотабличные запросы
- •Примеры многотабличных запросов
- •Подзапросы и многотабличные запросы
- •Лабораторная работа №11
- •Операторы манипулирования данными
- •Лабораторная работа №12
- •Лабораторная работа №13
- •Примеры
- •Синтаксис
- •Примеры
- •Лабораторная работа №14
- •Лабораторная работа №15
- •Лабораторная работа №16
- •Лабораторная работа №17
- •Лабораторная работа №18
- •Лабораторная работа №19
- •Работа с данными
- •Состояния и режимы набора данных
- •Поля и класс tField
- •Типы полей и типы данных
- •Сортировка
- •Навигация
- •Фильтрация
- •Редактирование
- •Добавление и удаление
- •Лабораторная работа №20
- •Лабораторная работа №21
- •Лабораторная работа №22
- •Лабораторная работа №23
- •Компонент dbCtrlGrid
- •Лабораторная работа №24
- •Импорт информации из Delphi в Word
- •1. Как определить установлен ли Excel
- •2. Как определить запущен ли Excel
- •3. Как вывести данные в Excel
- •Лабораторная работа №25
- •Поиск и фильтрация данных в Delphi
- •Общие положения
- •Поиск данных
- •Лабораторная работа №26
- •Лабораторная работа №27
- •Отчеты в Delphi
- •Лабораторная работа №28
- •Лабораторная работа №29
- •Лабораторная работа №30
- •Лабораторная работа №31
- •Лабораторная работа №32
- •Стандартные функции php для работы с MySql
- •Пример простейшей поисковой системы на php
- •Сортировка таблиц
- •Лабораторная работа №33
- •Работа с соединениями
- •Постоянные соединения с базами данных
- •Лабораторная работа №34
- •Создание бд и таблиц
- •Создание бд и таблиц с помощью php
- •Создание бд и таблиц с использованием phpMyAdmin
- •Лабораторная работа №35
- •Лабораторная работа №36
- •Применение информации о структуре таблицы
- •Лабораторная работа №37
- •Лабораторная работа №39
- •Роль сервера приложений: Настройка сервера приложений
- •Предварительная подготовка
- •Настройка сервера приложений
- •Параметры сервера приложений
- •Сводка выбранных параметров
- •Завершение работы мастера настройки сервера
- •Удаление роли сервера приложений
- •Дальнейшие действия: выполнение дополнительных задач
- •Подготовка данных для сервера приложений
- •Создание сервера приложений
- •Лабораторная работа №40
- •Создание локального клиентского приложения (на том же пк, что и сервер)
- •Удаленный клиент с использованием olEnterprise
- •Об удаленном клиенте с использованием dcom
- •Удаленный клиент с использованием ActiveForm
Лабораторная работа №10
Тема: Разработка вложенных SELECT-запросов. Объединение и соединение запросов.
Цель работы: Научится создавать вложенные SELECT-запросы к БД, изучить использование связей между таблицами.
Время работы: 2 учебных часа.
Правила по ТБ: Общие.
Оборудование рабочего места: Практикум, ПК.
Программное обеспечение: Windows, MS Office.
Вопросы входного контроля:
Дайте определение понятию запрос.
Напишите синтаксис SELECT-запроса.
Назовите, что получается в результате выполнения запроса
Дайте определение вложенного запроса.
Расскажите, с какими условиями можно выполнять запросы.
Расскажите для чего используют вложенные запросы.
КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
Подзапросы
Допустим нам необходимо найти сотрудников, которые получают больше чем сотрудник Smith. Решение данной задачи усложняется ввиду того, что для нахождения подобных сотрудников нам необходимо:
Узнать зарплату сотрудника Smith
Вытащить всех чья зарплата выше? чем зарплата полученная в предедущем шаге.
На языке SQL это решение будет выглядить ввиде двух запросов, при этом один из запросов будет вложен в другой запрос. Запрос находящийся внутри другого запроса называеться – подзапросом. Подзапрос возвращает значение, которое будет использоваться в основном запросе. Использования подзапросов, есть использования по очереди двух запросов, сперва получаем данные из подзапроса, а затем используем эти данные в качестве данных основного запроса.
Синтаксис и свойства подзапросов
Синтаксис простого подзапроса выглядит так:
SELECT select_list
FROM table
WHERE expr operator
(SELECT select_list
FROM table)
Здесь в качестве оператора может играть роль такие операторы сравнения как >;>=;<;<=;OR;IN при работе с запросами возравщающие ровно одно значение, а также для решения задач запросами возвращающие множество строк используйте в качестве операторов IN; ANY; ALL.
При этом сперва выполняется подзапрос (внутренней запрос), а результат операции будет передан основному запросу. Подзапрос – есть операция SELECT которая передает свое значения другому основному запросу. При этом возможности подзапроса велики, поэтому использования подзапросов открывает перед вами большие возможности. При этом возможно использовать подзапросы в следующих частях оператора SELECT:
В разделе SELECT
В качестве таблицы в разделе FROM
В разделе WHERE
В условиях HAVING
В разделе ORDER BY
Рассмотрим список правил, которые необходимо соблюдать во время построение подзапроса:
Подзапрос должен быть включен внутрь круглых скобок
Подзапрос необходимо ставить правую часть от оператора сравнения
Необходимости в упорядочения вывода подзапроса нет необходимости за исключением случаев, когда необходимо получить запроса типа Топ – n
Используйте однострочные операторы сравнения при работе с запросом возражающим одно значение и наоборот используйте только многострочные операторы сравнения при работе с запросом, возвращающим множество строк.
Типы подзапросов
Как уже вы наверное поняли из описания подзапросов существует два типа подзапросов:
Подзапросы, возражающие один результат
Подзапросы, возражающие множество строк в качестве результата.
Подзапросы возражающие один результат
Начнем разбирать все свойства, а также примеры подзапросов возражающих один результат. Конечно, при работе с подзапросами мы используем операторы сравнения. Для работы с этим типом подзапросов используется следующие операторы сравнения:
-
Оператор
Значение
=
равно
>
больше
<
меньше
>=
больше или равно
<=
меньше или равно
<>
не равно
!=
не равно
Пример запроса – вывести всех сотрудников, чьи зарплаты больше зарплаты сотрудника SMITH :
SELECT *
FROM emp
WHERE sal > (SELECT sal
FROM emp
WHERE ename = 'SMITH');
Мы рассмотрели простой пример подзапроса, немного усложним логику запроса и получим:
SELECT *
FROM emp
WHERE job = (SELECT job
FROM emp
WHERE ename = 'SMITH')
AND sal > (SELECT MIN (sal)
FROM emp
);
Как можно заметить из примера, в запросе можно использовать несколько подзапросов. В таком случаи результат будет получен сперва из подзапросов по очереди, а затем все данные полученные из подзапросов будут проставлены в качестве значений в основной запрос.
Хотя в примерах указаны подзапросы, берущие значения из одной таблицы, но подзапросы также могут брать значения из других таблиц. Также как вы заметили в данном примере, мы использовали одну из групповых функций.
До сих пор мы рассмотрели примеры подзапросов работающих в условии WHERE, но на практике бывает необходимость использования подзапросов в разделе HAVING. Подзапрос в этом случаи будет выполнен и результат будет направлен в условия HAVING.
Рассмотрим пример, где без подзапроса в разделе HAVING не обойтись. Допустим, нам необходимо вычислить какой из отделов получает самую низкую среднеарифметическую зарплату среди всех отделов компании.
SELECT job, avg(sal)
FROM emp
GROUP BY job
HAVING AVG(sal) = (SELECT MIN(AVG(sal))
FROM emp
GROUP BY job);