Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы SQL-2012.doc
Скачиваний:
5
Добавлен:
01.04.2025
Размер:
1 Мб
Скачать
☆

Лабораторная работа № 3 выбор и модификация данных из таблиц

Цель работы

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

Содержание отчета

1. Название и цель выполнения работы.

2. Выполнить подготовительную часть.

3. Краткое описание действий по выполнению практической части.

4. Письменные ответы на заданные вопросы.

Подготовительная часть

  1. Дать характеристику следующим понятиям и действиям

  • Создание подчиненной формы

  • Синтаксис запросов к связанным таблицам:

- объединение

- соединение

  1. Выполнить практическую часть.

Теоретическая часть:

Практическая часть:

Работа с двумя связанными таблицами данных

  1. В режиме Конструктор создайте таблицу «disks», состоящую из следующих полей.

    Имя поля

    Тип данных

    Размер поля

    Свойства

    Описание

    ID

    Счетчик

    Ключевое поле

    Уникальный идентификатор диска музыкальной группы/исполнителя

    Name

    Текстовый

    100

    Обязательное поле - Да

    Название диска

    YEAR

    Числовой/Целое

    Формат поля – Число десятичных знаков 4

    Маска ввода 0000

    Год выхода диска

    COPIES

    Числовое

    Число проданных копий

    PROFIT

    Числовое

    Доход от продажи дисков

    MUS_ID

    Числовое (Длинное целое)

    Ссылка на идентификатор исполнителя

  2. Установите связь между полем ID в таблице “MUSICIANS” и полем MUS_ID в таблице “DISKS”

  3. Изменение формы ввода «Исполнители»

  • Откройте форму «Исполнители» в режиме Конструктор

  • Нажмите на кнопку F11 (Окно базы данных) и мышью перетащите таблицу “DISKS” на редактируемую форму.

  • Нажмите кнопку Далее

  • Вместо текста «подчиненная форма DISKS» напишите «Диски исполнителей»

  • Нажмите кнопку «Готово»

  • Разместите (для перехода в режим редактирования нажмите на кнопку ) мышью объекты формы так, чтобы получилась форма, удобная для работы

  • Сохраните, а затем закройте форму

  • Откройте форму в режиме ввода данных и внесите 10 исполнителей из разных стран и для каждого исполнителя по 2 или 3 диска/песни.

  1. Формирование запросов к двум таблицам

Указание.

  • На вкладке Создание нажать кнопку Конструктор запросов

  • В окне Добавление таблицы выберите таблицы «MUSICIANS» и DISKS. Нажмите кнопку Добавить, а затем Закрыть

  • Выберите вид представления запроса Режим SQL (левая верхняя иконка), нажав на стрелочку в кнопке

      1. Вывести на экран все диски с соответствующей и полной информацией об исполнителе

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»

      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»

      1. Составим запрос к базе данных, при выполнении которого будут выдаваться на экран все исполнители и выпущенные ими диски, причем на экран должны выдаваться имя исполнителя и название диска и дата образования/рождения группы/исполнителя должна быть позже 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»

      1. Составим запрос к базе данных, при выполнении которого будут выдаваться на экран доход, полученный каждым исполнителем (Название исполнителя, доход):

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»

      1. Составим запрос к базе данных, при выполнении которого будут выдаваться на экран количество проданных дисков, каждого исполнителя (Название исполнителя, количество проданных):

SELECT MUSICIANS.NAME, count(*) FROM MUSICIANS INNER JOIN DISKS ON MUSICIANS.ID = DISKS.MUS_ID group by MUSICIANS.NAME;

Нажмите на кнопку «Запуск» - и посмотрите результат запроса;

Сохраните запрос(Файл/Сохранить как) под именем «Упражнение 5»

      1. Составим запрос к базе данных, при выполнении которого будут выдаваться на экран объем рынка музыкальной продукции по странам, отсортированный в порядке убывания объема рынка:

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»

      1. Составим запрос к базе данных, при выполнении которого будут выдаваться на экран объемы рынков музыкальной продукции по странам, крупнейшим игрокам рынка, у которых объем рынка более 100 т $, отсортированный в порядке убывания объема рынка: