- •1. Форматирование выходных данных запросов. 39
- •Тема 1.
- •1. Введение. История развития баз данных.
- •1. Введение. История развития баз данных
- •2. Основные понятия и определения
- •Тема 2.
- •1. Архитектура базы данных. Физическая и логическая независимость.
- •1. Архитектура базы данных. Физическая и логическая независимость
- •2. Разработка приложений в среде Microsoft Windows. Системы быстрой разработки приложений. Субд. Модели данных.
- •3. Основные этапы проектирование базы данных.
- •Тема 3.
- •1. Дополнительные общие рекомендации по проектированию базы данных.
- •2. Разработка приложений в среде Microsoft Windows.
- •1. Дополнительные общие рекомендации по проектированию базы данных.
- •2. Разработка приложений в среде Microsoft Windows.
- •Тема 4.
- •1. Построение таблиц.
- •2. Запросы в Microsoft Access. Параметры запросов на выборку данных.
- •3. Операции реляционной алгебры.
- •1. Построение таблиц
- •2. Запросы в Microsoft Access. Параметры запросов на выборку данных.
- •3. Операции реляционной алгебры.
- •Тема 5.
- •1. Понятие технологии «Клиент-сервер». Общие сведения о языке запросов sql.
- •2. Структура sql.
- •1. Понятие технологии «Клиент-сервер». Общие сведения о языке запросов sql.
- •2. Структура sql.
- •Тема 6.
- •1. Запрос выборки в языке sql. Выборка из одной таблицы.
- •2. Суммирование данных с помощью функций агрегирования (групповых функций).
- •1. Запрос выборки в языке sql. Выборка из одной таблицы.
- •2.Суммирование данных с помощью функций агрегирования (групповых функций).
- •Тема 7.
- •1. Форматирование выходных данных запросов.
- •2.Соединение таблиц
- •3.Вложенные подзапросы
- •4.Связанные подзапросы. Оператор exists
- •5.Вложенные и связанные подзапросы. Операторы any, all, come
- •Тема 8.
- •1. Форматирование выходных данных запросов.
- •1. Форматирование выходных данных запросов.
- •Тема 9.
- •1. Запросы обновления таблиц.
- •2. Создание, модификация и уничтожение таблиц. Ограничение на множество допустимых значений данных. Значение по умолчанию.
- •3. Создание и уничтожение индексов. Поддержка ссылочной целостности.
- •1. Запросы обновления таблиц.
- •2. Создание, модификация и уничтожение таблиц. Ограничение на множество допустимых значений данных. Значение по умолчанию.
- •3. Создание и уничтожение индексов. Поддержка ссылочной целостности.
- •Тема 10.
- •1. Создание представлений .
- •2. Определение правд доступа к данным.
- •1. Создание представлений.
- •2. Определение правд доступа к данным.
- •Тема 11.
- •1. Определение синонимов объектов. Понятие транзакций. Управление параллелизмом.
- •Тема 12.
- •1. Встроенный sql, основные понятия
- •1. Встроенный sql, основные понятия.
2.Соединение таблиц
До сих пор мы рассматривали запросы, которые базировались на одной таблице. Теперь перейдем к запросам, которые будут базироваться на множестве таблиц. При использовании в запросе множества таблиц их имена перечисляются в предложении FROM через запятую. В общем случае:
SELECT список_полей
FROM список_таблиц
Строит декартово произведение таблиц.
Установление связей со строками таблиц может быть выполнено с помощью предложения WHERE.
Пример: Построить список дипломников с указанием руководителя работы.
snmae |
Pname |
С-1 |
П-1 |
С-2 |
П-1 |
С-3 |
П-2 |
FROM ПРЕПОДАВАТЕЛЬ, СТУДЕНТ
WHERE pnum=spdp;
Таким образом, представленный пример реализует операцию слияния реляционной алгебры средствами SQL.
В предложении WHERE могут быть одновременно заданы и другие операции отбора записи из исходных таблиц.
Например, дополнительное условие для кафедры К-1 упорядочены по убыванию фамилии студентов.
Sname |
pname |
С-2 |
П-1 |
С-2 |
П-1 |
FROM ПРЕПОДАВАТЕЛЬ, СТУДЕНТ
WHERE pnum=spdp AND
Pcaf =”K-1”
GROUP BY sname DESC;
В соединении могут участвовать несколько таблиц, например: пусть требуется отобразить результаты экзамена в форме преподаватель, студент, дата, оценка.
pname |
sname |
odate |
Ocen |
П-1 |
С-1 |
10/01/01 |
5 |
П-1 |
С-2 |
11/01/01 |
4 |
П-1 |
С-3 |
11/01/01 |
3 |
П-3 |
С-1 |
15/01/01 |
5 |
П-3 |
С-3 |
16/01/01 |
2 |
П-3 |
С-3 |
17/01/01 |
4 |
FROM ПРЕПОДАВАТЕЛЬ, СТУДЕНТ, ОЦЕНКА
WHERE pnum = opnum AND
Snum = osnum;
Как правило, в предложении WHERE в присоединении таблиц используется операция равно. Такие соединения, основанные на равенстве, называются эквисоединениями. Использование равенства не всегда является обязательным. Так же можно использовать и другие операции сравнения, хотя они и используются очень редко.
Использованные в примерах имена полей были различны.
При использовании имен полей, которые совпадают, следует указывать имя таблицы и поля, с целью устранения неоднозначности.
Например, для списка дипломников:
SELECT СТУДЕНТ, sname, ПРЕПОДАВАТЕЛЬ, pname
FROM СТУДЕНТ, ПРЕПОДАВАТЕЛЬ,
WHERE pnum=spdp;
В предложении FROM могут быть определены алиасы(дополнительные имена) в форме
FROM имя_таблицы AS[АЛИАС],…
Для предыдущего примера:
SELECT C.sname, П.pname
FROM ПРЕПОДАВАТЕЛЬ П, СТУДЕНТ С
WHERE pnum = spdp;
Алиасы могут применяться для сокращения записей сложного запроса. Другим примером неоднозначности в опознании полей является соединение таблицы со своей копией (самообъединение).
Это может понадобиться для получения всевозможных пар значений одного атрибута. Это требует обязательного определения алеаса.
sname |
Sname |
C-1 |
C-1 |
C-1 |
C-2 |
C-2 |
C-2 |
C-2 |
C-1 |
C-4 |
C-4 |
SELECT C1.sname, C2.sname
FROM студент С1, студент С2
WHERE C1.spdp=C2.spdp
Соединение таблиц может быть определено без использования предложения WHERE путем указания операции JOIN в предложении FROM. Формат этой команды имеет следующий вид:
FROM табл1(irrer/left/right) JOIN табл2 OR условие_объединения;
Где табл1 и табл2 – имена объединяемых таблиц.
Условие объединения обычно имеет вид:
Табл1.поле1=табл2.поле2
INNER JOIN – объединяет записи двух таблиц
LEFT JOIN – создаёт левое внешнее объединение, при котором все записи из первой (левой) таблицы включаются в результат, даже если во второй правой таблице нет соответствующих записей по условию;
RIGHT JOIN – создаёт правое внешнее объединение, при котором все записи из второй правой таблицы включаются в результат;
Пример 1:
Получить список дипломников с указанием руководителя.
sname |
pname |
C-1 |
П-1 |
C-2 |
П-1 |
C-3 |
П-2 |
FROM студент INNER JOIN
Преподаватель ON pnum = spdp;
Пример 2: получить список студентов и руководителей при его наличии.
sname |
pname |
C-1 |
П-1 |
C-2 |
П-1 |
C-3 |
П-2 |
C-4 |
|
FROM студент LEFT JOIN
Преподаватель ON pnum = spdp;
Если соединяется более 2 таблиц, то используются вложенные операции JOIN.
FROM таблица1 INNER JOIN (таблица2 INNER JOIN (таблица3 ON условие_объединения 2_3) ON условие_объединения 1_2);