Главная страница
Навигация по странице:

  • ALTER TABLE

  • ALTER TABLE "Заказано" ADD CONSTRAINT ORDER_NO FOREIGN KEY("Номер заказа") REFERENCES "Заказы"("Номер")

  • SELECT : SELECT "Заказано"."Номер заказа", "Блюда"."Название" FROM "Заказано", "Блюда" WHERE

  • SELECT

  • SELECT "Номер заказа", "Дата", "Название" FROM "Заказано", "Блюда", "Заказы" WHERE "Заказано"."Код блюда" = "Блюда"."Код"

  • SELECT MIN("Сумма") AS "Сумма" FROM "Итоги"

  • SELECT "Номер заказа", "Дата", "Сумма" FROM "Итоги" WHERE "Сумма" = (SELECT MIN(" Сумма ") AS " Сумма

  • файл. Минаева С. С., Рослова Л. О., Рыдзе О. А. и. Математика. 1 класс. Учебники по русскому языку издательства Дрофа. Сколько записей было отобрано


    Скачать 0.62 Mb.
    НазваниеУчебники по русскому языку издательства Дрофа. Сколько записей было отобрано
    Дата23.12.2021
    Размер0.62 Mb.
    Формат файлаdoc
    Имя файлаМинаева С. С., Рослова Л. О., Рыдзе О. А. и. Математика. 1 класс.doc
    ТипУчебники
    #315831
    страница4 из 7
    1   2   3   4   5   6   7


    Построение таблиц в реляционной БД


    1. Создайте новую базу данных Кафе.



    Таблицы Блюда и Заказано постройте с помощью конструктора.

    1. Запишите SQL-запрос для создания таблицы Заказы и выполните его:

    Ответ:

    1. Установите связи между таблицами:



    1. Заполните таблицы данными из §14 (рис. 3.16). Можно добавить и свои данные. Таблицу Заказы заполните с помощью SQL-запросов. Запишите эти запросы в следующем поле:

    Ответ:


        1. Создание запросов к реляционной базе данных


    1. Постройте простой запрос ЗапросЗаказы, который собирает всю информацию о составе сделанных заказов. Как выглядит этот запрос на языке SQL?

    Ответ:

    1. Объясните, как на языке SQL учитываются связи между таблицами?

    Ответ:

    1. Задайте псевдонимы (подписи) для столбцов запроса. Как псевдонимы изменили SQL-запрос?

    Ответ:

    1. Постройте итоговый запрос ЗапросКОплате, который подсчитывает общую сумму оплату по каждому из сделанных заказов. Как выглядит этот запрос на языке SQL?

    Ответ:

    1. Объясните, как выполняется на языке SQL суммирование цен отдельных блюд?

    Ответ:

    1. Объясните, что означают ключевые слова GROUP BY на языке SQL?

    Ответ:

    Практическая работа № 20-SQL.
    Язык SQL (многотабличная база данных, OpenOffice Base)


    В этой работе вы познакомитесь с новой командой ALTER TABLE (изменить таблицу) языка SQL и научитесь составлять запросы к многотабличной реляционной базе данных.

    Создание и заполнение таблиц


    1. Используя только SQL-запросы, постройте три таблицы для реляционной базы данных кафе (значок обозначает первичный ключ таблицы):



    1. Теперь нужно построить связи между таблицами:



    Для этой цели используется команда ALTER TABLE (англ. изменить таблицу). Построить связь между таблицами – это значит задать ограничение (CONSTRAINT), которое связывает первичный ключ одной таблицы с полем соответствующего типа другой. Если связываемое поле второй таблицы – неключевое, то оно называется внешним ключом (FOREIGN KEY). Например, команда для создания связи 1:N между ключевым полем Номер таблицы Заказы и неключевым полем Номер заказа таблицы Заказано выглядит так:

    ALTER TABLE "Заказано"

    ADD CONSTRAINT ORDER_NO

    FOREIGN KEY("Номер заказа")

    REFERENCES "Заказы"("Номер")

    Такая запись дословно означает:

    Изменить таблицу "Заказано"

    добавить связь ORDER_NO

    внешний ключ "Номер заказа"

    ссылается на поле "Номер" таблицы "Заказы"

    Здесь ORDER_NO – это просто имя, которое мы выбрали для этой связи (можно было выбрать и другое).

    1. Введите и выполните показанный выше SQL-запрос на добавление связи. Зайдите в меню Сервис – Связи и убедитесь, что связь действительно создана4.

    2. Составьте и выполните SQL-запрос на добавление второй связи. Запишите этот запрос в поле для ответа.

    Ответ:

    1. С помощью SQL-запросов заполните базу следующими данными


    Выбор данных и сортировка


    1. Построим в режиме SQL запрос СоставЗаказа, который выводит номер заказа и название заказанных блюд. Эти данные находятся в двух таблицах – Заказано и Блюда, поэтому их нужно как-то объединить. Для этого используется связь 1:N между таблицами, которую мы недавно установили. Действительно, для каждой записи в таблице Заказано нужно выбрать название блюда из таблицы Блюда, код которого совпадает с полем Заказано.Код блюда.

    Это запрос на выборку данных, поэтому используем оператор SELECT'>SELECT_:_SELECT__"Заказано"."Номер_заказа",_"Блюда"."Название"_FROM__"Заказано",_"Блюда"_WHERE'>SELECT:

    SELECT "Заказано"."Номер заказа", "Блюда"."Название"

    FROM "Заказано", "Блюда"

    WHERE "Заказано"."Код блюда" = "Блюда"."Код"

    Здесь из таблиц Заказано и Блюда выбираются поля Номер заказа и Название; условие в последней строке связывает таблицы.

    Поскольку названия полей в таблицах, из которых идет выбор, не совпадают, можно было записать запрос в сокращенной форме, указав после оператора SELECT только названия нужных полей:

    SELECT "Номер заказа", "Название"

    FROM "Заказано", "Блюда"

    WHERE "Заказано"."Код блюда" = "Блюда"."Код"

    1. Теперь добавим в запрос дату заказа. Она находится в таблице Заказы, которая пока в запросе не участвует. Таким образом, нам нужно объединить три таблицы. Условие отбора получается сложным, два условия (связи по коду блюда между таблицами Заказано и Блюда и по номеру заказа между таблицами Заказы и Заказано) объединяются с помощью логической операции AND (И):

    SELECT "Номер заказа", "Дата", "Название"

    FROM "Заказано", "Блюда", "Заказы"

    WHERE "Заказано"."Код блюда" = "Блюда"."Код"

    AND "Заказано"."Номер заказа" = "Заказы"."Номер"

    Проверьте результат выполнения этого запроса.

    1. Измените запрос так, чтобы он выбирал только блюда из состава заказа № 1. Запишите этот запрос:

    Ответ:

    1. Построим еще один запрос Итоги, в котором для каждого заказа выводится его номер, дата и общая сумма (с помощью функции SUM).

    SELECT "Номер заказа", "Дата", SUM("Цена")

    FROM "Заказано", "Блюда", "Заказы"

    WHERE "Заказано"."Код блюда" = "Блюда"."Код"

    AND "Заказано"."Номер заказа" = "Заказы"."Номер"

    GROUP BY "Номер заказа", "Дата"

    В последней строке указано, что по полям Номер заказа и Дата выполняется группировка, то есть сумма цен считается для каждой уникальной пары «Номер заказаДата».

    В таблице с результатами запроса заголовок столбца с суммой выглядит не совсем понятно для пользователя:

    «SUM("Блюда"."Цена")»

    Для того, чтобы сделать у этого столбца заголовок «Сумма», нужно добавить в первую строку запроса после SUM("Цена") так называемый псевдоним (подпись) с ключевым словом AS:

    SELECT "Номер заказа", "Дата", SUM("Цена") AS "Сумма" 

    ...

    Проверьте результат выполнения этого запроса. Псевдонимы можно задавать для всех значений, которые выводятся в запросе.

    1. Измените запрос так, чтобы заказы были отсортированы в порядке убывания суммы (используйте ключевые слова ORDER BY).

    Ответ:

    Вложенные запросы


    1. Построим запрос МинСумма, который выводит минимальную сумму заказа. Для этого будем использовать уже готовый запрос Итоги. Таким образом, источником данных для запроса МинСумма будет не таблица, а другой запрос. Отметим, что предварительно в запросе Итоги нужно отменить сортировку. Запрос получается очень простым

    SELECT MIN("Сумма") AS "Сумма" FROM "Итоги"

    1. Наконец, можно вывести информацию о заказе с минимальной суммой:

    SELECT "Номер заказа", "Дата", "Сумма"

    FROM "Итоги", "МинСумма"

    WHERE "Итоги"."Сумма" = "МинСумма"."Сумма"

    Обратите внимание, что этот запрос использует результаты выполнения двух ранее построенных запросов – Итоги и МинСумма. Запрос Итоги можно было и не составлять, а вместо этого использовать вложенный запрос (запрос в запросе):

    SELECT "Номер заказа", "Дата", "Сумма"

    FROM "Итоги"

    WHERE "Сумма" =

    (SELECT MIN("Сумма") AS "Сумма" FROM "Итоги")

    Заметим, что если в базе данных есть информация о нескольких заказах с такой же (минимальной) суммой, будет показана информация обо всех этих заказах.

    1. Измените запрос так, чтобы получить список всех заказов, сумма которых больше средней.

    Ответ:

    1   2   3   4   5   6   7


    написать администратору сайта