
- •1. Определение информации. Основные проблемы, возникающие при хранении информации.
- •2. Отличительные особенности субд как программного продукта. Понятие экземпляра и базы данных.
- •3. Категории пользователей субд. Функциональные требования различных категорий пользователей к субд.
- •4. История развития субд. Особенности не реляционных моделей данных.
- •5. Общая характеристика моделей данных. Основные свойства. Понятие атрибутов, доменов.
- •6. Отношения модели данных. Понятия сущности и связи.
- •7. Ограничение целостности модели данных. Трехуровневая архитектура ansi/sparc.
- •8. Структурные компоненты модели данных в нотации idef1x. Понятия сущность, связь. Типы сущностей и связей.
- •9. Реляционная модель данных. Базовые структурные компоненты реляционной модели данных. Основные свойства.
- •10. Свойства реляционной модели данных. Представление сущности.
- •11. Свойства реляционной модели данных. Представление связи.
- •12. Требования целостности в реляционной модели данных.
- •13. Язык определения данных в реляционной модели данных. Основные возможности. Примеры.
- •14. Типы ограничений целостности, основные типы данных, основные операции реляционной модели данных.
- •15. Проектирование реляционных баз данных. Цели проектирования, основные этапы.
- •16. Проектирование реляционных баз данных. Проблемы обновления, удаления, добавления данных. Типы ограничений целостности.
- •17. Функциональная зависимость. Нормализация отношений. Концепция нормальных форм.
- •18. Первая и вторая нормальные форма. Определение. Аномалии, возникающие при нарушении. Примеры нарушения и нормализации.
- •19. Третья нормальная форма. Нормальная форма Бойса-Кодда. Определение. Аномалии, возникающие при нарушении. Примеры нарушения и нормализации.
- •20. Понятие многозначной зависимости. Примеры.
- •21. Четвертая и пятая нормальные формы. Определение. Аномалии, возникающие при нарушении. Примеры нарушения и нормализации.
- •22. Основные свойства sql, как языка программирования. Отличие от других языков программирования.
- •23. Основы построения sql- запросов. Источники данных запроса. Условия выборки кортежей. Примеры.
- •24. Левые, правые и полные соединения. Функции для работы с null значениями. Выборка уникальных записей. Примеры.
- •25. Использование подзапросов. Типы подзапросов. Примеры.
- •26. Коррелированные подзапросы. Особенности использования in, not in,exists, not exists.
- •27. Теоретико-множественные операции в sql-запросах. Примеры.
- •28. Агрегирующие функции. Группировка кортежей. Примеры.
- •29. Представления. Особенности использования. Примеры.
- •30. Триггеры в Transact sql. Пример реализации триггера.
- •31. Курсоры. Основные функции. Правила применения. Примеры.
- •32. Внутренние структуры данных. Двухуровневая система доступа к данным. Отношения каталогов.
- •33. Методы доступа к данным. Бинарные деревья.
- •34. Методы доступа к данным. Многоходовые деревья.
- •35. Методы доступа к данным. Сбалансированные деревья. Структура, правила следования. Основные свойства.
- •36. Операция вставки элемента в в-дерево. Проблема переполнения, методы решения. Пример.
- •37. Операция удаления элемента из в-дерева. Проблема антипереполнения. Методы решения. Пример
- •42. Индекс на основе битовых карт. Основные свойства.
- •43. Индекс на основе битовых карт. Структура листового блока. Операция добавления элемента.
- •44. Индекс на основе битовых карт. Операция обновления элемента. Блокировка записей.
- •45. Методы доступа к данным. Основные операции выполнения sql-выражения.
- •46. Методы доступа к данным. Типы соединений таблиц.
24. Левые, правые и полные соединения. Функции для работы с null значениями. Выборка уникальных записей. Примеры.
Компании (companies) |
Контакты (contacts) | |||||||||||||||||||||||||
|
|
Обычное эквисоединение
SELECT contact_name, company_name
FROM contacts INNER JOIN companies
ON contacts.company_id = companies.company_id
ORDER BY contact_name
contact_name |
company_name |
Бендер Остап Сулейманович |
Рога и копыта |
Привалов Александр Иванович |
НИИ ЧАВО |
Внешнее соединение слева
SELECT contact_name, company_name
FROM contacts LEFT OUTER JOIN companies
ON contacts.company_id = companies.company_id
ORDER BY contact_name
contact_name |
company_name |
Бендер Остап Сулейманович |
Рога и копыта |
Гарин Петр Петрович |
NULL |
Привалов Александр Иванови |
НИИ ЧАВО |
Внешнее соединение справа
SELECT contact_name, company_name
FROM contacts RIGHT OUTER JOIN companies
ON contacts.phone = companies.phone
ORDER BY contact_name
contact_name |
company_name |
NULL |
Рога и копыта |
Гарин Петр Петрович |
НИИ ЧАВО |
Привалов Александр Иванович |
НИИ ЧАВО |
Полное соединение
SELECT contact_name, company_name
FROM contacts FULL OUTER JOIN companies
ON contacts.phone = companies.phone
ORDER BY contact_name
contact_name |
company_name |
NULL |
Рога и копыта |
Бендер Остап Сулейманович |
NULL |
Гарин Петр Петрович |
НИИ ЧАВО |
Привалов Александр Иванович |
НИИ ЧАВО |
Перекрестное соединение
SELECT contact_name, company_name
FROM contacts CROSS JOIN companies
ORDER BY contact_name
contact_name
company_name
Бенде
Остап Сулейманович
Рога и копыта
Бендер Остап Сулейманович
НИИ ЧАВО
Гарин Петр Петрович
Рога и копыта
Гарин Петр Петрович
НИИ ЧАВО
Привалов Александр Иванович
Рога и копыта
Привалов Александр Иванович
НИИ ЧАВО
JOIN — оператор языка SQL, позволяющий соединять записи из двух таблицреляционной базы данных. Входит в разделFROMоператораSELECTи отдельно от него не используется. Типы:
INNER JOIN (или просто JOIN) внутреннего соединения соединяет две таблицы, причём порядок таблиц для оператора неважен, поскольку оператор является симметричным.
OUTER JOIN внешнего соединения выполняет присоединение таблицы с необязательным присутствием записи в таблице. Отдельно не используется. Делится на:
LEFT OUTER JOIN к левой таблице присоединяются все записи из правой, соответствующие условию (по правилам inner join), плюс все не вошедшие записи из левой таблицы, поля правой таблицы заполняются значениями NULL.
RIGHT OUTER JOIN к правой таблице присоединяются все записи из левой, соответствующие условию (по правилам inner join), плюс все не вошедшие записи из правой таблицы, поля левой таблицы заполняются значениями NULL.
FULL OUTER JOINК к левой таблице присоединяются все записи из правой, соответствующие условию (по правилам inner join), плюс все невошедшие записи из правой таблицы, поля левой таблицы заполняются значениями NULL и плюс все не вошедшие записи из левой таблицы, поля правой таблицы заполняются значениями NULL
CROSS JOIN перекрёстного соединения, или декартова произведения, при которой каждый кортеж одного отношения соединяется с каждым кортежом другого отношения, давая тем самым в результате все возможные сочетания кортежей двух отношений.
SELECT 1 = NULL, 1 <> NULL, 1 < NULL, 1 > NULL; | ||||||
1 = NULL |
1 <> NULL |
1 < NULL |
1 > NULL | |||
NULL |
NULL |
NULL |
NULL | |||
SELECT 1 IS NULL, 1 IS NOT NULL; | ||||||
1 IS NULL |
1 IS NOT NULL | |||||
0 |
1 |
DISTINCT - аргумент который обеспечивает устранение двойных значения из предложения SELECT. Другими словами, DISTINCT следит за тем, какие значения были ранее, так что бы они не были продублированы в списке.