DELETE FROM ADMIN_PAY.Pay WHERE T_number = 0 AND Sum_pay = 0;
48
2. УПРАЖНЕНИЯ НА SQL
2.1. База данных «Книжное дело»
На рисунке 21 представлен фрагмент упрощенной схемы данных для выполнения индивидуальных заданий. Прежде чем приступить к выполнению заданий необходимо в новой базе данных с названием DB_BOOKS создать таблицы со структурой, показанной в таблицах 7–11, установить связи между таблицами, затем заполнить тестовыми данными.
Purchases |
|
|
Books |
|
|
|
Authors |
Code_book |
|
|
Code_book |
|
|
|
Code_author |
Date_order |
|
|
Title_book |
|
|
|
Name_author |
Code_delivery |
|
|
Code_author |
|
|
|
Birthday |
Type_purchase |
|
|
Pages |
|
|
|
|
Cost |
|
|
Code_publish |
|
|
|
|
Amount |
|
|
|
|
|
|
|
Code_purchase |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Deliveries |
|
|
Publishing_ho |
|
|
|
|
|
|
|
use |
|
|
Code_delivery
Name_delivery
Name_company
Address
Phone
INN
Code_publish
Publish
City
Рис. 21. Фрагмент базы данных «Книжное дело»
Связь между таблицами осуществляется с помощью следующих пар полей с типом связи «один-ко-многим» соответственно:
1.Books.Code_book - Purchases.Code_book;
2.Deliveries.Code_delivery - Purchases.Code_delivery;
3.Authors.Code_author - Books.Code_author;
4.Publising_house.Code_publish - Books.Code_publish.
Таблица 7
Покупки (название таблицы Purchases)
Название поля |
Тип поля |
Описание поля |
Code_book |
Integer |
Код закупаемой книги |
Date_order |
Datetime |
Дата заказа книги |
Code_delivery |
Integer |
Код поставщика |
Type_purchase |
Bit |
Тип закупки (опт/ розница) |
Cost |
Money |
Стоимость единицы товара |
Amount |
Integer |
Количество экземпляров |
49
Code_purchase |
|
Integer |
Код покупки |
|
|
|
|
Таблица 8 |
|
|
Справочник книг (название таблицы Books) |
|||
|
|
|
|
|
Название поля |
|
Тип поля |
Описание поля |
|
Code_book |
|
Integer |
Код книги |
|
Title_book |
|
Char |
Название книги |
|
Code_author |
|
Integer |
Код автора |
|
Pages |
|
Integer |
Количество страниц |
|
Code_publish |
|
Integer |
Код издательства |
|
|
|
|
Таблица 9 |
|
Справочник авторов (название таблицы Authors) |
||||
|
|
|
|
|
Название поля |
|
Тип поля |
Описание поля |
|
Code_author |
|
Integer |
Код автора |
|
Name_ author |
|
Char |
Фамилия, имя, отчество автора |
|
Birthday |
|
Datetime |
Дата рождения |
|
|
|
|
Таблица 10 |
|
Справочник поставщиков (название таблицы Deliveries) |
||||
|
|
|
|
|
Название поля |
|
Тип поля |
Описание поля |
|
Code_delivery |
|
Integer |
Код поставщика |
|
Name_delivery |
|
Char |
Фамилия, и., о. ответственного лица |
|
Name_company |
|
Char |
Название компании-поставщика |
|
Address |
|
Char |
Юридический адрес |
|
Phone |
|
Numeric |
Телефон контактный |
|
INN |
|
Char |
ИНН |
|
Таблица 11
Справочник издательств (название таблицы Publishing_house)
Название поля |
Тип поля |
Описание поля |
Code_publish |
Integer |
Код издательства |
Publish |
Char |
Издательство |
City |
Char |
Город |
2.2. Упражнения с использованием операторов обработки данных для БД «Книжное дело»
Сортировка.
1. Выбрать все сведения о книгах из таблицы Books и отсортировать результат по коду книги (поле Code_book).
50
2.Выбрать из таблицы Books коды книг, названия и количество страниц (поля Code_book, Title_book и Pages), отсортировать результат по названиям книг (поле Title_book по возрастанию) и по полю Pages (по убыванию).
3.Выбрать из таблицы Deliveries список поставщиков (поля Name_delivery, Phone и INN), отсортировать результат по полю INN (по убыванию).
Изменение порядка следования полей.
4.Выбрать все поля из таблицы Deliveries таким образом, чтобы в результате порядок столбцов был следующим: Name_delivery, INN, Phone, Address, Code_delivery.
5.Выбрать все поля из таблицы Publishing_house таким образом, чтобы в результате порядок столбцов был следующим: Publish, City, Code_publish.
Выбор некоторых полей из двух таблиц.
6.Выбрать из таблицы Books названия книг и количество страниц
(поля Title_book и Pages), а из таблицы Authors выбрать имя соответствующего автора книги (поле Name_ author).
7.Выбрать из таблицы Books названия книг и количество страниц
(поля Title_book и Pages), а из таблицы Deliveries выбрать имя соответствующего поставщика книги (поле Name_delivery).
8.Выбрать из таблицы Books названия книг и количество страниц
(поля Title_book и Pages), а из таблицы Publishing_house выбрать название соответствующего издательства и места издания (поля Publish и City).
Условие неточного совпадения.
9.Выбрать из справочника поставщиков (таблица Deliveries) названия компаний, телефоны и ИНН (поля Name_company, Phone и INN),
укоторых название компании (поле Name_company) начинается с ‘ОАО’.
10.Выбрать из таблицы Books названия книг и количество страниц
(поля Title_book и Pages), а из таблицы Authors выбрать имя соответствующего автора книг (поле Name_ author), у которых название книги начинается со слова ‘Мемуары’.
11.Выбрать из таблицы Authors фамилии, имена, отчества авторов (поле Name_ author), значения которых начинаются с ‘Иванов’.
Точное несовпадение значений одного из полей.
51
12.Вывести список названий издательств (поле Publish) из таблицы Publishing_house, которые не находятся в городе ‘Москва’ (условие по полю City).
13.Вывести список названий книг (поле Title_book) из таблицы Books, которые выпущены любыми издательствами, кроме издательства
‘Питер-Софт’ (поле Publish из таблицы Publishing_house).
Выбор записей по диапазону значений (Between).
14.Вывести фамилии, имена, отчества авторов (поле Name_author) из таблицы Authors, у которых дата рождения (поле Birthday) находится в диапазоне 01.01.1840 – 01.06.1860.
15.Вывести список названий книг (поле Title_book из таблицы Books) и количество экземпляров (поле Amount из таблицы Purchases), которые были закуплены в период с 12.03.2003 по 15.06.2003 (условие по полю Date_order из таблицы Purchases).
16.Вывести список названий книг (поле Title_book) и количество страниц (поле Pages) из таблицы Books, у которых объем в страницах укладывается в диапазон 200 – 300 (условие по полю Pages).
17.Вывести список фамилий, имен, отчеств авторов (поле Name_author) из таблицы Authors, у которых фамилия начинается на одну из букв диапазона ‘В’ – ‘Г’ (условие по полю Name_author).
Выбор записей по диапазону значений (In).
18.Вывести список названий книг (поле Title_book из таблицы Books) и количество (поле Amount из таблицы Purchases), которые были поставлены поставщиками с кодами 3, 7, 9, 11 (условие по полю
Code_delivery из таблицы Purchases).
19.Вывести список названий книг (поле Title_book) из таблицы Books, которые выпущены следующими издательствами: ‘Питер-Софт’, ‘Альфа’, ‘Наука’ (условие по полю Publish из таблицы Publishing_house).
20.Вывести список названий книг (поле Title_book) из таблицы Books, которые написаны следующими авторами: ‘Толстой Л.Н.’, ‘Достоевский Ф.М.’, ‘Пушкин А.С.’ (условие по полю Name_author из таблицы Authors).
Выбор записей с использованием Like.
21.Вывести список авторов (поле Name_author) из таблицы Authors, которые начинаются на букву ‘К’.
22.Вывести названия издательств (поле Publish) из таблицы Publishing_house, которые содержат в названии сочетание ‘софт’.
23.Выбрать названия компаний (поле Name_company) из таблицы Deliveries, у которых значение оканчивается на ‘ский’.
52