
- •Базы данных. Вопросы к экзамену.
- •Архитектура базы данных. Объектно-ориентированная модель.
- •Нормализация отношений базы данных. 1 нормальная форма.(нф)
- •Нормализация отношений базы данных. 2 нормальная форма.(нф) нф
- •Нормализация отношений базы данных. 3 нормальная форма(нф). Нф Бойса-Кодда.
- •Модель сущность-связь.
- •Модель сущность-связь. Степень связи.
- •15.Модель сущность-связь. Класс принадлежности сущности.
- •Структурированный язык запросов. Типы данных в sql. Запрос.
- •Удаление избыточных данных distinct.
- •Выбор при использовании предложения. Примеры простых предикатов.
- •Предикат between. Предикат in.
- •Предикат like.
- •Получение итоговых значений с помощью агрегатных функций.
- •Использование групповых операций. Предложение group by.
- •Предложение having.
- •Использование в запросе нескольких источников записей.
- •Явные операции соединения таблиц.
- •Традиционные операции над множествами. Декартово произведение, объединение.
- •Команды описания данных ddl (создание, удаление базы данных, создание, удаление таблицы).
- •Изменение свойств таблицы (alter table).
Использование в запросе нескольких источников записей.
Как видно из приведенного в конце предыдущего раздела синтаксиса оператора SELECT, в предложении FROM допускается указание нескольких таблиц. Простое перечисление таблиц практически не используется, поскольку оно соответствует реляционной операции декартова произведения. Т.е. в результирующем наборе каждая запись из одной таблицы будет сочетаться с каждой записью в другой.
Поэтому перечисление таблиц, как правило, используется совместно с условием соединения строк из разных таблиц, указываемым в предложении WHERE. Для приведенных выше таблиц таким условием может быть совпадение значений, скажем, в столбцах a и c:
SELECT *
FROM A, B
WHERE a = c;
Переименование также требуется, если в предложении FROM используется подзапрос. Так, первый пример можно переписать следующим образом:
SELECT DISTINCT PC.model, maker FROM PC, (SELECT maker, model FROM Product) AS prod WHERE PC.model = prod.model AND price < 600; |
Явные операции соединения таблиц.
FROM <таблица 1> [INNER]
{{LEFT | RIGHT | FULL }[OUTER]} JOIN <таблица 2> [ON <предикат>]
Соединение может быть либо внутренним (INNER), либо одним из внешних (OUTER). Служебные слова INNER и OUTER можно опускать, поскольку внешнее соединение однозначно определяется его типом - LEFT (левое), RIGHT (правое) или FULL (полное), а просто JOIN будет означать внутреннее соединение.
Традиционные операции над множествами. Декартово произведение, объединение.
Напомним, что при декартовом произведении каждая строка из первой таблицы соединяется с каждой строкой второй таблицы. В результате количество строк результирующего набора равно произведению количества строк операндов декартова произведения. В нашем примере таблица Laptop содержит 5 строк, а таблица Product — 16. В результате получается 5 * 16 = 80 строк. Поэтому мы не приводим здесь результат выполнения этого запроса. Вы можете сами проверить это утверждение, нажав ссылку "выполнить" или выполнив приведенный выше запрос с помощью консоли.
Для объединения запросов используется служебное слово UNION:
<запрос 1>
UNION [ALL]
<запрос 2>
Предложение UNION приводит к появлению в результирующем наборе всех строк каждого из запросов. При этом, если определен параметр ALL, то сохраняются все дубликаты выходных строк, в противном случае в результирующем наборе присутствуют только уникальные строки. Заметим, что можно связывать вместе любое число запросов. Кроме того, с помощью скобок можно задавать порядок объединения.
Операция объединения может быть выполнена только при выполнении следующих условий:
количество выходных столбцов каждого из запросов должно быть одинаковым;
выходные столбцы каждого из запросов должны быть совместимы между собой (в порядке их следования) по типам данных; в результирующем наборе используются имена столбцов, заданные в первом запросе;
предложение ORDER BY применяется к результату соединения, поэтому оно может быть указано только в конце всего составного запроса.
Традиционные операции над множествами. Пересечение и разность.
В стандарте языка SQL имеются предложения оператора SELECT для выполнения операций пересечения и разности результатов запросов-операндов. Этими предложениями являются INTERSECT [ALL] (пересечение) иEXCEPT [ALL] (разность), в результирующий набор попадают только те строки, которые присутствуют в обоих запросах (INTERSECT) или только те строки первого запроса, которые отсутствуют во втором (EXCEPT).
SELECT name FROM Ships INTERSECT SELECT ship FROM Outcomes
SELECT ship FROM Outcomes EXCEPT SELECT name FROM Ships;