- •Недостатки файловых систем по сравнению с системами баз данных
- •Понятие системы и информационной системы. Классификация информационных систем
- •Понятие системы баз данных и ее упрощенная схема
- •Понятия интегрированности и разделяемости данных, независимости от данных и целостности данных применительно к системам баз данных
- •Жизненный цикл базы данных. Этапы концептуального, логического и физического проектирования базы данных
- •Понятия модели и модели данных. Логические модели данных
- •Иерархическая модель данных, ее достоинства и недостатки
- •Сетевая модель данных, ее достоинства и недостатки
- •Основные понятия реляционной алгебры
- •Определение сущности в реляционной алгебре. Свойства сущности
- •Понятия возможного, первичного и альтернативного ключей
- •Операции реляционной алгебры. Базовые реляционные операции
- •Теоретико-множественные;
- •Специальные.
- •Теоретико-множественные реляционные операции. Свойства реляционной операции декартова произведения
- •Специальные реляционные операции
- •Реляционные операции селекции и проекции
- •Реляционная операция соединения. Ее разновидности
- •Реляционная операция естественного соединения и ее свойства
- •Реляционная операция деления
- •Примитивные и не примитивные реляционные операции Оператор соединения
- •Оператор пересечения
- •Оператор деления
- •Типы связей между сущностями
- •Связь м:м
- •Связь между сущностями типа «многие ко многим». Ее преобразование при переходе к физической модели
- •Нормализация данных. Первая нормальная форма
- •Нормализация данных. Вторая нормальная форма
- •2 Нормальная форма
- •Нормализация данных. Третья нормальная форма и нормальная форма Кодда-Бойса
- •Нормализация данных. Четвертая и пятая нормальные формы
- •5Ая нормальная форма
- •Целостность данных
- •Основные и дополнительные правила ссылочной целостности
- •Язык sql: основные команды манипулирования данными
- •Язык sql: удаление записей из таблицы
- •Язык sql: использование операторов in, between, like и ключевого слова null в условиях отбора данных
- •Язык sql: обновление записей в таблице
- •Язык sql: выборка данных из таблиц. Использование агрегатных функций и вычисляемых полей
- •Язык sql: группировка строк набора данных
- •Язык sql: соединение таблиц (внутреннее и внешнее)
- •Язык sql: использование подзапросов
- •Язык sql: операторы exists, any, all в командах с подзапросом
- •Язык sql: основные команды определения данных
- •Язык sql: создание и использование представлений (просмотров) и индексов
- •Назначение и функции субд
- •Управление словарем данных и обеспечение безопасности данных в субд
- •Обеспечение целостности данных в субд
- •Управление многопользовательским доступом к данным в субд
- •Управление резервным копированием и восстановлением данных в субд
- •Механизм тиражирования (репликации) данных в субд
- •Типы баз данных
- •Иерархическая база данных, структура иерархических баз данных
- •Сетевая база данных, структура сетевых баз данных
- •Реляционные базы данных, структура реляционных баз данных особенности реляционных баз данных
- •Распределенные базы данных. Двенадцать правил Дейта для распределенных баз данных
- •Системы «клиент/сервер»
- •Системы поддержки принятия решений
- •Классификации
- •Структура
- •Преимущества
- •Хранилища данных. Их отличия от операционных баз данных
- •Подготовка данных применительно к хранилищам данных
- •Магазины (витрины) данных. Банки оперативных данных
- •Многомерные базы данных. Разработка (извлечение) данных
- •Технологии Big Data
- •ERwin: сильные и слабые связи между сущностями. Операции прямого и обратного проектирования
- •Операции прямого и обратного проектирования
- •Sql Server: курсоры и триггеры, их виды, процесс использования
Язык sql: соединение таблиц (внутреннее и внешнее)
Команда выборки данных позволяет извлечь данные сразу из нескольких таблиц, для этого их имена нужно перечислить во FROM, а в WHERE необходимо задать условие соединение, указывая через знак равенства поля, по которым происходит соединение таблиц. Чаще всего такими полями являются первичные и внешние ключи таблиц между которыми установлены связи типа 1:М
SELECT Группа.*, Студент.фамилия
FROM Группа, Студент
WHERE Группа.N_группы = Студент.N_группы
Чтобы упростить запись таких команд, имена таблиц в FROM снабжаются псевдонимами, которых можно использовать лишь в контексте данной команды
SELECT Г.*, С.фамилия
FROM Группа Г, Студент С
WHERE Г.N_группы = C.N_группы
SELECT Г.*, С.фамилия, Э.*
FROM Группа Г, Студент С, Экзамен Э
WHERE Г.N_группы = C.N_группы
AND C.N_зачетки = Э.N_зачетки
Существуют следующие правила:
Число условий соединения предложения WHERE не должно быть меньше, чем n – 1, где n – число таблиц, перечисленных во FROM.
Если условия соединения не указывать, то результирующий набор данных будет представлять собой декартово произведение таблиц, перечисленных в FROM.
SELECT Г.*, Э.*
FROM Группа Г, Экзамен Э
/*не получится соединить, т.к. нет непосредств. Связи */
Чтобы избежать декартово произведения нужно добавить связующую страницу и 2 условия соединения.
Как правило, БД не содержит изолированных таблиц, поэтому нужно соединять любые таблицы, добавляя при необходимости промежуточные связующие таблицы.
SELECT С.фамилия, С.N_зачетки, Э.оценка
FROM Студент С, Экзамен Э
WHERE C.N_зачетки = Э.N_зачетки
AND C.N_группы = 372302
AND Э.предмет = ‘Теория систем’
ORDER BY С.фамилия
SELECT Г.N_группы, AVG(Э.оценка)
FROM Группа Г, Студент С, Экзамен Э
WHERE Г.N_группы = C.N_группы
AND C.N_зачетки = Э.N_зачетки
AND Г.Факультет = ‘ИЭ’
AND Э.предмет = ‘Теория систем’
GROUP BY Г.N_группы
Рассмотренный способ соединения таблиц:
Известен как внутреннее соединение, и он характерен тем, что результирующий набор данных будет содержать только те строки, которые удовлетворяют условиям соединения, указанным в
WHERE
SELECT Г.*, С.фамилия
FROM Группа Г, Студент С
WHERE Г.N_группы = C.N_группы
Предположим, что таблица студент содержит 100 строк, в которых поле N_группы наполовину не заполнено(NULL), тогда эта команда вернет результирующий набор данных, содерж. 50 строк, т.к. поле N_группы фигурирует в условии соединения таблиц. Если мы хотим получить фамилии всех 100 студентов и увидеть, у кого отсутствует инфа о N_группы, то нужно использовать другой тип соединения, называемый внешним соединением.
Внешнее соединение может быть левым или правым.
Левое внешнее соединение включ. в результ. набор данных все строки таблицы, расположенный слева в предл. FROM, а правое внешнее – все троки таблицы, распол. справа.
При этом условие соединения записываются в предл. FROM после зарезервированного слова ON
SELECT Г.*, С.фамилия
FROM Студент С LEFT OUTER JOIN Группа Г
ON Г.N_группы = С.N_группы
SELECT Г.*, С.фамилия
FROM Группа Г
RIGHT OUTER JOIN Студент С
ON Г.N_группы = С.N_группы
SELECT Г.*, С.фамилия, Э.оценка
FROM Студент С
LEFT OUTER JOIN Группа Г ON Г.N_группы = С.N_группы
LEFT OUTER JOIN Экзамен Э ON С.N_зачетки = Э.N_зачетки
WHERE Э.предмет = ‘Теория систем’
Внешнее соединение используется не очень часто и обычно в тех случаях, когда поля, по которым производится соединение содержит NULL значит, если же указанных поля не содержат NULL значений, то внутр. и внешн. соединение порождают один и тот же набор данных
SELECT С.фамилия, Э.*
FROM Студент С
RIGHT OUTER JOIN Экзамен Э ON С.N_зачетки = Э.N_зачетки
WHERE Э.оценка
~
SELECT С.фамилия, Э.*
FROM Студент С, Экзамен Э
RIGHT OUTER JOIN Экзамен Э ON С.N_зачетки = Э.N_зачетки
WHERE C.N_зачетки = Э.N_зачетки
AND Э.оценка = 10
Имеется другой альтернативный способ записи внутренних соединений. Аналогичн. способ записи внешних соединений.
SELECT С.фамилия, Э.*
FROM Студент С
INNER JOIN Экзамен Э ON С.N_зачетки = Э.N_зачетки
WHERE Э.оценка = 10