- •Лабораторная работа №1 Создание структуры базы данных на языке sql.
- •Sql. Язык манипулирования данными (Data Manipulation Language, dml)
- •Insert into имя_таблицы (перечисление заполняемых столбцов) запрос
- •Лабораторная работа № 2 выбор и модификация данных из таблицы
- •Лабораторная работа № 3 выбор и модификация данных из таблиц
- •В режиме Конструктор создайте таблицу «disks», состоящую из следующих полей.
- •Указание.
- •Select musicians.Country, sum(disks.Profit) as 'Объем рынка'
- •Задание №1
- •Задание №2
- •2.1 Создание поля со списком с помощью мастера
- •Лабораторная работа № 4
- •2.2 Создание поля со списком без использования мастера.
- •2.3 Создание списка с помощью vba
- •Задание №3
- •3.1 Создание списка на основании выбора данных из поля со списком
- •3.2 Создание списка на основании выбора данных из двух полей
- •Задание №4 Сортировка элементов списка
- •Задание №5 Поиск записей, удовлетворяющих заданному условию, с помощью ado.
- •Задание №6 Поиск записей, удовлетворяющих заданному условию, с помощью dao.
Лабораторная работа № 3 выбор и модификация данных из таблиц
Цель работы
Используя данные базы данных, подготовленной в первой лабораторной работе, подготовить и реализовать серию запросов, связанных с выборкой информации и модификацией данных таблиц.
Содержание отчета
1. Название и цель выполнения работы.
2. Выполнить подготовительную часть.
3. Краткое описание действий по выполнению практической части.
4. Письменные ответы на заданные вопросы.
Подготовительная часть
Дать характеристику следующим понятиям и действиям
Создание подчиненной формы
Синтаксис запросов к связанным таблицам:
- объединение
- соединение
Выполнить практическую часть.
Теоретическая часть:
Практическая часть:
Работа с двумя связанными таблицами данных
В режиме Конструктор создайте таблицу «disks», состоящую из следующих полей.
Имя поля
Тип данных
Размер поля
Свойства
Описание
ID
Счетчик
Ключевое поле
Уникальный идентификатор диска музыкальной группы/исполнителя
Name
Текстовый
100
Обязательное поле - Да
Название диска
YEAR
Числовой/Целое
Формат поля – Число десятичных знаков 4
Маска ввода 0000
Год выхода диска
COPIES
Числовое
Число проданных копий
PROFIT
Числовое
Доход от продажи дисков
MUS_ID
Числовое (Длинное целое)
Ссылка на идентификатор исполнителя
Установите связь между полем ID в таблице “MUSICIANS” и полем MUS_ID в таблице “DISKS”
Изменение формы ввода «Исполнители»
Откройте форму «Исполнители» в режиме Конструктор
Нажмите на кнопку F11 (Окно базы данных) и мышью перетащите таблицу “DISKS” на редактируемую форму.
Нажмите кнопку Далее
Вместо текста «подчиненная форма DISKS» напишите «Диски исполнителей»
Нажмите кнопку «Готово»
Разместите (для перехода в режим редактирования нажмите на кнопку
)
мышью объекты формы так, чтобы получилась
форма, удобная для работы
Сохраните, а затем закройте форму
Откройте форму в режиме ввода данных и внесите 10 исполнителей из разных стран и для каждого исполнителя по 2 или 3 диска/песни.
Формирование запросов к двум таблицам
Указание.
На вкладке Создание нажать кнопку Конструктор запросов
В окне Добавление таблицы выберите таблицы «MUSICIANS» и DISKS. Нажмите кнопку Добавить, а затем Закрыть
Выберите вид представления запроса Режим SQL (левая верхняя иконка), нажав на стрелочку в кнопке
Вывести на экран все диски с соответствующей и полной информацией об исполнителе
SELECT * FROM MUSICIANS INNER JOIN DISKS ON MUSICIANS.ID = DISKS.MUS_ID;
где INNER JOIN DISKS ON MUSICIANS.ID = DISKS.MUS_ID обозначает, что будут выбираться все записи из таблиц MUSICIANS и DISKS, у которых совпадают поля ID и MUS_ID, т.е. для каждого диска из таблицы MUSICIANS будет браться информация об исполнителе;
Читается этот запрос следующим образом: Выбрать все записи из таблиц DISKS с полной информацией из таблицы MUSICIANS, соответствующей записи DISKS.
Нажмите на кнопку «Запуск» - и посмотрите результат запроса;
Сохраните запрос(Файл/Сохранить как) под именем «Упражнение 1»
Составим запрос к базе данных, при выполнении которого будут выдаваться на экран все исполнители и выпущенные ими диски, причем исполнители, которые еще не выпускали диски должны присутствовать в списке:
SELECT * FROM MUSICIANS LEFT JOIN DISKS ON MUSICIANS.ID = DISKS.MUS_ID;
где LEFT JOIN DISKS ON MUSICIANS.ID = DISKS.MUS_ID обозначает, что при построении отчета будет браться запись из таблицы MUSICIANS и в таблице DISKS будут искаться соответствующие записи. Если таких записей найдено не будет, то будет выдаваться запись таблицы MUSICIANS с пустой информацией из таблицы DISKS.
Нажмите на кнопку «Запуск» - и посмотрите результат запроса;
Сохраните запрос(Файл/Сохранить как) под именем «Упражнение 2»
Составим запрос к базе данных, при выполнении которого будут выдаваться на экран все исполнители и выпущенные ими диски, причем на экран должны выдаваться имя исполнителя и название диска и дата образования/рождения группы/исполнителя должна быть позже 1990 года:
SELECT MUSICIANS.NAME, DISKS.NAME FROM MUSICIANS INNER JOIN DISKS ON MUSICIANS.ID = DISKS.MUS_ID WHERE MUSICIANS.BIRTHDAY > DateValue('01.01.1990');
где WHERE MUSICIANS.BIRTHDAY > DateValue('01.01.1990') говорит о том, что MUSICIANS.BIRTHDAY должна быть позже 01.01.1990.
Функция DateValue('01.01.1990') преобразует строковое выражение '01.01.1990' в переменную типа дата.
Нажмите на кнопку «Запуск» - и посмотрите результат запроса;
Сохраните запрос(Файл/Сохранить как) под именем «Упражнение 3»
Составим запрос к базе данных, при выполнении которого будут выдаваться на экран доход, полученный каждым исполнителем (Название исполнителя, доход):
SELECT MUSICIANS.NAME, SUM(DISKS.PROFIT) FROM MUSICIANS INNER JOIN DISKS ON MUSICIANS.ID = DISKS.MUS_ID GROUP BY MUSICIANS.NAME;
где функция sum(DISCS.PROFIT) выдает сумму значений в поле DISCS.PROFIT
GROUP BY – определяет по какому полю осуществлять группировку записей
Нажмите на кнопку «Запуск» - и посмотрите результат запроса;
Сохраните запрос(Файл/Сохранить как) под именем «Упражнение 4»
Составим запрос к базе данных, при выполнении которого будут выдаваться на экран количество проданных дисков, каждого исполнителя (Название исполнителя, количество проданных):
SELECT MUSICIANS.NAME, count(*) FROM MUSICIANS INNER JOIN DISKS ON MUSICIANS.ID = DISKS.MUS_ID group by MUSICIANS.NAME;
Нажмите на кнопку «Запуск» - и посмотрите результат запроса;
Сохраните запрос(Файл/Сохранить как) под именем «Упражнение 5»
Составим запрос к базе данных, при выполнении которого будут выдаваться на экран объем рынка музыкальной продукции по странам, отсортированный в порядке убывания объема рынка:
SELECT MUSICIANS.COUNTRY, SUM(DISKS.PROFIT) AS 'Объем рынка' FROM MUSICIANS INNER JOIN DISKS ON MUSICIANS.ID = DISKS.MUS_ID group by MUSICIANS.COUNTRY order by 2 DESC;
где AS ‘Объем рынка’ задает название колонки SUM(DISCS.PROFIT
ORDER BY 2 DESC – говорит о том, что результат будет отсортирован по второму столбцу по убыванию от большого значения к маленькому (DESC – Descending) определяет по какому полю осуществлять группировку записей
Нажмите на кнопку «Запуск» - и посмотрите результат запроса;
Сохраните запрос(Файл/Сохранить как) под именем «Упражнение 6»
Составим запрос к базе данных, при выполнении которого будут выдаваться на экран объемы рынков музыкальной продукции по странам, крупнейшим игрокам рынка, у которых объем рынка более 100 т $, отсортированный в порядке убывания объема рынка:
