Построение запросов к БД оператор select презентация

Содержание

Слайд 2

Цель занятия Научиться строить как простые, так и сложные запросы к БД с помощью оператора SELECT

Цель занятия

Научиться строить как простые, так и сложные запросы к

БД с помощью оператора SELECT
Слайд 3

Простые запросы select select from В oracle запрещены запросы без

Простые запросы select
select <список_знач> from <источник>
В oracle запрещены запросы без

источника данных
выход – использование в качестве источника данных таблицу-заглушку dual
Select <выражение> from dual
Примеры:
select (123+45)/56 from dual - получение значения вычисляемого выражения
select sysdate from dual – получение текущей даты
select ‘Место жительства: ’ from dual – использование строкового литерала
Слайд 4

Основные операторы

Основные операторы

Слайд 5

Использование регулярных выражений regexp_like (строка, регулярное_выражение) В регулярном выражении используются обозначения:

Использование регулярных выражений

regexp_like (строка, регулярное_выражение)
В регулярном выражении используются обозначения:

Слайд 6

Простые запросы select

Простые запросы select

Слайд 7

Простые запросы select

Простые запросы select

Слайд 8

Использование агрегатных функций Агрегатная функция – функция, принимающая неопределённое кол-во аргументов и возвращающая одно значение

Использование агрегатных функций

Агрегатная функция – функция, принимающая неопределённое кол-во аргументов и

возвращающая одно значение
Слайд 9

Использование агрегатных функций select avg (Зарплата) as ‘средняя зп’ from Сотрудники

Использование агрегатных функций

select avg (Зарплата) as ‘средняя зп’ from Сотрудники

Слайд 10

Использование группировки Группировка – объединение исходного набора записей в группы

Использование группировки

Группировка – объединение исходного набора записей в группы записей по

указанному критерию и вывода по одной итоговой строке для каждой группы

select Отдел, avg (Зарплата) as “средняя зп” from Сотрудники group by Отдел

Слайд 11

Использование группировки Группировка возможна по нескольким столбцам select Фамилия, Отдел,

Использование группировки

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

select Фамилия, Отдел, count (*) as

кол-во from Сотрудники group by Отдел, Фамилия
Слайд 12

Фильтрация групп оператор having – задаёт условие отбора групп select

Фильтрация групп

оператор having – задаёт условие отбора групп

select Фамилия, Отдел, count

(*) as кол-во from Сотрудники group by Отдел, Фамилия having кол-во >1
Слайд 13

Включение подитогов Предложение rollup Включает в итоговый набор итоговое значение

Включение подитогов

Предложение rollup
Включает в итоговый набор итоговое значение по каждому

из уровню группировки и по всем уровням группировки
Предложение cube
Включает в итоговый набор итоговое значение по каждому из уровню группировки и по каждой комбинации уровней группировки
Синтаксис:
select ….
group by rollup(<уровни группировки>)
select ….
group by cube(<уровни группировки>)
Слайд 14

Использование множественных операторов select….. union | union all || intersect || minus select….. …

Использование множественных операторов

select…..
union | union all || intersect || minus
select…..

Слайд 15

Соединения Соединения необходимы для вывода в одном итоговом наборе согласованных

Соединения

Соединения необходимы для вывода в одном итоговом наборе согласованных данных из

нескольких связанных таблиц

+

=

Слайд 16

Виды соединений

Виды соединений

Слайд 17

Внутреннее соединение Выводит в итоговый набор только те записи, у

Внутреннее соединение

Выводит в итоговый набор только те записи, у которых есть

соответствующая запись в связанной таблице

+

=

select Фамилия, Расположение, Телефон
from Сотрудники inner join Отделы
on Отделы.Отдел = Сотрудники.Отдел

Слайд 18

Внешнее левое соединение Выводит в итоговый набор все записи из

Внешнее левое соединение

Выводит в итоговый набор все записи из левой (подчинённой)

таблицы и только соответствующие записи из правой (главной) таблицы

+

=

select Отделы.Отдел, Расположение, Телефон
from Сотрудники left outer join Отделы
on Отделы.Отдел = Сотрудники.Отдел

Слайд 19

Внешнее правое соединение Выводит в итоговый набор все записи из

Внешнее правое соединение

Выводит в итоговый набор все записи из правой (главной)

таблицы и только соответствующие из левой (подчинённой) записи из таблицы

+

=

select Фамилия, Расположение, Телефон
from Сотрудники right outer join Отделы
on Отделы.Отдел = Сотрудники.Отдел

Слайд 20

Внешнее полное соединение Комбинация внешнего правого и внешнего левого соединения

Внешнее полное соединение

Комбинация внешнего правого и внешнего левого соединения

+

=

select Отделы.Отдел, Расположение,

Телефон
from Сотрудники full outer join Отделы
on Отделы.Отдел = Сотрудники.Отдел
Слайд 21

Перекрёстное соединение (декартово произведение) Всевозможные комбинации записей правой и левой

Перекрёстное соединение (декартово произведение)

Всевозможные комбинации записей правой и левой таблицы

+

=

select

Отделы.Отдел, Расположение, Телефон
from Сотрудники cross join Отделы
Слайд 22

Самосоединение (соединение таблицы с копией себя) Всевозможные комбинации записей правой

Самосоединение (соединение таблицы с копией себя)

Всевозможные комбинации записей правой и левой

таблицы

+

=

select сотрудники_подчин.Фамилия, ‘подчиняется: ’, сотрудники_нач.Фамилия
from Сотрудники as сотрудники_подчин inner join Сотрудники as сотрудники_нач

Слайд 23

Иерархические (рекурсивные) запросы Используются для вывода записей, состоящих в иерархических

Иерархические (рекурсивные) запросы

Используются для вывода записей, состоящих в иерархических отношениях
Операторы, используемые

при построении иерархических запросов:

select level, ID_сотрудника, Подчиняется from Сотрудники
start with Подчиняется is null
connect by prior ID_сотрудника = Подчиняется

Слайд 24

Вложенные запросы в условии отбора записи фигурирует значение, вычисляемое подзапросом

Вложенные запросы

в условии отбора записи фигурирует значение, вычисляемое подзапросом
select <список_ст>

from <имя_т> where ст <оператор><подзапрос>
select Название_должности from Должности
where Оклад > (select avg (Оклад) from Должности)
в качестве источника данных служит итоговый набор подзапроса
select <список_ст> from (<подзапрос> )
select count(*) from
(select Фамилия from Сотрудники inner join Отделы
on Сотрудники.ID_отдела = Отделы.ID_отдела)
Слайд 25

Вложенные коррелированные запросы Внутренний подзапрос обращается к данным внешнего запроса;

Вложенные коррелированные запросы

Внутренний подзапрос обращается к данным внешнего запроса;
Внутренний подзапрос выполняется

заново для каждой записи внешнего запроса
Например, отбираем только те отделы, в которых существуют сотрудники:
select * from отделы as внешняя_табл
where exists(select * from Сотрудники as внутренняя_табл
where внутренняя_табл.ID_Отдела=внешняя_табл.ID_Отдела);
ссылка на внешнюю таблицу
Для дифференциации внешних и внутренних таблиц с одинаковыми именами используются псевдонимы
Слайд 26

Дополнительная литература (!!!) http://download.oracle.com/docs/cd/ B19306_01/server.102/b14200/queries.htm#i2068094 http://sql-language.ru/ http://habrahabr.ru/blogs/sql/43955/ http://www.oracloid.ru/index.php?t=169

Дополнительная литература

(!!!) http://download.oracle.com/docs/cd/ B19306_01/server.102/b14200/queries.htm#i2068094
http://sql-language.ru/
http://habrahabr.ru/blogs/sql/43955/
http://www.oracloid.ru/index.php?t=169

Имя файла: Построение-запросов-к-БД-оператор-select.pptx
Количество просмотров: 32
Количество скачиваний: 0