- •Содержание
- •Лабораторная работа № 1 Создание однотабличной базы данных
- •Краткие теоретические сведения
- •Идентификация строк (первичный ключ)
- •Общие сведения о субд Access
- •Сортировка данных
- •Отбор данных с помощью фильтра
- •Содержание работы
- •Структура таблицы Преподаватели
- •Порядок выполнения задания 2:
- •Содержание отчета
- •Контрольные вопросы
- •Содержание работы
- •Телефон Рис. 2.3. Логическая модель базы данных
- •Содержание отчета
- •Контрольное задание
- •Простые запросы на выборку
- •Краткие теоретические сведения
- •Содержание работы
- •Печать с сортировкой – предложение order by
- •Выборка из таблицы с условием - предложение where
- •Поиск подстрок – оператор like
- •Контрольное задание
- •Запросы с соединением
- •Контрольное задание
- •Соединение 3-х и более таблиц
- •Подзапросы с exists и not exists
- •Контрольные задания.
- •Краткие теоретические сведения
- •Содержание работы
- •Контрольное задание
- •Обновление таблиц
- •Обновление с подзапросом
- •Приложения архитектуры файл-сервер
- •Отделение данных от приложения
- •Режимы открытия базы данных
- •Период обновления
- •Блокировка
- •Оптимистическая блокировка
- •Пессимистическая блокировка.
- •Блокировка и формы
- •Транзакции
- •Содержание работы
- •Содержание отчета
- •Контрольные вопросы
- •Защита приложений Access на уровне рабочих групп
- •Краткие теоретические сведения
- •Рабочие группы
- •Создание новой рабочей группы
- •Учетные записи пользователей и групп
- •Идентификаторы pid и sid, пароли
- •Предоставление разрешений
- •Административные права доступа
- •Право на владение объектами базы данных
- •Удаление учетной записи
- •Шифрование баз данных Jet
- •Содержание работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа №9 Репликация баз данных
- •Краткие теоретические сведения
- •Репликация
- •Синхронизация
- •Устранение конфликтов
- •Видимость реплик
- •Частичные реплики
- •Реплики с запрещенным удалением
- •Управление репликацией посредством меню Access
- •Защита реплицированной базы данных
- •Публикация данных в корпоративной сети и Интернете
- •Создание редактируемой страницы
- •Создание группы
- •Добавление еще одного уровня группировки
- •Формирование итоговых данных
- •Анализ данных
- •Публикация страниц в папках Web или на web-сервере.
- •Содержание работы
- •Содержание отчета
- •Контрольные вопросы
- •Приложения архитектуры клиент-сервер
- •Краткие теоретические сведения
- •Преимущества архитектуры клиент-сервер
- •Надежность и защита данных
- •Производительность
- •Создание проектов Access
- •Создание хранимых процедур
- •Синтаксис хранимых процедур
- •Параметры и переменные
- •Выполнение хранимых процедур
- •Создание триггеров
- •Синтаксис триггеров
- •Транзакции и оператор Raiseerror
- •Защита проектов Access (adp)
- •Содержание работы
- •Содержание отчета
- •Контрольные вопросы
- •Реализовать следующие функции системы Функции библиотекаря.
- •Функции читателя
- •2. Автоматизация поликлиники – выдача талонов
- •4. Автоматизация книжного магазина. Описание основных сущностей
- •Реализовать следующие функции системы Функции менеджера магазина.
- •7. Автоматизация супермаркета.
- •Факультет иэф
- •10.Автоматизация поликлиники – вызовы на дом
Подзапросы с exists и not exists
EXISTS означает примерно "если подмножество не пусто", соответственно NOT EXISTS означает "если подмножество пусто". Используются в подзапросах.
Пример: Найти всех преподавателей, которые не ведут ни одного предмета
SELECT *
FROM преподаватели
WHERE NOT EXISTS
(SELECT *
FROM группы_дисциплины
WHERE Преподаватели.Код = группы_дисциплины.код_преп)
Во внешнем запросе перебираются строки таблицы Преподаватели, и для каждого преподавателя выполняется подзапрос – ищутся строки в таблице Группа_Дисциплина с кодом данного преподавателя. Если внутренний запрос возвращает пустую таблицу, то внешний запрос заносит строку с информацией о данном преподавателе в результирующую таблицу.
Пример: Найти всех студентов из группы Гр2, у которых есть хоть одна 3-ка.
SELECT *
FROM студенты
WHERE код_группы IN
( SELECT код FROM Группы WHERE название ="Гр2" )
AND EXISTS
(SELECT *
FROM сессия
WHERE студенты.код = сессия.код_студ AND оценка = 3 )
Во внешнем запросе для каждого студента проверяются два условия. В каждом условии присутствует подзапрос. Первый подзапрос возвращает таблицу, состоящую из одной ячейки, в которой записан код группы Гр2. Первое условие проверяет равен ли код группы данного студента коду группы Гр2.
Второй подзапрос возвращает записи таблицы сессия, в которых код студента равен коду проверяемого студента и оценка равна 3. Второе условие истинно, если подзапрос вернет таблицу хотя бы с одной строкой.
Если оба условия для данного студента выполняются, то внешний запрос заносит информацию о нем в результирующую таблицу.
Контрольные задания.
Получить список студентов с указанием группы, у которых нет отметок. ( Нет записей в таблице “Сессия”)
Получить список предметов, которые неизвестно кто ведет.
Лабораторная работа № 5
Функции агрегирования.
Цель работы: получить представление о способах использования агрегатных функций внутри запросов на выборку.
Краткие теоретические сведения
Агрегатные функции применяются для обобщения значений одного поля таблицы. Они дают единственное значение для целой группы строк таблицы.
Ниже приводится список этих фунцкий:
COUNT определяет количество строк или значений поля, выбранных посредством запроса и не являющихся NULL-значениями.
SUM вычисляет арифметическую сумму всех выбранных значений данного поля.
AVG вычисляет среднее арифметическое всех выбранных значений данного поля.
MAX, MIN – возвращают максимальное и минимальное значения из всех выбранных значений данного поля.
Содержание работы
Count()
Пример: Сколько всего студентов 1-го курса в базе
SELECT "количество студентов = ", COUNT(*)
FROM студенты, группы
WHERE студенты.код_группы = группы.код
AND группы.N_курса = 1
Присоединяем к строкам таблицы Студенты информацию из таблицы Группы (в таблице Группы присутствует поле номер курса). Подсчитываем количество строк полученной таблицы, в которых номер курса = 1.
SUM()
Пример: Посчитать количество часов учебной нагрузки у преподавателя c кодом 1
SELECT Sum(группы_дисциплины.часов)
FROM Дисциплины, группы_дисциплины
WHERE (Дисциплины.код = группы_дисциплины.код_дисц) AND
(группы_дисциплины.код_преп=1);
MAX()
Пример: Поиск максимального номера студента
SELECT MAX(код)
FROM студенты
Аналогично функции MAX работает функция MIN.
Контрольные задания
1. Посчитать количество пятерок у студентов группы Гр1
2. Посчитать, сколько зачетов должны сдать студенты группы Гр1.
Группировка данных
Данные в одной таблице группируются по какому-то полю, значение которого не уникально, обычно являющегося вторичным ключем.
Пример: Найти, сколько студентов в каждой группе
SELECT код_группы, COUNT(*)
FROM студенты
GROUP BY код_группы
Группировка идет по полю код_группы - все данные с одинаковым значением этого поля группируются и подсчитывается число записей в каждой такой группе.
Контрольное задание
Подсчитать количество часов учебной нагрузки на каждой кафедре
Отбор групп
Выбирать можно не только записи, но и группы. Для этого используется предложение HAVING. Использовать агрегатные функции в предложение WHERE нельзя.
Пример: напечатать список групп, в которых количество пятерок у студентов больше 10 на группу.
SELECT название, 'кол-во пятерок ',COUNT(*)
FROM группы, студенты, сессия
WHERE группы.код=студенты.код_группы
AND студенты.код=сессия.код_студ
AND сессия.оценка=5
GROUP BY группы.название
HAVING COUNT(*) > 10
Контрольное задание
Найти студентов, которые не сдали 2 и более предметов.
Содержание отчета
Отчет должен содержать текст запросов, предложенных в контрольных заданиях.
Лабораторная работа № 6.
Запросы на изменение
Цель работы: Получить представление о способах использования запросов на изменение
Содержание работы
Вставка записей в таблицу
Все стоки в SQL вводятся при помощи команды обновления INSERT. В простейшем случае команда INSERT имеет синтаксис:
INSERT INTO <имя таблицы> (<поле1>, <поле2>…)
Values (<значение>, <значение>… );
Пример: Добавить нового студента
INSERT INTO студенты (код, фамилия, имя, отчество, код_группы)
VALUES ( 11, "Сидоров", "Олег", "Петрович", 2)
Вставка записей из другой таблицы
Команду INSERT можно применить для того, чтобы извлечь значения из одной таблицы и разместить их в другой, воспользовавшись для этого запросом. Для этого достаточно заменить предложение VALUES на соответствующий запрос.
Пример: Физика читается у всех групп 1 курса Мироновым (его код = 2). Внести соответствующие записи в таблицу Группы_Дисциплины.
INSERT INTO Группы_Дисциплины (код_дисц,код_группы,код_преп)
SELECT дисциплины.код,группы.код , 2
FROM Дисциплины,Группы
WHERE Дисциплины.название = 'Физика'
AND Группы.N_курса=1
