Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Базы данных. Язык запросов SQL. Команда SELECT. Дополнительные возможности

Содержание

СамосоединениеВ команде SELECT можно обратиться к одной и той же таблице несколько раз. При этом для каждой таблицы необходимо задать свой алиас, чтобы можно было обращаться к полям этих таблиц. Система будет выполнять такой запрос на
Базы данныхЯзык запросов SQL. Команда SELECT. Дополнительные возможности СамосоединениеВ команде SELECT можно обратиться к одной и той же таблице несколько Результат самосоединения ПодзапросыПодзапрос – это запрос SELECT, расположенный внутри другой команды. Подзапросы можно разделить Пример БД: проектная организацияDeparts – отделы,		Project – проекты,Emp – сотрудники,	Job – участие в проектах. Данные таблицы Emp (сотрудники) Расположение подзапросов в командах DMLВ команде INSERT:Вместо VALUES, например, добавление данных из Расположение подзапросов в команде selectЧаще всего подзапрос располагается в части WHERE.Пример 1. Примеры использования подзапросов в части WHEREВыдать список сотрудников, имеющих детей:а) с помощью Расположение подзапросов в команде selectПодзапрос  в части FROM.Например, выведем список сотрудников, Расположение подзапросов в команде selectПодзапрос  в части HAVING.	Например, выведем список отделов, ПредставленияНазначение представлений:Хранение сложных запросов.Представление данных в виде, удобном пользователю.Сокрытие конфиденциальной информации.Предоставление дифференцированного Представления: примерСоздать представление Представления: примерСоздать представление Представления: примерыСоздать представление Обновляемые представленияПредставление может быть обновляемым и не обновляемым. Обновляемым является представление, при Обновляемые представленияВносимые изменения могут выйти за рамки определяющего запроса и поэтому не Оператор CASEОператор CASE может быть использован в одной из двух синтаксических форм Особенности использования CASEВсе предложения WHEN должны иметь одинаковую синтаксическую форму, то есть Примеры использования оператора CASE1) Посчитать количество студентов дневной и вечерней формы обучения:create Примеры использования оператора CASE2) Вывести все имеющиеся модели ПК с указанием цены.
Слайды презентации

Слайд 2 Самосоединение
В команде SELECT можно обратиться к одной и

той же таблице несколько раз. При этом для каждой

таблицы необходимо задать свой алиас, чтобы можно было обращаться к полям этих таблиц. Система будет выполнять такой запрос на основе декартова произведения таблиц, поэтому необходимо указывать условие соединения. А для того чтобы исключить соединение записи таблицы с самой собой в запросе на самосоединение необходимо также указывать условие типа "не равно" (<>, >, <).
Пример использования самосоединения:
Вывести список детей сотрудников, у которых есть младшие братья или сёстры:
SELECT e.name, c1.name AS child1, c1.born AS born1,
c2.name AS child2, c2.born AS born2
FROM children c1, children c2, emp e
WHERE c1.tabno=e.tabno -- первое условие соединения
AND c1.tabno=c2.tabno -- второе условие соединения
AND c1.bornORDER BY 1, 3;

Слайд 3 Результат самосоединения

Результат самосоединения

Слайд 4 Подзапросы
Подзапрос – это запрос SELECT, расположенный внутри другой

ПодзапросыПодзапрос – это запрос SELECT, расположенный внутри другой команды. Подзапросы можно

команды.
Подзапросы можно разделить на следующие группы в зависимости

от возвращаемых результатов:
скалярные – запросы, возвращающие единственное значение (начинаются с немодифицированного оператора сравнения);
векторные – запросы, возвращающие от 0 до нескольких элементов (начинаются с оператора IN или модифицированного оператора сравнения);
табличные – запросы, возвращающие таблицу (обычно, запросы на существование, начинаются с оператора EXISTS).
Подзапросы бывают:
некоррелированные – не содержат ссылки на запрос верхнего уровня; вычисляются один раз для запроса верхнего уровня;
коррелированные – содержат условия, зависящие от значений полей в основном запросе; вычисляются для каждой строки запроса верхнего уровня.

Слайд 5 Пример БД: проектная организация
Departs – отделы, Project – проекты,
Emp

Пример БД: проектная организацияDeparts – отделы,		Project – проекты,Emp – сотрудники,	Job – участие в проектах.

– сотрудники, Job – участие в проектах.


Слайд 6 Данные таблицы Emp (сотрудники)

Данные таблицы Emp (сотрудники)

Слайд 7 Расположение подзапросов в командах DML
В команде INSERT:
Вместо VALUES,

Расположение подзапросов в командах DMLВ команде INSERT:Вместо VALUES, например, добавление данных

например, добавление данных из одной таблицы в другую:
insert into

emp select * from new_emp;
В команде UPDATE:
в части WHERE для вычисления условий, например, повышение зарплаты на 10% всем участникам проектов:
update emp set salary = salary*1.1
where tabNo IN (select tabNo from job);
в части SET для вычисления значений полей, например, повышение зарплаты на 10% за каждое участие сотрудника в проекте:
update emp e set salary = salary*(1+(select count(*)/10 from job j
where j.tabNo = e.tabNo) );
В команде DELETE:
в части WHERE для вычисления условий, например, удаление сведений об участии в закончившихся проектах:
delete from job
where pro IN (select pro from project where dend < sysdate);

Слайд 8 Расположение подзапросов в команде select
Чаще всего подзапрос располагается

Расположение подзапросов в команде selectЧаще всего подзапрос располагается в части WHERE.Пример

в части WHERE.
Пример 1. Вывести список сотрудников, у которых

зарплата выше, чем средняя по предприятию:
select * from emp
where salary > (select avg(salary) from emp);

Пример 2. Вывести список сотрудников, у которых зарплата выше, чем средняя по каждому отделу предприятия:
select * from emp
where salary > ALL (select avg(salary) from emp group by depno);


Слайд 9 Примеры использования подзапросов в части WHERE
Выдать список сотрудников,

Примеры использования подзапросов в части WHEREВыдать список сотрудников, имеющих детей:а) с

имеющих детей:
а) с помощью операции соединения таблиц:
SELECT e.*
FROM emp

e, children c
WHERE e.tabno=c.tabno;
б) с помощью некоррелированного векторного подзапроса:
SELECT *
FROM emp
WHERE tabno IN (SELECT tabno FROM children);
в) с помощью коррелированного табличного подзапроса:
SELECT *
FROM emp e
WHERE EXISTS (SELECT * FROM children c
WHERE e.tabno=c.tabno);

Слайд 10 Расположение подзапросов в команде select
Подзапрос в части

Расположение подзапросов в команде selectПодзапрос в части FROM.Например, выведем список сотрудников,

FROM.
Например, выведем список сотрудников, у которых зарплата выше, чем

средняя в отделе, в котором работает данный сотрудник, через коррелированный подзапрос:
select * from emp e
where salary > (select avg(salary) from emp m
where m.depno = e.depno);
Это работает долго, т.к. коррелированный подзапрос вычисляется для каждой
строки основного запроса. Можно ускорить выполнение данного запроса:
select *
from emp e,
(select depno, avg(salary) sal
from emp
group by depno) m -- подзапрос вычисляется 1 раз
where m.depno = e.depno
and salary > sal;

Слайд 11 Расположение подзапросов в команде select
Подзапрос в части

Расположение подзапросов в команде selectПодзапрос в части HAVING.	Например, выведем список отделов,

HAVING.
Например, выведем список отделов, в которых средняя зарплата ниже,

чем средняя по предприятию:
select depno, avg(salary) sal
from emp
group by depno
having avg(salary) < (select avg(salary) from emp);

Подзапрос в части SELECT.
Например, выведем список сотрудников с указанием количества проектов, в которых они участвуют:
select depno, name,
(select count(*) from job j where j.tabno = e.tabno) cnt
from emp e;

Этот запрос выведет даже тех сотрудников, которые не участвуют в проектах
(для них cnt будет равен 0).

Слайд 12 Представления
Назначение представлений:
Хранение сложных запросов.
Представление данных в виде, удобном

ПредставленияНазначение представлений:Хранение сложных запросов.Представление данных в виде, удобном пользователю.Сокрытие конфиденциальной информации.Предоставление

пользователю.
Сокрытие конфиденциальной информации.
Предоставление дифференцированного доступа к данным.
Создание представления выполняется

командой CREATE VIEW:
CREATE [ OR REPLACE ] VIEW <имя представления>
[ (<список имён столбцов>) ]
AS <запрос> [ WITH CHECK OPTION ];
Запрос (команда SELECT), на основании которого создаётся представление, называется определяющим запросом, а таблицы, к которым происходит обращение в определяющем запросе – базовыми таблицами. Определяющий запрос по стандарту SQL не может включать предложение ORDER BY.

Представление (view, обзор) – это хранимый запрос, создаваемый на основе команды SELECT. Представление реально не содержит данных. Запрос, определяющий представление, выполняется тогда, когда к представлению происходит обращение с другим запросом, например, SELECT, UPDATE и т.д.


Слайд 13 Представления: пример
Создать представление "Сотрудники с детьми" (для удобного

Представления: примерСоздать представление

представления данных о детях сотрудников):
CREATE VIEW emp_child(depno, name, child,

sex, born)
AS SELECT e.depno, e.name, c.name, c.sex, c.born
FROM emp e, children c
WHERE e.tabno = c.tabno;
SELECT * FROM emp_child;

Слайд 14 Представления: пример
Создать представление "Сотрудники 2-го отдела" (для предоставления

Представления: примерСоздать представление

полного доступа к данным о сотрудниках 2-го отдела начальнику

этого отдела):
CREATE VIEW emp2
AS SELECT *
FROM emp
WHERE depno = 2;
SELECT * FROM emp2;

Слайд 15 Представления: примеры
Создать представление "Сотрудники" (без данных о зарплате,

Представления: примерыСоздать представление

для сокрытия конфиденциальной информации):
CREATE VIEW employees
AS SELECT tabno,

depno, name, post, born, phone
FROM emp;

Создать представление "Статистика по проектам" (для хранения сложных запросов): название проекта, ФИО руководителя, количество исполнителей, количество консультантов.
CREATE VIEW pro_stat
AS SELECT title, e.name,
(select count(*) from job j where j.pro=p.pro and rel='исполнитель') jobs,
(select count(*) from job j where j.pro=p.pro and rel='консультант') consult
FROM emp e, project p, job j
where e.tabno=j.tabno and j.pro=p.pro
and j.rel='руководитель';

Слайд 16 Обновляемые представления
Представление может быть обновляемым и не обновляемым.

Обновляемые представленияПредставление может быть обновляемым и не обновляемым. Обновляемым является представление,

Обновляемым является представление, при обращении к которому можно обновить

базовую таблицу.
Пример обновления базовой таблицы emp через представление emp2:
UPDATE emp2
SET salary = 48000
WHERE tabno = '100';
Изменения будут произведены в базовой таблице и отразятся в представлении.
SELECT * FROM emp2;

Слайд 17 Обновляемые представления
Вносимые изменения могут выйти за рамки определяющего

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

запроса и поэтому не будут видны через представление. Если

необходимо защитить данные от такого вмешательства, то нужно в команде создания представления указать ключевые слова WITH CHECK OPTION: тогда система отвергнет изменения, выходящие за рамки определяющего запроса.

По стандарту SQL-2 представление не является обновляемым, если определяющий запрос:

содержит ключевое слово DISTINCT;
содержит множественные операции (UNION и др.);
содержит предложение GROUP BY;
ссылается на другое необновляемое представление;
содержит вычисляемые выражения в списке выбора;
выбирает данные более чем из одной таблицы.

Слайд 18 Оператор CASE
Оператор CASE может быть использован в одной

Оператор CASEОператор CASE может быть использован в одной из двух синтаксических

из двух синтаксических форм записи:
1-я форма:
CASE

WHEN <сравниваемое выражение 1> THEN <возвращаемое значение 1>

WHEN <сравниваемое выражение N> THEN <возвращаемое значение N>
[ELSE <возвращаемое значение>]
END

2-я форма:
CASE
WHEN <предикат 1> THEN <возвращаемое значение 1>

WHEN <предикат N> THEN <возвращаемое значение N>
[ELSE <возвращаемое значение>]
END

Слайд 19 Особенности использования CASE
Все предложения WHEN должны иметь одинаковую

Особенности использования CASEВсе предложения WHEN должны иметь одинаковую синтаксическую форму, то

синтаксическую форму, то есть нельзя смешивать первую и вторую

формы.
При использовании первой синтаксической формы условие WHEN удовлетворяется, как только значение проверяемого выражения станет равным значению выражения, указанного в предложении WHEN.
При использовании второй синтаксической формы условие WHEN удовлетворяется, как только предикат принимает значение TRUE.
При удовлетворении условия оператор CASE возвращает значение, указанное в соответствующем предложении THEN.
Если ни одно из условий WHEN не выполнилось, то будет использовано значение, указанное в предложении ELSE.
При отсутствии ELSE, будет возвращено NULL-значение.
Если удовлетворены несколько условий, то будет возвращено значение предложения THEN первого из них, так как остальные просто не будут проверяться.

Слайд 20 Примеры использования оператора CASE
1) Посчитать количество студентов дневной

Примеры использования оператора CASE1) Посчитать количество студентов дневной и вечерней формы

и вечерней формы обучения:
create view students_number (DEPARTMENT,YEAR,DAY_FORM,EVENING_FORM) as
select gr.department,

gr.year,
count(case when gr.study='ДНЕВНАЯ' then 1 else null end) form1,
count(case when gr.study='ВЕЧЕРНЯЯ' then 1 else null end) form2
from groups gr, students st
where gr.group_code = st.group_code
group by gr.department, gr.year, gr.study
order by gr.department, gr.year asc;




  • Имя файла: bazy-dannyh-yazyk-zaprosov-sql-komanda-select-dopolnitelnye-vozmozhnosti.pptx
  • Количество просмотров: 126
  • Количество скачиваний: 0