Элементы языка SQL

Содержание

Слайд 2

Язык SQL

SQL (Structured Query Language) – структурированный язык запросов

Язык SQL применяется во

Язык SQL SQL (Structured Query Language) – структурированный язык запросов Язык SQL
многих СУБД

Существуют стандарты языка, но его реализация отличается для различных СУБД

SQL удобен в системах «клиент-сервер»

Слайд 3

Язык SQL

Применение SQL в СУБД Access

В Microsoft Access язык SQL применяется при

Язык SQL Применение SQL в СУБД Access В Microsoft Access язык SQL
построении запросов к базе данных

Для многих задач может оказаться достаточным использования мастера или конструктора, но не для всех

Любой запрос, построенный с помощью мастера или конструктора, может быть представлен на языке SQL. Обратное неверно.

Также SQL используется при работе с внешними источниками данных (например, СУБД Oracle или Microsoft SQL Server)

В частности, запрос на языке SQL может быть напрямую задан в полях свойств «Источник записей» или «Источник строк» элементов форм и отчетов, чтобы обойтись без создания отдельного объекта «Запрос»

Слайд 4

SQL и конструктор запросов

Для переключения режимов конструктора используется кнопка «Вид» панели инструментов

SQL и конструктор запросов Для переключения режимов конструктора используется кнопка «Вид» панели инструментов

Слайд 5

Оператор SELECT

SELECT <список полей> FROM <список таблиц>;

Пример 1:
SELECT Фамилия, Имя, Отчество FROM Клиент;

Извлечь список

Оператор SELECT SELECT FROM ; Пример 1: SELECT Фамилия, Имя, Отчество FROM
всех клиентов (ФИО) из таблицы «Клиент»

Пример 2:
SELECT * FROM Клиент;

Извлечь список всех клиентов (все поля) из таблицы «Клиент»

Любой оператор SQL завершается символом «точка с запятой»

При построении запросов на извлечение данных из БД в SQL используется оператор SELECT

Простейшая форма оператора SELECT:

Слайд 6

Оператор SELECT

Результаты выполнения запросов

Пример 1

Пример 2

Оператор SELECT Результаты выполнения запросов Пример 1 Пример 2

Слайд 7

Оператор SELECT

Объединение нескольких таблиц в запросе

SELECT Клиент.Фамилия, Подписка.КодЖурнала FROM Клиент, Подписка;

Пример: Есть две таблицы. Построим

Оператор SELECT Объединение нескольких таблиц в запросе SELECT Клиент.Фамилия, Подписка.КодЖурнала FROM Клиент,
запрос, выводящий фамилии клиентов и коды журналов.

Результат представляет собой декартово произведение исходных таблиц. Каждая запись таблицы «Клиент» объединяется с каждой записью таблицы «Подписка»

Следует ограничить результирующее множество записями, которые связаны между собой (содержат одинаковые значения в полях «КодКлиента»)

Слайд 8

Оператор SELECT

Объединение нескольких таблиц в запросе

SELECT Клиент.Фамилия, Подписка.КодЖурнала FROM Клиент INNER JOIN Подписка

Оператор SELECT Объединение нескольких таблиц в запросе SELECT Клиент.Фамилия, Подписка.КодЖурнала FROM Клиент
ON Клиент.КодКлиента = Подписка.КодКлиента;

В предложении «FROM» вместо оператора объединения «,» (запятая) будем использовать оператор «INNER JOIN» - внутреннее объединение.

Результат содержит только записи, для которых выполняется заданное условие

Оператор «INNER JOIN» позволяет наложить ограничение на объединяемые записи. Предложение ON <условие> определяет связь между полями объединяемых таблиц

Слайд 9

Оператор SELECT

Виды объединения

В режиме конструктора тип объединения можно изменить заданием свойств связи

INNER

Оператор SELECT Виды объединения В режиме конструктора тип объединения можно изменить заданием
JOIN (внутреннее объединение)

В результат включаются только те записи из обоих таблиц, которые связаны между собой

LEFT JOIN (левое внешнее объединение)

В результат включаются все записи из первой таблицы. Если для них нет связанных записей во второй таблице, соответствующие поля результата будут пустыми

RIGHT JOIN (правое внешнее объединение)

Операция, зеркально симметричная левому объединению

При создании запроса в режиме конструктора для таблиц, связи которых заданы в схеме данных, автоматически определяется операция «INNER JOIN»

Слайд 10

Оператор SELECT

Виды объединения

SELECT Клиент.Фамилия, Подписка.КодЖурнала FROM Клиент INNER JOIN Подписка ON Клиент.КодКлиента =

Оператор SELECT Виды объединения SELECT Клиент.Фамилия, Подписка.КодЖурнала FROM Клиент INNER JOIN Подписка
Подписка.КодКлиента;

Здесь присутствует фамилия «Федоров», для которой нет соответствий в таблице «Журнал». Вторая колонка этой строки содержит значение «Null» (пусто).

Пример

Созданный ранее запрос и результат его работы:

SELECT Клиент.Фамилия, Подписка.КодЖурнала FROM Клиент LEFT JOIN Подписка ON Клиент.КодКлиента = Подписка.КодКлиента;

Тот же запрос с использованием левого объединения:

Слайд 11

Оператор SELECT

Группировка

Усовершенствуем составленный ранее запрос

Требуется для каждого клиента (фамилии) подсчитать количество журналов,

Оператор SELECT Группировка Усовершенствуем составленный ранее запрос Требуется для каждого клиента (фамилии)
на которые он подписан

SELECT Клиент.Фамилия, Count(Подписка.КодЖурнала) FROM Клиент LEFT JOIN Подписка ON Клиент.КодКлиента = Подписка.КодКлиента GROUP BY Клиент.Фамилия;

Зададим группировку записей по фамилии (фамилии не должны повторяться) и для групп определим групповую операцию «подсчет количества»

В предложении GROUP BY могут быть перечислены несколько полей через запятую

Для всех полей, не вошедших в предложение GROUP BY, должны быть определены групповые операции

Слайд 12

Оператор SELECT

Сортировка. Имена (псевдонимы)

Что еще осталось сделать?

Псевдонимы можно задавать не только для

Оператор SELECT Сортировка. Имена (псевдонимы) Что еще осталось сделать? Псевдонимы можно задавать
столбцов, но и для таблиц

Результат работы запроса:

То, что фамилии расположены по алфавиту – совпадение. Следует явно указать способ сортировки

Надо задать осмысленное название второго столбца (сейчас название сформировано автоматически)

SELECT Клиент.Фамилия, Count(Подписка.КодЖурнала) AS Количество FROM Клиент LEFT JOIN Подписка ON Клиент.КодКлиента = Подписка.КодКлиента GROUP BY Клиент.Фамилия ORDER BY Клиент.Фамилия ASC;

Слово ASC задает сортировку по возрастанию (его можно опустить). Для сортировки по убыванию используется слово DESC

Слайд 13

Оператор SELECT

Сравнение с режимом конструктора

Результат запроса теперь такой:

Посмотрим, как созданный запрос выглядит

Оператор SELECT Сравнение с режимом конструктора Результат запроса теперь такой: Посмотрим, как
в режиме конструктора

Слайд 14

Оператор SELECT

Ограничение результирующих наборов

Оператор SELECT извлекает данные из одной или нескольких таблиц

Оператор SELECT Ограничение результирующих наборов Оператор SELECT извлекает данные из одной или
и из всех возможных комбинаций оставляет только те, которые соответствуют заданным критериям отбора

Говорят, что при выборке выполняются операции умножения и сужения

Умножение – построение всех возможных комбинаций записей (декартово произведение таблиц)

Сужение – отсечение «лишних» комбинаций

Умножение выполняется в предложении FROM и там же с помощью слова ON может быть выполнено сужение (из всех комбинаций записей остаются только связанные между собой)

Слайд 15

Оператор SELECT

Ограничение результирующих наборов

Для выполнения сужения в операторе SELECT могут присутствовать еще

Оператор SELECT Ограничение результирующих наборов Для выполнения сужения в операторе SELECT могут
два вида предложений: WHERE и HAVING

Предложение WHERE <условие> располагается после предложения FROM и позволяет наложить дополнительные ограничения на результат объединения. Ограничения, заданные словом ON иногда могут быть перенесены также в предложение WHERE

Предложение HAVING <условие> может располагаться после предложения GROUP BY и применяться к данным в каждой группе

При использовании предложения HAVING без предложения GROUP BY, оно применяется ко всей результирующей таблице и действует аналогично предложению WHERE