1 БАЗЫ ДАННЫХ Создание сложных запросов. Запросы на нескольких таблицах. ЗАНЯТИЕ 7 ПУГАЧЁВ Ю.В. Учитель информатики Харьковская общеобразовательная школа.

Презентация:



Advertisements
Похожие презентации
1 БАЗЫ ДАННЫХ Использование SQL для построения запросов. ЗАНЯТИЕ 6 ПУГАЧЁВ Ю.В. Учитель информатики Харьковская общеобразовательная школа І-ІІІ ступеней.
Advertisements

Язык SQL Применение агрегатных функций и вложенных запросов в операторе выбора.
СУБД 7. Использование подзапросов в языке запросов SQL.
Объединение таблиц Подзапросы. Оператор SELECT дает возможность выборки информации сразу из нескольких таблиц, которые перечислены в списке FROM. Такая.
СУБД 5. SQL для выборки данных. 2 SELECT Обработка элементов оператора SELECT выполняется в следующей последовательности: FROM – определяются имена используемых.
Урок повторения по теме: «Сила». Задание 1 Задание 2.
Вставка INSERT INTO table (column, column,...) VALUES (expr, expr...) LOAD DATA INFILE "C:\\tmp\\file.txt" INTO TABLE table.
Р ЕЛЯЦИОННАЯ АЛГЕБРА И SQL. Рассмотрим, как связаны операции реляционной алгебры и язык SQL, т.е. приведем примеры запросов SQL, аналогичных операциям.
1 Лекция 6 Команды категории извлечения данных языка структурированных запросов SQL План лекции Выборка определенных столбцов таблицы Устранение избыточных.
СУБД Microsoft Access 2003 Элементы языка SQL. Язык SQL SQL (Structured Query Language) – структурированный язык запросов Язык SQL применяется во многих.
Выражения унарные (унарный минус) арифметические (+, -, *, /) сравнения (, =, =, , LIKE, BETWEEN...) конкатенации (||) логические (NOT, AND, OR)
Базы данных Язык запросов SQL. Команда SELECT (продолжение)
Базы данных Язык запросов SQL. Команда SELECT. Команда SELECT – выборка данных Общий синтаксис: SELECT [{ ALL | DISTINCT }] { список_вывода | * } FROM.
Расширенные темы 1. SQL запросы Язык JPQL является абстракцией и «общим знаменателем» всех SQL диалектов. Очевидно, что конкретный диалект обладает бОльшими.
Язык SQL Вложенные запросы и внешние объединения.
1 Знаток математики Тренажер Таблица умножения 2 класс Школа 21 века ®м®м.
Язык SQL Операторы манипулирования данными. Операции манипулирования данными DELETE операция удаления записей INSERT операция добавления или ввода новых.
Школьная форма Презентация для родительского собрания.
Бланк запроса. Создание списка специальностей Вид при конструирования запросов.
СУБД Access Запросы Автор: Тутыгин В.С.. Назначение запросов Запросы обеспечивают простой доступ к определенному подмножеству записей одной или нескольких.
Транксрипт:

1 БАЗЫ ДАННЫХ Создание сложных запросов. Запросы на нескольких таблицах. ЗАНЯТИЕ 7 ПУГАЧЁВ Ю.В. Учитель информатики Харьковская общеобразовательная школа І-ІІІ ступеней 60 Харьковского городского совета Харьковской области

2 Цель: Содержание: Изучить возможности обращаться с запросами к нескольким таблицам; возможности использования подзапросов и операторов EXISTS, ANY, SOME и UNION для построения сложных запросов. Соединение таблиц. Эквивалентные и другие виды соединений. Соединения таблицы самой с собой. Использование подзапросов. Операторы EXISTS, ALL, ANY, SOME и UNION. Интерактивный и вложенный SQL

3 Задание: напишите следующие запросы SELECT City, COUNT (SNum) FROM C WHERE Rating>150 GROUP BY City; Запрос 32: по каждому городу посчитать количество клиентов с рейтингом выше 150. SELECT Comm, COUNT (SNum) FROM S GROUP BY Comm HAVING COUNT (SNum)>3; Запрос 33: по каждому размеру комиссионных посчитать количество служащих и вывести, если это количество больше 3.

4 Запрос 34: вывести имена служащих и клиентов, которых они обслуживают. Соединение таблиц /запросы из нескольких таблиц/ Результат: SELECT SName, CName FROM S, C WHERE S.SNum=C.SNum; SELECT имена полей FROM имена таблиц WHERE условие соединения таблиц;

5 Запрос 36: вывести имена служащих и клиентов, проживающих в одном городе. Запрос 38: вывести имена служащих, клиентов и суммы операций, которые были осуществлены. Результат: SELECT S.City, S.Snum, S.SName, C.CNum, C.CName FROM S, C WHERE S.City=C.City; SELECT S.SNum, S.SName, C.CNum, C.CName, Summa FROM S,C,O WHERE S.SNum=C.SNum AND C.CNum=O.CNum; Запрос 37: для каждого служащего посчитать количество клиентов, которых он обслуживает. SELECT S.SNum, S.SName, COUNT (*) FROM S, C WHERE S.SNum=C.SNum GROUP BY S.SNum, S.SName; Примеры построения сложных запросов Результат:

6 Соединение таблицы самой с собой Запрос 35: вывести пары имен служащих, имеющих одинаковые комиссионные. a) SELECT S1.SNum, S1.SName, S2.SNum, S2.SName FROM S S1, S S2 WHERE S1.Comm=S2.Comm; S S2S1 b) SELECT S1.SNum, S1.SName, S2.SNum, S2.SName FROM S S1, S S2 WHERE S1.Comm=S2.Comm AND S1.SNum

7 Результат: Использование подзапросов Запрос 39: вывести информацию о служащих, комиссионные которых выше среднего. SELECT * FROM S WHERE Comm>(Select AVG (Comm) From S); SELECT … (SELECT … ); Внешний запросПодзапрос (внутренний запрос) SELECT … WHERE (SELECT … ); в предложении WHERE: Comm>

8 Запрос 40: вывести информацию о клиентах, рейтинг которых выше максимального рейтинга по городу Харькову. Запрос 42: вывести города, максимальные комиссионные в которых выше средних комиссионных в городе Москва. SELECT * FROM C WHERE Rating> (SELECT MAX(Rating) FROM C WHERE City=Харьков); SELECT City, MAX(Comm) FROM S GROUP BY City HAVING MAX(Comm)> (SELECT AVG(Comm) FROM S WHERE City=Москва); Запрос 41: вывести имена клиентов, которые живут в тех городах, которые обслуживает служащий номер 101. SELECT C.CNum, C.CName FROM C WHERE City IN (SELECT City From S WHERE SNum=101); в предложении HAVING: Примеры запросов с подзапросами

9 Запрос 44: вывести информацию о клиентах, которые имеют рейтинг выше, чем рейтинг любого клиента из города Киева. EXISTS (использует результат подзапроса, чтобы указать, нужно ли выполнять главный запрос); SELECT * FROM C WHERE Rating > ALL (SELECT Rating FROM C WHERE City=Киев); Запрос 43: вывести информацию о служащих, если хотя бы один из них проживает в городе Харькове. SELECT * FROM S WHERE EXISTS (SELECT * From S WHERE City=Харьков); ALL (предикат является верным, если каждое значение выбранное подзапросом удовлетворяет условию в предикате внешнего запроса ): Использование операторов EXISTS и ALL

10 Запрос 46: найти служащих, проживающих в городах, где есть клиенты. ANY / SOME (похожий на EXISTS, но используются с реляционными операторами); SELECT Sname, City FROM S WHERE City=ANY (SELECT DISTINCT City FROM C); Запрос 45: вывести информацию о клиентах, которые имеют рейтинг выше рейтинга хотя бы одного клиента из города Киева. SELECT * FROM C WHERE Rating > ANY (SELECT Rating FROM C WHERE City=Киев); SELECT * FROM C WHERE Rating > SOME (SELECT Rating FROM C WHERE City=Киев); Использование операторов ANY/SOME

11 Правила объединения запросов: -Объединяемые запросы должны возвращать одинаковое количество полей; -Объединяемые запросы должны возвращать однотипные соответствующие поля. Оператор UNION – позволяет объединить результаты нескольких запросов. SELECT … UNION SELECT …. UNION … SELECT …; Оператор UNION

12 Запрос 48: получить статистику о сдаче эксамена по дисциплине в форме: UNION SELECT Оценку 4 имеет, COUNT(*), человека FROM B WHERE Mark = хорошо UNION SELECT Оценку 3 имеет, COUNT(*), человека FROM B WHERE Mark = удовлетворительно; Пример использования оператора UNION FIOMark Иванов И.И.Отлично Петров П.П.Хорошо Петрова С.С.Отлично Сидоров С.С.Отлично Федорова Ф.Ф.Удовлетворительно Яшин Я.Я.Хорошо В (Ведомость по «ОБД») Оценку 5 имеет3человека Оценку 4 имеет2человека Оценку 3 имеет1человека SELECT Оценку 5 имеет, COUNT(*), человека FROM B WHERE Mark = отлично

Различают: - интерактивный SQL (используется для функционирования непосредственно в БД); - вложенный SQL (помещается внутри программ, написанных на другом языке /в Delphi (Pascal), Builder(C++), Oracle(PL/SQL)/. 13 Интерактивный и вложенный SQL