Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемАлина Узкая
1 СУБД Microsoft Access 2003 Элементы языка SQL
2 Язык SQL SQL (Structured Query Language) – структурированный язык запросов Язык SQL применяется во многих СУБД Существуют стандарты языка, но его реализация отличается для различных СУБД SQL удобен в системах «клиент-сервер»
3 Язык SQL Применение SQL в СУБД Access В Microsoft Access язык SQL применяется при построении запросов к базе данных Для многих задач может оказаться достаточным использования мастера или конструктора, но не для всех Любой запрос, построенный с помощью мастера или конструктора, может быть представлен на языке SQL. Обратное неверно. Также SQL используется при работе с внешними источниками данных (например, СУБД Oracle или Microsoft SQL Server) В частности, запрос на языке SQL может быть напрямую задан в полях свойств «Источник записей» или «Источник строк» элементов форм и отчетов, чтобы обойтись без создания отдельного объекта «Запрос»
4 SQL и конструктор запросов Для переключения режимов конструктора используется кнопка «Вид» панели инструментов
5 Оператор SELECT SELECT FROM ; Пример 1: SELECT Фамилия, Имя, Отчество FROM Клиент; Извлечь список всех клиентов (ФИО) из таблицы «Клиент» Пример 2: SELECT * FROM Клиент; Извлечь список всех клиентов (все поля) из таблицы «Клиент» Любой оператор SQL завершается символом «точка с запятой» При построении запросов на извлечение данных из БД в SQL используется оператор SELECT Простейшая форма оператора SELECT:
6 Оператор SELECT Результаты выполнения запросов Пример 1 Пример 2
7 Оператор SELECT Объединение нескольких таблиц в запросе SELECT Клиент.Фамилия, Подписка.КодЖурнала FROM Клиент, Подписка; Пример: Есть две таблицы. Построим запрос, выводящий фамилии клиентов и коды журналов. Результат представляет собой декартово произведение исходных таблиц. Каждая запись таблицы «Клиент» объединяется с каждой записью таблицы «Подписка» Следует ограничить результирующее множество записями, которые связаны между собой (содержат одинаковые значения в полях «КодКлиента»)
8 Оператор SELECT Объединение нескольких таблиц в запросе SELECT Клиент.Фамилия, Подписка.КодЖурнала FROM Клиент INNER JOIN Подписка ON Клиент.КодКлиента = Подписка.КодКлиента; В предложении «FROM» вместо оператора объединения «,» (запятая) будем использовать оператор «INNER JOIN» - внутреннее объединение. Результат содержит только записи, для которых выполняется заданное условие Оператор «INNER JOIN» позволяет наложить ограничение на объединяемые записи. Предложение ON определяет связь между полями объединяемых таблиц
9 Оператор SELECT Виды объединения В режиме конструктора тип объединения можно изменить заданием свойств связи INNER JOIN (внутреннее объединение) В результат включаются только те записи из обоих таблиц, которые связаны между собой LEFT JOIN (левое внешнее объединение) В результат включаются все записи из первой таблицы. Если для них нет связанных записей во второй таблице, соответствующие поля результата будут пустыми RIGHT JOIN (правое внешнее объединение) Операция, зеркально симметричная левому объединению При создании запроса в режиме конструктора для таблиц, связи которых заданы в схеме данных, автоматически определяется операция «INNER JOIN»
10 Оператор SELECT Виды объединения SELECT Клиент.Фамилия, Подписка.КодЖурнала FROM Клиент INNER JOIN Подписка ON Клиент.КодКлиента = Подписка.КодКлиента; Здесь присутствует фамилия «Федоров», для которой нет соответствий в таблице «Журнал». Вторая колонка этой строки содержит значение «Null» (пусто). Пример Созданный ранее запрос и результат его работы: SELECT Клиент.Фамилия, Подписка.КодЖурнала FROM Клиент LEFT JOIN Подписка ON Клиент.КодКлиента = Подписка.КодКлиента; Тот же запрос с использованием левого объединения:
11 Оператор SELECT Группировка Усовершенствуем составленный ранее запрос Требуется для каждого клиента (фамилии) подсчитать количество журналов, на которые он подписан SELECT Клиент.Фамилия, Count(Подписка.КодЖурнала) FROM Клиент LEFT JOIN Подписка ON Клиент.КодКлиента = Подписка.КодКлиента GROUP BY Клиент.Фамилия; Зададим группировку записей по фамилии (фамилии не должны повторяться) и для групп определим групповую операцию «подсчет количества» В предложении GROUP BY могут быть перечислены несколько полей через запятую Для всех полей, не вошедших в предложение GROUP BY, должны быть определены групповые операции
12 Оператор SELECT Сортировка. Имена (псевдонимы) Что еще осталось сделать? Псевдонимы можно задавать не только для столбцов, но и для таблиц Результат работы запроса: То, что фамилии расположены по алфавиту – совпадение. Следует явно указать способ сортировки Надо задать осмысленное название второго столбца (сейчас название сформировано автоматически) SELECT Клиент.Фамилия, Count(Подписка.КодЖурнала) AS Количество FROM Клиент LEFT JOIN Подписка ON Клиент.КодКлиента = Подписка.КодКлиента GROUP BY Клиент.Фамилия ORDER BY Клиент.Фамилия ASC; Слово ASC задает сортировку по возрастанию (его можно опустить). Для сортировки по убыванию используется слово DESC
13 Оператор SELECT Сравнение с режимом конструктора Результат запроса теперь такой: Посмотрим, как созданный запрос выглядит в режиме конструктора
14 Оператор SELECT Ограничение результирующих наборов Оператор SELECT извлекает данные из одной или нескольких таблиц и из всех возможных комбинаций оставляет только те, которые соответствуют заданным критериям отбора Говорят, что при выборке выполняются операции умножения и сужения Умножение – построение всех возможных комбинаций записей (декартово произведение таблиц) Сужение – отсечение «лишних» комбинаций Умножение выполняется в предложении FROM и там же с помощью слова ON может быть выполнено сужение (из всех комбинаций записей остаются только связанные между собой)
15 Оператор SELECT Ограничение результирующих наборов Для выполнения сужения в операторе SELECT могут присутствовать еще два вида предложений: WHERE и HAVING Предложение WHERE располагается после предложения FROM и позволяет наложить дополнительные ограничения на результат объединения. Ограничения, заданные словом ON иногда могут быть перенесены также в предложение WHERE Предложение HAVING может располагаться после предложения GROUP BY и применяться к данным в каждой группе При использовании предложения HAVING без предложения GROUP BY, оно применяется ко всей результирующей таблице и действует аналогично предложению WHERE
16 Оператор SELECT Ограничение результирующих наборов Пример. Дополним разработанный ранее запрос новыми ограничениями В результат входят записи только для клиентов, фамилия которых начинается с «И» и при этом используются только журналы, коды которых больше «1». Кроме того, не включаются клиенты, у которых нет подписки SELECT Клиент.Фамилия, Count(Подписка.КодЖурнала) AS Количество FROM Клиент LEFT JOIN Подписка ON Клиент.КодКлиента = Подписка.КодКлиента WHERE Left(Клиент.Фамилия,1) = "И" AND Подписка.КодЖурнала > 1 GROUP BY Клиент.Фамилия HAVING Count(Подписка.КодЖурнала) > 0 ORDER BY Клиент.Фамилия ASC; Внимание! Приведенный пример содержит избыточные условия и составлен исключительно с целью демонстрации использования различных способов ограничения результирующих наборов 1 GROUP BY Клиент.Фамилия HAVING Count(Подписка.КодЖурнала) > 0 ORDER BY Клиент.Фамилия ASC; Внимание! Приведенный пример содержит избыточные условия и составлен исключительно с целью демонстрации использования различных способов ограничения результирующих наборов">
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.