
- •Ис поддержки принятия решений.
- •Общая характеристика реляционной модели данных.
- •Типы данных
- •Типы данных, используемые в реляционной модели
- •Отношения, атрибуты, кортежи отношений.
- •Тема: Первая нормальная формула
- •Базовые концепции реляционных бд db2.
- •Объекты db2, используемые для хранения бд.
- •Контейнер Контейнер — это физическое хранилище. Имя контейнера — это имя папки (или имя устройства) или имя файла (для dms).
- •Буферный пул
- •Расчет физического пространства для таблиц.
- •Объекты системы
- •Целостность данных
- •Потенциальные ключи
- •Внешние ключи.
- •Целостность внешних ключей.
- •Операции, в результате которых нарушается ссылочная целостность:
- •Стратегии поддержания ссылочной целостности.
- •Дополнительные стратегии поддержки ссылочной целостности.
- •Нормальная форма отношений.
- •Критерий оценки качества логической модели данных.
- •Нормализация таблиц
- •Замкнутость реляционной алгебры
- •Зависимые реляционные операторы.
- •Запросы, невыразимые средствами реляционной алгебры.
- •Элементы языка sql.
- •Синтаксис языка sql с использованием языка Бэкуса-Наура.
- •Замечание
- •Замечание
- •Синтаксис условных выражений (из раздела where)
- •Порядок выполнения оператора select
- •Выражение средствами sql операторов реляционной алгебры
Синтаксис языка sql с использованием языка Бэкуса-Наура.
SELECT
Оператор выборки::=
табличное выражение [ORDER BY
{{ имя_столбца_результата [ASC | DESC]}|
|{положительное_целое [ASC | DESC]}},…];
табличное выражение::=
select_выражение
[{select_выражение | TABLE имя_таблицы |
| конструктор_значений_таблицы}]
select-выражение::=
SELECT [ALL | DISTINCT]
{{{скалярное_выражение | функция_агрегирования |
| select_выражение} [AS имя_столбца]},…} |
{{имя_таблицы | имя_корреляции}.*} | *
FROM
{{имя_таблицы [AS][имя_корреляции]
[(имя_столбца,…)]} |
{select_выражение [AS] имя_корреляции
[(имя_столбца,…)]} |
соединенная_таблица},…
[WHERE условное_выражение]
[GROUP BY [{{имя_таблицы |
имя_корреляции}.имя_столбца},…]
[HAVING условное_выражение]
Замечание
Select-выражение в разделе SELECT должно обязательно возвращать скалярное выражение (т.е. имя столбца таблицы, простые функции, возвращающие скалярное выражение, либо константа (не всегда)).
Условное выражение после WHERE должно вычисляться для каждой строки, являющейся кандидатом в результирующее множество строк. В условном выражении могут использоваться подзапросы.
Раздел HAVING содержит условное выражение, вычисляемое для каждой группы, определяемой списком группировки в разделе GROUP BY. Это условное выражение может содержать функции агрегирования, вычисляемые для каждой группы.
Условное выражение, сформулированное в разделе WHERE, может быть перенесено в раздел HAVING (обратное не возможно, если условное выражение содержит агрегатную функцию).
Если в разделе SELECT присутствуют агрегатные функции, то они вычисляются по-разному, в зависимости от раздела GROUP BY.
Пример:
SELECT AVG (SALARY) FROM EMPLOYEE
SELECT AVG (SALARY) FROM EMPLOYEE
GROUP BY DEPTNO, AVG (SALARY)
В первом случае будет одна строка, а во втором — множество строк, сгруппированных по номеру отдела.
Функция агрегирования::=
COUNT (*) | {{COUNT | MAX | MIN | SUM | AVG}
([ALL | DISTINCT] скалярное_выражение)}
конструктор значений таблицы::=
VALUES конструктор_значений_строки
конструктор_значений_строки::=
элемент_конструктора | (элемент_конструктора,…) |
select_выражение
Замечание
Select-выражение, используемое в конструкторе значений строки должно возвращать только одну строку.
элемент_конструктора::=
выражение | NULL | DEFAULT
соединенная таблица::=
перекрестное_соединение | естественное_соединение |
соединение_посредством_предикатов| соединение_посредством_имен_столбцов| соединение_объединение
тип соединения::=
INNER | LEFT[OUTER] | RIGHT[OUTER] |
FULL[OUTER]
Перекрестное соединение::=
Таблица A CROSS JOIN таблица В
Естественное соединение::=
Таблица А [NATURAL][тип_соединения] JOIN таблицаВ
Соединение посредством предиката::=
Таблица А [тип_соединения] JOIN таблица В
ON предикат
Соединение при помощи имен столбцов::=
Таблица А [тип_соединения] JOIN таблицы В
USING (имя_столбца,…)
Соединение объединения::=
Таблица А UNION JOIN таблица В
CROSS JOIN возвращает декартово произведение таблиц. Такое соединение в разделе FROM может быть заменено списком таблиц через запятую.
NATURAL JOIN производит соединение по всем столбцам А и В. В результирующей таблице одинаковые столбцы присутствуют только один раз.
JOIN...ON посредством предиката соединяет строки таблиц А и В.
JOIN..USING – соединение посредством общих имен столбцов таблиц А и В, которые указаны в списке USING.
Типы соединений:
OUTER — (внешний) необязательное ключевое слово. Не используется ни в каких операциях с данными.
INNER — (внутренний) используется по умолчанию, когда тип явно не задан. В таблицах А и В соединяются только те строки, в которых найдены совпадения.
LEFT OUTER — (левое внешнее) левое соединение таблиц А и В включает в себя все строки из левой таблицы А и только те строки из правой таблицы В, для которых обнаружены совпадения. Для строк из таблицы А, для которых не найдены совпадения из строк таблицы В, в столбцы, извлекаемые из таблицы В, заносятся NULL-значения.
RIGHT OUTER — (правое внешнее) правое соединение таблиц А и В включает в себя все строки из правой таблицы В и только те строки из левой таблицы А, для которых обнаружены совпадения. Для строк из таблицы В, для которых не найдены совпадения из строк таблицы А, в столбцы, извлекаемые из таблицы А, заносятся NULL-значения.
FULL OUTER — (полное внешнее) комбинация левого и правого соединения. В полное соединение включаются все строки из обеих таблиц. Для совпадающих строк поля заполняются реальными значениями, а для несовпадающих строк поля заполняются в соответствии с правилами левого и правого соединения.
UNION JOIN — соединение, обратное к внутреннему соединению. Включает только те строки из таблиц А и В, для которых не найдены совпадения. В них используется NULL-значение для столбцов, полученных из другой таблицы. Альтернативой является полное внешнее соединение с удалением строк, полученных в результате внутреннего соединения.
Условное выражения включает следующие предикаты: сравнение, between, in, like, null, exist, unique, match, overlaps, количественное сравнение.
Лекция №14 (23.05.02)