- •Лабораторная работа № 1 Функции и режимы субд Access
- •Теоретические сведения
- •Основные функции субд Access
- •Основные режимы работы субд Access
- •Главное окно субд Access
- •Справочная система субд Access
- •Основные операции с базой данных и ее таблицами
- •Открытие, создание и закрытие базы данных
- •Создание, открытие, просмотр, печать и закрытие таблицы
- •Изменение данных в таблице и удаление таблицы
- •Использование запросов, форм, отчетов и страниц доступа к данным Запросы
- •Страницы доступа к данным
- •Лабораторное задание
- •Порядок выполнения лабораторной работы
- •Требования к отчету
- •Контрольные вопросы
- •Лабораторная работа № 2 Создание базы данных средствами субд Access
- •Теоретические сведения
- •Создание таблицы с использованием Мастера таблиц
- •Создание таблицы в режиме конструктора
- •Связывание таблиц
- •Ввод информации в таблицы
- •Лабораторное задание
- •Порядок выполнения лабораторной работы
- •Требования к отчету
- •Контрольные вопросы
- •Лабораторная работа № 3 Использование языка qbe для задания запросов к базе данных
- •Теоретические сведения
- •Создание и сохранение запроса
- •Добавление и удаление таблиц
- •Включение полей в запрос и их удаление из запроса
- •Выбор полей, отображаемых в таблице результатов
- •Выбор записей, включаемых в таблицу результатов
- •Выполнение запроса, просмотр и сортировка результатов
- •Формирование запросов к связанным таблицам
- •Итоговые запросы
- •Корректирующие запросы
- •Запрос на создание таблицы
- •Лабораторное задание
- •Порядок выполнения лабораторной работы
- •Требования к отчету
- •Контрольные вопросы
- •Лабораторная работа № 4 Создание форм и страниц доступа к данным средствами субд Access
- •Теоретические сведения
- •Создание и сохранение формы
- •Модификация формы в режиме конструктора
- •Создание многотабличной формы
- •Создание кнопочной формы
- •Создание страниц доступа к данным
- •Лабораторное задание
- •Порядок выполнения лабораторной работы
- •Требования к отчету
- •Контрольные вопросы
- •Лабораторная работа № 5 Создание отчетов средствами субд Access
- •Теоретические сведения
- •Структура отчета
- •Создание нового отчета
- •Создание сложных отчетов
- •Сохранение содержимого отчета
- •Корректировка формы отчета в режиме конструктора
- •Группировка и подведение итогов в отчетах с группировкой
- •Нумерация страниц и постраничный вывод групп записей
- •Создание отчетов анкетного типа и в виде этикеток
- •Лабораторное задание
- •Порядок выполнения лабораторной работы
- •Требования к отчету
- •Контрольные вопросы
- •Лабораторная работа № 6 Проектирование базы данных средствами программы eRwin
- •Теоретические сведения
- •Назначение, возможности и особенности программы eRwin
- •Использование программы eRwin
- •Лабораторное задание
- •Порядок выполнения лабораторной работы
- •Требования к отчету
- •Контрольные вопросы
- •Лабораторная работа № 7 Использование оператора select языка sql для доступа к базам данных Access
- •Теоретические сведения
- •Использование языка sql для выборки (чтения) данных
- •Отбор строк из таблиц
- •Where Скидка not between 5.00 and 10.00
- •Where Скидка is null
- •Where Скидка is not null
- •Составные условия поиска
- •Сортировка таблицы результатов запроса
- •Многотабличные запросы на чтение (соединения)
- •Итоговые запросы на чтение
- •Запросы с группировкой
- •Создание sql-запроса в Access
- •Лабораторное задание
- •Порядок выполнения лабораторной работы
- •Требования к отчету
- •Контрольные вопросы
- •Лабораторная работа № 8 Использование объединяющих и вложенных запросов и корректирующих операторов языка sql
- •Теоретические сведения
- •Объединение результатов нескольких запросов
- •Вложенные запросы на чтение
- •Условия поиска с вложенным запросом
- •Внесение изменений в базу данных
- •Лабораторное задание
- •Порядок выполнения лабораторной работы
- •Требования к отчету
- •Контрольные вопросы
- •Литература
- •Содержание
Условия поиска с вложенным запросом
Вложенный запрос обычно является частью условия поиска в предложении WHERE или HAVING. Возможны следующие условия поиска с вложенным запросом:
1) сравнение с результатом вложенного запроса. Сравнивает значение выражения с одним значением, возвращённым вложенным запросом;
Проверяемое_выражение
Вложенный _запрос
=
<>
<
<=
>
>=
2) проверка на принадлежность результатам вложенного запроса. Проверяет значение выражения на равенство с одним из значений множества, возвращённого вложенным запросом.
IN
NOT
Например:
SELECT * FROM Поставщики
WHERE Название NOT IN (SELECT Название FROM Клиенты
WHERE Клиенты.Название = Поставщики.Название)
3) п
Вложенный
_запрос
EXISTS
NOT
Например:
SELECT * FROM Поставщики
WHERE EXISTS (SELECT Название FROM Клиенты
WHERE Клиенты.Название = Поставщики.Название)
Обратите внимание на то, что условие поиска EXISTS не использует результаты вложенного запроса. Проверяется только наличие результатов. По этой причине в SQL смягчается правило о единственности возвращаемого столбца во вложенном запросе и во вложенном запросе при проверке EXISTS допускается использование формы SELECT *;
4) многократное сравнение. Сравнивает значение выражения с каждым из значений множества, возвращаемого вложенным запросом.
Проверяемое
_выражение
Вложенный
_запрос
= ANY
<> ALL
<
<=
>
>=
При проверке ANY проверяемое значение поочерёдно сравнивается с каждым значением, содержащимся в столбце, который сформулирован вложенным запросом. Если любое из этих сравнений даёт результат TRUE, то проверка ANY возвращает значение TRUE.
При проверке ALL проверяемое значение поочерёдно сравнивается с каждым значением, содержащимся в столбце. Если все сравнения дают результат TRUE, то проверка ALL возвращает значение TRUE.
Внесение изменений в базу данных
Язык SQL позволяет не только извлекать информацию из БД с помощью запросов на чтение, но и изменять содержащуюся в ней информацию с помощью корректирующих запросов на добавление, удаление и обновление.
Добавление новых данных. Наименьшей единицей информации, которую можно добавить в реляционную БД, является одна строка. Существует два способа добавления новых строк в БД:
1) однострочный оператор INSERT позволяет добавить в таблицу новую строку (рис. 1);
2) многострочный оператор INSERT обеспечивает извлечение строк из одной части БД и добавление их в другую таблицу (рис. 2).
INSERT
INTO имя_таблицы
(
имя_столбца )
,
VALUES
( константа )
NULL
,
Рис. 1. Однострочный оператор INSERT
В предложении INTO указывается целевая таблица, в которую добавляется новая строка, а в предложении VALUES содержатся значения данных для новой строки. Список столбцов определяет, какие значения в какой столбец заносятся.
Например, можно задать запросы для внесения в БД сведений о новых компаниях, осуществляющих доставку:
INSERT INTO Доставка
VALUES (1234, 'ООО Быструм', '(495) 124-3195')
INSERT INTO Доставка (Название, Телефон, КодДоставки)
VALUES ('Турбо', '(495) 529-3175', 1235)
INSERT INTO Доставка (Телефон, Название)
VALUES ('(496) 924-3376', 'Скороход')
Если список столбцов опущен, то последовательность значений данных должна точно соответствовать порядку столбцов в таблице (см. a).
В списке столбцов их имена могут указываться в любой удобной последовательности, определяющей затем порядок значений данных в предложении VALUES (см. b).
При добавлении в таблицу новой строки всем столбцам, имена которых отсутствуют в списке столбцов оператора INSERT, СУБД автоматически присваивает значение NULL либо значение, заданное по умолчанию при описании структуры таблицы (см. c, где отсутствует имя столбца КодДоставки).
Список столбцов в операторе INSERT служит, чтобы установить соответствие между значениями данных, содержащимися в предложении VALUES, и столбцами, для которых эти данные предназначены. Списки значений и столбцов должны содержать одинаковое число элементов, а тип данных каждого значения должен соответствовать типу соответствующего столбца.
INSERT
INTO имя_таблицы запрос
( имя_столбца )
,
Рис. 2. Многострочный оператор INSERT
Многострочный оператор INSERT добавляет в целевую таблицу одну или несколько строк. Источником новых строк служит запрос на чтение, содержащийся внутри оператора INSERT.
Например, можно добавить в таблицу ДОСТАВКА сведения о новой компании, у которой название и телефон будет такими же, как клиента с кодом ANTON:
INSERT INTO Доставка (Телефон, Название)
SELECT Телефон, Название FROM Клиенты
WHERE КодКлиента = 'ANTON'
Обновление существующих данных. Наименьшей единицей информации, которую можно обновить в реляционной БД является значение одного столбца в одной строке.
Для обновления значения одного или нескольких столбцов в выбранных строках одной таблицы предназначен оператор UPDATE (рис. 3).
UPDATE
имя_таблицы SET имя_столбца=выражение
,
WHERE
условие_поиска
Рис. 3. Синтаксическая диаграмма оператора UPDATE
В операторе указывается целевая таблица, которая должна быть модифицирована. Предложение WHERE отбирает строки таблицы, подлежащие обновлению. В предложении SET указывается, какие столбцы в выбранных строках таблицы должны быть обновлены, и для них задаются новые значения.
Следующий оператор UPDATE изменяет номер телефона компании “Ространс”, которая доставляет заказы:
UPDATE Доставка SET Телефон=’(496) 111-7700’
WHERE Название = ’Ространс’
Оператор UPDATE может одновременно обновить столбцы в нескольких строках, соответствующих условию поиска. Строки, для которых условие поиска имеет значение TRUE, обновляются, а строки, для которых условие поиска имеет значение FALSE или NULL, не обновляются.
Выражение в операции присваивания может быть любым правильным выражением языка SQL, результирующее значение которого имеет тип данных, соответствующий целевому столбцу.
Значение выражения вычисляется на основе значений строки, которая в данный момент обновляется в целевой таблице. Выражение не может включать в себя какие-либо агрегатные функции или запросы.
Если выражение содержит ссылку на один из столбцов целевой таблицы, то для вычисления выражения используется значение этого столбца в текущей строке, которое было перед обновлением. То же самое справедливо для ссылок на столбцы в предложении WHERE.
Если предложение WHERE отсутствует в записи оператора UPDATE, то обновляются все строки целевой таблицы, например:
UPDATE Заказано SET Скидка = Скидка + 0.01
Предложение WHERE может содержать вложенный запрос, если необходимо отбирать строки на обновление, опираясь на информацию из других таблиц. Например, можно повысить в должности сотрудников, оформивших более 100 заказов:
UPDATE Сотрудники SET Должность = 'Топ-менеджер'
WHERE 100<= (SELECT COUNT (*) FROM Заказы
WHERE Сотрудники.КодСотрудника = Заказы.КодСотрудника)
Удаление существующих данных. Наименьшей единицей информации, которую можно удалить из реляционной БД, является строка.
Для удаления выбранных строк из одной таблицы используется оператор DELETE, в предложении FROM которого указывается таблица, содержащая удаляемые строки, а в предложении WHERE указывается условие, которому должны соответствовать удаляемые строки, например:
DELETE FROM Доставка
WHERE КодДоставки=1235
Если предложение WHERE отсутствует в записи оператора DELETE, то такой оператор удаляет из таблицы все строки. Например, оператор
DELETE FROM Доставка “опустошит” таблицу ДОСТАВКА, удалив из неё все строки.
В предложении WHERE условие поиска может содержать вложенный запрос. Например, прежде чем удалять информацию из таблицы ДОСТАВКА, необходимо из таблицы ЗАКАЗЫ удалить все строки, связанные с таблицы ДОСТАВКА:
DELETE FROM Заказы
WHERE Заказы.Доставка IN (SELECT КодДоставки FROM Доставка)
