
- •Основные требования к организации базы данных
- •Основные компоненты субд
- •Три уровня представления данных в аис.
- •Классификация моделей данных
- •Инфологическое моделирование
- •Иерархическая модель данных
- •Сетевая модель данных
- •Реляционная модель данных. Элементы модели
- •Правила вывода функциональной зависимости
- •Реляционная алгебра
- •Нфсо, нф1, нф2
- •Нормальная форма Бойса - Кодда(нфбк)
- •Минимальное покрытие
- •Обобщённый алгоритм декомпозиции:
- •Соединение без потерь, сохраняющих зависимость
- •Метод Табло
- •Язык запросов sql. Основные категории
- •Язык запросов sql. Тип связывания
- •Многотабличные запросы. Использование псевдонимов
- •Использование оператора union для объединения результатов инструкций select
- •Модели транзакций. Журнал транзакций.
- •Основные компоненты субд Cache'
- •Файлы прямого и последовательного доступа
- •Инвертированные списки
- •Многозначная зависимость
- •Модель удаленного доступа к данным
- •Постреляционная модель данных
- •Многомерные модели
- •Распределенная обработка данных
- •Плотный, неплотный индекс
- •Модель сервер-приложение
- •Организация индексов в виде в-деревьев
- •Реляционное исчисление с переменными на доменах
- •Реляционное исчисление с переменными кортежами
- •Модель активного сервера
- •Модель файлового сервера
- •Субд Cache. Виды классов. Элементы классов
Использование оператора union для объединения результатов инструкций select
UNION объединяет информацию из 2-х и более отдельных запросов SELECT в один курсор или таблицу. При этом в команде SELECT можно использовать до 10 членов UNION, связывая каждую инструкцию SELECT с предыдущей. Результирующий набор, созданный первой командой SELECT, определяет требуемую структуру для остальных команд SELECT. Порядок, количество, размер и тип полей в первой команде SELECT определяет структуру для всех последующих команд SELECT.
Например, для получения списка всех студентов и преподавателей фамилии которых заключены между буквами «К» и «С»:
SELECT SFAM, SIMIA FROM STUD; WHERE SFAM BETWEEN ‘K’ AND ‘C’; UNION; SELECT TFAM, TIMIA FROM TEACHER; WHERE TFAM BETWEEN ‘K’ AND ‘C’
Когда 2 или более запросов подвергаются объединению, их столбцы вывода должны быть совместимы для объединения. Это означает для каждого запроса необходимость включения одинакового числа столбцов в том же порядке, что и 1, 2, 3 и т.д. и при этом должна присутствовать совместимость типов.
Например: символьные поля должны иметь одинаковое число символов. Кроме того нельзя использовать агрегатные функции в запросе SELECT при объединении. Агрегатные функции – MIN, MAX, AVG, SUM. Также UNION будет автоматически исключать дубликаты строк из вывода.
Пусть таблица STUD1 содержит поле, состоящее из 30 символов, которые включают Имя и Фамилию.
Таблица TEACHER содержит отдельные поля для имени и фамилии. Сумма длин этих полей также равна 30 символам.
В таблице STUD1 определено поле для хранения факультета, а в таблице TEACHER – нет. Для объединения данных результирующих наборов необходимо согласовать эти различия.
SELECT STUD1.FAC FROM STUD;
UNION;
SELECT PADR (ALLTRIM(TEACHER.FIRSTNAME)+ALLTRIM(TEACHER.LASTNAME), 30);
AS NAME, SPACE (10) AS FAK;
FROM TEACHER
Член SPACE(10) играет роль «заглушки», которая относится к полю, содержащему имя факультета в файле TEACHER. Этот член заполняет поле с именем факультета в объединенные результирующие таблицы пробелами. Без подобной заглушки операция UNION корректно работать не будет. Подобную заглушку можно поставить в любой инструкции SELECT. Можно поместить заглушку в первую команду SELECT, чтобы зарезервировать строку пробелов для поля, которое существует только в последующих командах SELECT. Можно включить пробелы в одну из внутренних команд SELECT, чтобы обеспечить совпадение с первой командой SELECT.
Функция ALLTRIM удаляет пробелы слева и справа из соответствующего имени учителя.
Функция PADR создает поле с заданной длиной. Между именем и фамилией поставлен разделительный пробел (+). Если общая длина поля меньше 30-символьного ограничения, то будет усечен последний символ.
Воздействие ключевого слова UNION аналогично действию DISTINCT. Это значит, что каждая добавленная в результирующий набор запись проверяется на уникальность. Члены UNION используются только для объединения запросов, но никак не влияют на подзапросы.
Правила объединения с помощью UNION:
Любое поле, включенное в первый список полей, должно быть представлено полем или заглушкой в последующих списках полей.
Любое поле из последующих списков полей, которое не входит в первый список полей, должно быть представлено заглушкой в первом списке
В первом списке не должно быть вычисляемых полей
Члены ORDER BY и INTO могут входить в любую инструкцию SELECT, но только 1 раз и применяются ко всему результату.
Член ORDER BY должен ссылаться на поля, по их позициям в списке, а не по имени.
При отсутствии члена ORDER BY для сортировки используется порядок следования полей в списке.
Члены GROUP BY и HAVING могут присутствовать в каждой инструкции SELECT, причем их влияние ограничено только результатами работы данной инструкции SELECT.
С помощью членов UNION нельзя объединять результаты подзапросов, то есть члены UNION нельзя применить к инструкциям SELECT, используемым внутри члена WHERE других инструкций SELECT.
При построении объединения можно использовать не более 10 членов UNION.