ДЛЯ СА 22(8.06.22)
план-конспект по информатике и икт

1

Скачать:

ВложениеРазмер
Microsoft Office document icon sql_-_zaprosy.doc45.5 КБ

Предварительный просмотр:

Создание SQL – запросов

Запрос представляет собой специальным образом сформулированное требование, определяющее состав производимых операций по выборке или изменению данных, хранящихся в таблицах. Для подготовки .запросов, как правило, используются два основных языка описания запросов:

• язык запросов по образцу QBE (Query By Example);

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

Указанные языки обладают практически одинаковыми возможностями. Главное отличие между ними заключается в способе формулирования запросов: язык QBE предлагает ручное заполнение таблицы QBE, часто называемой бланком QBE или бланком запросов, в то время как использование SQL означает программирование запроса.

В Access могут быть созданы следующие типы запросов:

Запрос на выборку. Извлекает данные из одной или нескольких таблиц и отображает их в таблице.

Помимо этого, пользователю предоставляется возможность создавать дополнительное вычисляемое поле с данными, полученными в результате проведения математических или логических операций с другими полями, и вводить параметры (числа, тексты) запроса.

Запрос на изменение. Изменяет или перемещает данные. К этому типу относятся запросы на добавление или удаление записей, на создание или обновление таблицы.

Итоговый запрос. Служит для вычисления итоговых значений (сумма, среднее значение, количество по группам данных). Разновидностью итоговых запросов является перекрёстный запрос, позволяющий представить итоговые данные в виде таблицы, напоминающей электронную. Обычно перекрёстный запрос применяется к повторяющимся данным и связанных с ними датами, чтобы получить более наглядную, сгруппированную по интервалам времени (месяц, квартал) информацию.

Язык SQL (Structured Query Language) используется при создании запросов, а также для обновления и управления реляционными базами данных, такими как базы данных Microsoft Access. Когда пользователь создает запрос в режиме Конструктора запроса, Microsoft Access автоматически создает эквивалентную инструкцию SQL. Пользователь имеет возможность просматривать и изменять инструкции SQL в режиме SQL. Изменения, внесенные в запрос в режиме SQL, приведут к соответствующим изменениям в режиме Конструктора и наоборот.

Некоторые запросы либо исключительно сложны, либо вообще не могут быть определены. Это запросы к серверу, управляющие запросы и запросы на объединение. Для создания таких запросов требуется ввести инструкцию SQL непосредственно в окно запросов в режиме SQL. Инструкции SQL могут быть использованы в Microsoft Access в тех ситуациях, когда требуется указать имя таблицы, запроса или поля. Ниже приведены основные обобщенные выражения и примеры SQL-запросов.

Запрос на выборку

SELECT [ALL | DISTINCT] список полей

FROM имена таблиц

WRERE (критерий отбора)

ORDER BY столбцы сортировки [ASC | DESC]

Где SELECT - команда, определяющая запрос на выборку и содержащая спи-сок полей, в котором указываются поля, подлежащие выводу;

ALL,DISTINCT - предикаты, включающие все строки удовлетворяющие принятым условиям, исключающие строки с повторяющимися данными;

FROM_имена таблиц - определяет имена таблиц, у которых запрос должен отобрать данные.

WHERE - (критерий отбора) - определяет условия для отбора записей указанных таблиц;

ORDER BY столбцы_сортировки - определяет порядок сортировки записей по возрастанию (ASC) или убыванию (DESC); по умолчанию производится сортировка по возрастанию.

Пример 1. Запрос на выборку, позволяющий получить из таблицы СТУДЕНТ данные (таблицу с полями «ФИО», «Дата рождения», «Группа») о студентах мужского пола, родившихся до 1976 г.

SELECT СТУДЕНТ.ФИО,СТУДЕНТ.[Дата рождения],

СТУДЕНТ. Группа

FROM СТУДЕНТ

WHERE (((СТУДЕНТ.[Дата рождения])<#1/1/76#) АND (СТУДЕНТ.Пол)="М"));

Пример 2. Запрос на выборку с формированием в таблице СТИПЕНДИЯ вычисляемого поля "Размер", в котором данные получаются умножением значений столбца "Процент" на 80.

SELECT СТИПЕНДИЯ. Оценка, СТИПЕНДИЯ. Процент, [СТИПЕНДИЯ]! [Процент]*80 AS Размер FROM СТИПЕНДИЯ;

 

Запрос на выборку с параметром

SELECT [ALL | DISTINCT] список полей

FROM имя таблицы

WHERE ((имя поля)=[выражение])

Здесь в квадратных скобках помещается выражение, поясняющее вид

вводимого параметра.

Пример 3. Запрос с параметром, позволяющий выделить в таблице СЕССИЯ имена студентов, имеющих оценку УДО, ХОР, ХОТ или ОТЛ, используемую в качестве параметра.

SELECT СЕССИЯ. ФИО,СЕССИЯ.Оценка

FROM СЕССИЯ

WHERE (((СЕССИЯ.Оценка)=([ВвеДите оценку])));

Запрос на добавление

INSERT INTO таблица_получатель

SELECT [ALL | DISYINCT] список полей

FROM таблица_источник

WHERE условие добавления,

где INSER INTO таблица_получатель - вставляет в таблицу_получатель одну, несколько или все (если отсутствует WHERE) строки таблицы_источника.

Пример 4. Запрос на добавление, позволяющий таблицу АНКЕТА дополнить записями таблицы СТУДЕНТ, содержащими информацию о студентах группы ЭУ - 2.

INSERT INTO АНКЕТА(Номер,ФИО,Пол,[Дата рождения],Группа)

SELECT СТУДЕНТ.Номер,СТУДЕНТ.ФИО,СТУДЕНТ.Пол,СТУДЕНТ.[Дата рождения],СТУДЕНТ.Группа

FROM СТУДЕНТ WHERE (((СТУДЕНТ.Группа)="ЭУ-2"));

Запрос на обновление

UPDATE имя_таблицы

SET имя_поля1=значение1[, имя_поля2=значение2[,...]]

WHERE условие_обновления,

где UPDATE имя_таблицы - обновляет выбранные поля в записях таблицы, удовлетворяющих условию обновления.

SET - указывает имя поля и присваемое ему значение.

Пример 5. Запрос на обновление, позволяющий в таблице АНКЕТА восстановить прежнюю дату рождения 24.06.75 Ветровой

UPDATE АНКЕТА

SET АНКЕТА. [Дата рождения]=#24/6/75#

WHERE ((АНКЕТА.ФИО)="Ветрова А.Ф.")

Запрос на удаление

DELETE список_полей

FROM имя_таблицы

WHERE условия_удаления

где DELETE список_полей - удаляет одну или несколько записей из таблицы в соответствии с принятыми условиями. Если WHERE отсутствует, то удаляются все строки.

Пример 6. Запрос на удаление из таблицы АНКЕТА записей, содержащих информацию о группе ЭУ -2.

DELETE АНКЕТА.Номер,АНКЕТА.ФИО,АНКЕТА.Пол,АНКЕТА.[Дата рож-дения],АНКЕТА.Группа

FROM АНКЕТА

WHERE (((АНКЕТА.Группа)="ЭУ-2"));

Итоговые запросы 

SELECT [ALL | DISTINCT] список_полей, функция (имя поля)

AS [заголовок_поля]

FROM имена_таблиц

WHERE условие_отбора

GROUP BY условие_группировки

HAVING условие_для_результата

где AS [заголовок_поля] - определяет заголовок столбца результирующего набора записей; GROUP BY условие группировки - выбирает поле, по значениям которого записи объединяются в группы, к каждой из которых применяется функция; HAVING условие_для_результата - одно или несколько условий, налагаемых на значения поля (заголовок_поля), полученные после выполнения группировки и применения функции; WHERE услойие_отбора - условие для отбора исходных записей перед выполнением группировки и применением функции.

Пример 7. Итоговый запрос для вычисления в таблице СТУДЕНТ количества студентов мужского пола в группе ЭУ-1.

SELECT Count (СТУДЕНТ.Номер) А8[количество]

FROM СТУДЕНТ

WHERE ((СТУДЕНТ.Группа)="ЭУ-1") AND ((СТУДЕНТ. Пол)="М");

Пример 8. Итоговый запрос, позволяющий рассчитать средний балл по информатике в таблице СЕССИЯ.

SELECT Avg (СЕССИЯ.Информ) AS Среднее

FROM СЕССИЯ;

Перекрестный запрос

TRANSFORM функция (имя_поля) [AS подпись]

SELECT [ALL | DISTINCT] список_полей

FROM имя_таблицы

PIVOT Format (имя поля, "тип_форматирования" IN (список_значений)

где TRANSFORM - ключевое слово, определяющее перекрестный запрос; PIVOT..IN - описывает формат и имена тех полей результирующего набора записей, которые соответствуют группам исходных строк и содержат значения, определенных функций.

Пример 9. Перекрестный запрос к таблице УСПЕВАЕМОСТЬ для получения таблицы со средними баллами студентов по месяцам.

TRANSFORM Аvg([Балл]) AS [Значение]

SELECT [ФИО], Аvg([Балл]) AS [Итоговое значение Балл]

FROM УСПЕВАЕМОСТЬ

GROUP BY [ФИО]

PIVOT Format ([Дата],"mmm") IN ("янв","фев","мар","апр","май”,“июнь”,"июл","авг","сен","окт","ноя","дек");


Запрос на создание таблицы

а) путем выборки полей из таблицы

SELECT [ALL | DISTINCT] список_полей

INTO новая_таблица

FROM исходная_таблица

WHERE условия_добавления

SELECT... INTO - ключевое выражение для создания новой таблицы со списком полей выбранных из исходной таблицы.

Пример 10. Запрос на создание таблицы СПИСОК с полями "Номер", "ФИО", "Дата рождения" из таблицы АНКЕТА.

SELECT АНКЕТА.Номер,АНКЕТА.ФИО,АНКЕТА.[Дата рождения]

INTO СПИСОК

FROM АНКЕТА

WHERE (((АНКЕТА.Пол)=“М”)) ;

б) путем слияния полей, выбранных из нескольких таблиц

SELECT [ALL:DISTINCT] список_полей

FROM имя_таблицы 1

INNER JOIN имя_таблицы 2

ON условие_объединения

где INNER JOIN - операция объединения из двух таблиц всех записей полей, указанных в инструкции SELECT и удовлетворяющих условию объединения.

Пример 11. Запрос на создание таблицы ВЕДОМОСТЬ с полями "Номер", "ФИО", "Пол", "Группа" на основании таблиц СЕССИЯ и СТУДЕНТ.

SELECT СЕССИЯ.Номер,СЕССИЯ.ФИО,СЕССИЯ.Матем,СТУДЕНТ.Пол, СТУДЕНТ.Группа AS ВЕДОМОСТЬ

FROM СЕССИЯ

INNER JOIN СТУДЕНТ

ON СЕССИЯ.Номер=СТУДЕНТ.Номер