Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
44.43 Кб
Скачать

15) Внутреннее и внешнее объединение таблиц внутри запросов (объяснить разницу).

во многих СУБД существуют реализации операции внутреннего и внешнего условных соединений таблиц внутри одного запроса – INNER JOIN (внутреннее объединение), LEFT JOIN (полное левое объединение) и RIGHT JOIN (полное правое объединение). Синтаксис применения операция объединения выглядит следующим образом: SELECT список_полей FROM таблица1 ( INNER | LEFT | RIGHT ) JOIN таблица2 ON таблица1.связующее_поле = таблица2.связующее_поле; В результате выполнения внутреннего объединения из кортежей двух объединяемых таблиц остаются только те, для которых выполняется указанное условие. Например: -- получение имен менеджеров и связанных с ними дилеров -- (менеджеры, не связанные с дилерами и дилеры не связанные

-- с менеджерами исключатся из результата) SELECT Managers.Name, Dealers.Name FROM Managers INNER JOIN Dealers ON Managers.D_id=Dealers.D_id; При полном (внешнем) левом объединении из кортежей двух объединяемых таблиц остаются все кортежи таблицы, указанной слева от условного выражения, и кортежи правой таблицы, для которых выполняется указанное условие. Например: -- получение всех менеджеров и связанных с ними дилеров, -- включая менеджеров, не связанных с дилерами SELECT Managers.Name, Dealers.Name FROM Managers LEFT JOIN Dealers ON Managers.D_id=Dealers.D_id; При полном (внешнем) правом объединении из кортежей двух объединяемых таблиц остаются все кортежи таблицы, указанной справа от условного выражения, и кортежи левой таблицы, для которых выполняется указанное условие. Например: -- получение всех дилеров и связанных с ними менеджеров, -- включая дилеров, не связанных с менеджерами SELECT Managers.Name, Dealers.Name FROM Managers RIGHT JOIN Dealers ON Managers.D_id=Dealers.D_id; В СУБД ORACLE также для реализации левого внешнего объединения используется оператор (+) в предложении WHERE, который ставиться справа от столбца, по которому осуществляется соединение, справа от знака =. Аналогично для правого объединения оператор (+) ставиться справа от столбца слева от знака равенства. Например: -- получение всех менеджеров и связанных с ними дилеров, -- включая менеджеров, не связанных с дилерами SELECT Managers.Name, Dealers.Name FROM Managers, Dealers WHERE Managers.D_id=Dealers.D_id(+); -- получение всех дилеров и связанных с ними менеджеров, -- включая дилеров, не связанных с менеджерами SELECT Managers.Name, Dealers.Name FROM Managers, Dealers WHERE Managers.D_id(+)=Dealers.D_id;

16) Групповые функции, группировка и фильтрация групп (назначение).

Групповые функции В большинстве современных СУБД есть возможность использовать так называемые групповые функции (group functions), позволяющие анализировать сразу группы записей. Под группой записей понимается любой набор записей, имеющих что-то общее – например, записи, относящиеся к одному товару, одному отделу или одному временному интервалу. В операторе SELECT при помощи параметра GROUP BY можно определить состав групп, после чего при помощи групповых функций подсчитать количество записей, вошедших в группу, подсчитать итоговую сумму, а также минимальное, максимальное или среднее значение для каждой группы. Если параметр GROUP BY в запросе не указан, то группой записей считается все строки интересующей таблицы. COUNT Функция возвращает количество записей в группе. Возможно три варианта использования функции COUNT: COUNT(*) – подсчет количества записей в группе; COUNT(поле) – подсчет количества отличных от NULL значений в указанном поле записей группы; COUNT(DISTINCT поле) – подсчет количества уникальных отличных от NULL значений в указанном поле записей группы. Примеры использования функции COUNT: -- подсчет количества строк в таблице Students SELECT COUNT(*) FROM Student s; -- подсчет количества всех различных фамилий студентов SELECT COUNT(DISTINCT L_name) FROM Students; SUM Функция SUM возвращает суммарное значение для группы. -- подсчет суммарного значения риска SELECT SUM(Risk) FROM Hobby; MAX Функция MAX возвращает максимальное значение для группы. -- подсчет максимальной даты рождения среди студентов, т. е. поиск самого молодого студента SELECT MAX(B_Data) FROM Students; MIN Функция MIN возвращает минимальное значение для группы.  поиск самого “старого” студента SELECT MIN(B_Data) FROM Students; AVG Функция AVG возвращает среднее значение для группы. -- подсчет средней степени риска для хобби, названия которых заканчиваются на «ов» SELECT AVG(Risk) FROM Hobbys WHERE Hobby_name Like ‘%ов’;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]