- •Лабораторная работа № 1. Создание таблиц
- •Основные понятия СУБД Access
- •Учебная база данных "Борей"
- •Основные сведения о таблицах
- •Создание базы данных
- •Ввод данных в таблицы
- •Освоение приемов работы с фильтрами в таблицах
- •Общие сведения о MDE-файлах
- •Лабораторная работа № 2. Конструирование запросов
- •Основные сведения
- •Использование вычисляемых полей в запросах
- •Элементы выражений
- •Запросы на выборку
- •Запросы-действия
- •Лабораторная работа № 3. Конструирование форм
- •Общие сведения
- •Создание простой формы
- •Формирование составной формы
- •Лабораторная работа № 4. Конструирование отчетов
- •Основные сведения
- •Создание простого отчета
- •Технология
- •Группировка данных в отчёте
- •Технология
- •Формирование перекрестного отчёта
- •Создание связанного отчета
- •Лабораторная работа № 5. Создание макросов
- •Основные сведения
- •Формирование форм-меню
- •Создание пользовательского ниспадающего меню
- •Лабораторная работа № 6. Конструирование SQL запросов
- •Основные сведения
- •SQL-запросы на выборку
- •Соединение таблиц
- •Использование вычисляемых полей в SQL-запросах
- •QSL-запросы на изменение
- •Заключение
изменить структуру таблицы Группа, добавив в таблицу новое поле Староста - числовое, длинное целое;
в режиме таблицы ввести в поле Староста номера зачетных книжек тех студентов из таблицы Студент, кто является старостой. Для этого можно открыть таблицу Группа, затем последовательно щелкать по знаку «+», расположенному в левом столбце каждой записи. На экране будет появляться список студентов, обучающихся в текущей группе. Просматривая этот список, можно выбрать номер зачетной книжки старосты; Список студентов, создаваемый запросом должен содержать
следующие поля: Наименование факультета, Номер группы, Фамилия, Дата рождения и Номер зачетной книжки старосты.
В объединение включить все группы из таблицы Группа, и те факультеты из таблицы Факультет, сведения о которых имеются в таблице Группа.
Сведения о старостах упорядочить в разрезе факультетов, по номерам групп.
Использование вычисляемых полей в SQL-запросах
Список полей в команде SELECT кроме полей может содержать выражения. Например, для вычисления стоимости обучения с учетом НДС в список полей следует включить выражение:
Специальность [Стоимость обучения]*(1+НДС) AS [Стоимость с учетом НДС]
Заголовком столбца для значений, полученных в результате вычисления выражения, будет Стоимость с учетом НДС.
Для вычисляемых полей допускается сортировка, задание условий отбора, расчет итоговых значений.
Например, необходимо упорядочить выборку по возрастанию значений стоимости с учетом НДС, в запрос следует добавить предложение
ORDER BY Специальность. [Стоимость обучения] *(1+НДС)
89
Если требуется найти итоговую стоимость в разрезе факультетов, необходимо выполнить группировку полученного по запросу объединения по наименованию факультета
GROUP BY Группа.[Номер факультета]
в список полей включить групповую операцию:
SUМ(Специальностъ.[Стоимость обучения]*(1+НДС))
Пример. Определить итоговую стоимость обучения с учетом НДС по номерам специальностей.
SELECT Специальность.[Номер специальности], Sum(Специальность. [Стоимость обучения] * (1+НДС)) AS [Итоговая стоимость с учетом НДС] FROM Специальность INNER JOIN ( Группа INNER JOIN Студент ON Студент.[Номер группы] = Группа.[Номер группы]) ON
Группа.[Номер специальности] = Специальность.[Номер специальности] WHERE Студент.Коммерческий=Yes GROUP BY Специальность. [Номер специальности];
Задание 25. Составить SQL-запрос для получения справки по стоимости обучения коммерческих студентов с учетом НДС. Принять, что стоимость обучения с учетом НДС коммерческого студента равна стоимости обучения по выбранной им специальности, умноженной на (1+0,2), где 0,2 - величина НДС.
В справку выводить следующие сведения о студенте: Номер группы,
Наименование специальности, Номер зачетной книжки, Фамилия и Стоимость обучения с учетом НДС.
Сведения о студентах упорядочить по убыванию значений
Стоимость обучения с учетом НДС.
Задание 26. Составить SQL-запрос для получения справки, содержащей итоговые данные о стоимости обучения с учетом НДС по специальностям.
В справку выводить Наименование специальности и Итоговую стоимость обучения с учетом НДС.
90
Создание новой таблицы
Создание повой таблицы выполняется командой CREATE TABLE. В этой команде выполняется описания новой таблицы, ее полей и индексов.
Синтаксис команда:
CREATE TABLE таблица (поле_1 тип [(размер)] [NOT NULL]
[индекс_1]
[, поле_2 тип [(размер)][NOT NULL] [индекс_2] [,...]]
[, CONSTRAINT составной_Индекс [,...]])
где таблица - имя создаваемой таблицы; поле_1, поле_2 и т.д. – имена нолей, создаваемых в новой таблице.
Таблица должна содержать хотя бы одно поле; тип – тип данных поля в новой таблице;
размер – размер поля в символах (только для текстовых и двоичных полей);
индекс_1, ипдекс_2 – предложение CONSTRAINT,
предназначенное для создания простого индекса;
составной_Индекс – предложение CONSTRAINT,
предназначенное для создания составного индекса.
Примечание. Если для поля добавлено ограничение NOT NULL, то при добавлении новых записей это поле должно содержать допустимые данные.
Пример. Создается новая таблица с двумя текстовыми полями и числовым полем. Поле SSN делается ключевым полем.
CREATE TABLE НоваяТаблица (Имя TEXT, Фамилия TEXT, SSN INTEGER
CONSTRAINT МойИндекс PRIMARY KEY);
Задание 27. Составить SQL-запрос на создание новой таблицы с именем Дисциплина1. Таблица Дисциплина1 должна иметь следующий состав полей:
Код дисциплины – числовое, байтовое (Byte);
91
Наименование дисциплины – текстовое поле, 30 символов;
Лекции (часов) – числовое поле, байтовое;
Практика (часов) – числовое поле, байтовое.
После выполнения запроса проверить существование таблицы
Дисциплина1.
Задание 28. Составить SQL-запрос на создание новой таблицы с именем Вспомогательная1. В таблицу Вспомогательная1 включите только одно поле:
Оценка – числовое, байтовое.
Задание 29. Составить SQL-запрос на создание новой таблицы с именем Ведомость1.
Таблица должна иметь следующий состав полей: Номер группы – числового типа, целое Код дисциплины – числовое, байтовое
Наименование дисциплины – текстовое поле, 30 символов
Фамилия – текстовое поле, 15 символов
Номер зачетной книжки – числовое, длинное целое Оценка – числовое, байтовое.
QSL-запросы на изменение
Добавление записей в таблицу выполняется командой INSERT INTO.
Синтаксис запроса на добавление одной записи:
INSERT INTO таблица [(поле_1[, поле_2[,...]])] VALUES (значение_1[, значение_2[,...])
Примечание. Если создать в режиме SQL запрос на добавление с помощью инструкции INSERT INTO.VALUES, сохранить и закрыть его, а затем открыть снова, то предложение VALUES будет преобразовано в предложение SELECT. Это не повлияет на результат выполнения запроса.
92
Если требуется запросом выполнить добавление в таблицу нескольких записей, данные которых уже имеются в других таблицах, то следует составить запрос в соответствии со следующим синтаксисом:
INSERT INTO таблица_приемник SELECT список_полей
FROM таблица_источник
Задание 30. Составить SQL-запрос на добавление записи в таблицу
Дисциплина.
С помощью запроса добавить следующие данные:
Код |
Наименование дисциплины |
Лекции |
Практика |
|
дисциплины |
||||
|
|
|
||
|
|
|
|
|
1 |
Информационные системы |
36 |
72 |
|
|
|
|
|
|
2 |
ММЭ |
36 |
36 |
|
|
|
|
|
Задание 31. Составить SQL-запрос на добавление записи в таблицу
Вспомогательная.
Полю Оценка задать значение NULL (нет значения).
Задание 32. Составить SQL-запрос на добавление записей в таблицу
Ведомость1.
В таблицу Ведомость1 необходимо поместить данные, полученные в результате объединения таблиц Студент, Дисциплина и Вспомогательная. Причем в объединение следует включить сведения только об одной дисциплине, код которой равен 1. Запрос на объединение должен иметь вид:
SELECT Студент.[Номер группы], Дисциплина 1.[Код дисциплины], Дисциплина1.[Наименование дисциплины], ФИО, [Номер зачетной книжки], Оценка
FROM Студент, Дисциплина_1, Вспомогательная_1 WHERE Дисциплина_1 .[Код дисциплины]=1;
Изменить запрос таким образом, чтобы он выполнял добавление записей, полученных в результате объединения в таблицу Ведомость1.
93
В режиме таблицы заполните столбец Оценка таблицы Ведомость1 оценками.
Создание новой таблицы на основе данных других таблиц
Выполняется командой SELECT . . . INTO. Синтаксис команды:
SELECT поле_1[, поле_2[,...]] INTO новая таблица FROM таблица_источник
Задание 33. Отладить следующий запрос на создание новой таблицы с именем Ведомость2.
SELECT Студент.[Номер группы], Дисциплина1.[Код дисциплины], Дисциплина1. [Наименование дисциплины], Фамилия, Студент.
[Номер зачетной книжки], Оценка INTO Ведомость_2
FROM Студент, Дисциплина1, Вспомогательная1 WHERE Дисциплина1.[Код дисциплины]=2;
Задание 34. Составить SQL-запрос на создание новой таблицы Староста. В таблицу поместить сведения из таблицы Студент о тех студентах, кто является старостами. Сведения о старостах содержатся в таблице Группа.
Таблица должна иметь следующий состав полей: Номер группы; Фамилия;
Номер зачетной книжки; Дата рождения.
Изменение значений полей
Выполняется командой Update. С помощью этой команды можно изменять некоторые или все значения в одной или нескольких записях. Команда содержит предложение Update, позволяющее указать имя таблицы, для которой выполняется операция, и предложение Set,
94
определяющее изменение, которое необходимо выполнить для определенного поля.
Задание 35.
Составить SQL-запрос на увеличение стоимости обучения на 20 % для двух номеров специальности.
Текст запроса:
UPDATE Специальность
SET [стоимость обучения]=[стоимость обучения]* 1,2
WHERE [номер специальности]=n1 or [номер специальности]= n2, где nl и n2 - номера специальностей
Задание 36. Составить SQL-запрос на перевод всех коммерческих студентов, обучающихся в заданной группе, в новую группу.
Задание 37. Составить SQL-запрос на перевод коммерческого студента, имеющего заданный номер зачетной книжки, на обучение на бюджетной основе.
Исключение записей из таблицы
Записи из таблицы можно исключить с помощью команды обновления Delete. По этой команде удаляются только целые записи, а не отдельные значения полей. Синтаксис команды:
DELETE FROM имя_таблицы
В результате выполнения этой команды заданная таблица очистится. Если требуется удалить не все, а только некоторые записи, в команде можно использовать предложение WHERE.
Задание 38. Составить SQL-запрос на удаление из таблицы Студент студента с заданным номером зачетной книжки.
95