Описание набора тестовых данных
Таблица 1.
Авторы.
Таблица 2.
Блоки.
Таблица 3.
Издательства.
Таблица 4.
Каталог.
Таблица 5.
Книги.
Таблица 6.
Личности.
Таблица 7.
Рецензенты.
Таблица 8.
Связь с каталогом.
Таблица 9.
Стеллажи.
Таблица 10.
Экземпляры книг.
SQL-запросы
1) Вывести все пункты каталога
select c.name from catalog c
2) Вывести всех личностей, отсортировать по алфавиту
select p.fio from person porder by p.fio asc
3) Вывести всех рецензентов
select distinct e.fio from edition e
4) Вывести названия книг где больше 500 страниц
select b.name from book b where b.str_num > 500
5) Вывести книги опубликованные с 2002 до 2005 года
select b.name from book b where b.pub_year between '2002' and '2005'
6) Посчитать количество экземпляров книг в библиоте
кеselect count(be.expl_id)from book_expl be
7) Вывести книги с ISBN начинающимся на 5
select b.name from book b where b.isbn like '5%'
8) Вывести книгу в которой больше всего страниц
select b.name from book b where b.str_num =(select max(b.str_num) from book b)
9) Вывести книги 2002 года выпуска или те в которых более 800 страниц
select b.name from book b where b.pub_year = 2002or b.str_num > 800
10) Посчитать количество книг для каждой категории каталога
select cl.catalog_id, count(cl.isbn) from catalog_link clgroup by cl.catalog_id
11) Вывести стеллажи на которых больше 3 экземпляров книг
select be.rack_id from book_expl begroup by be.rack_idhaving count(be.expl_id) > 4
12) Вывести книги написанные более чем одним автором
select b.name from book b, author a where a.isbn = b.isbngroup by b.namehaving count(a.fio) > 1
13) Вывести авторов кники "Ноутбук на сто процентов"
select a.fio from book b, author a where b.name = 'Ноутбук на сто процентов'and a.isbn = b.isbn
14) Вывести издательства от которых нет ниодной книги
select p.publishing from publishing p where p.publishing not in (select b.publishing from book b)
15) Вывести авторов и рецензентов книги с ISBN 5-17-011197-5
select a.fiofrom author a where a.isbn = '5-17-011197-5'unionselect e.fio from edition ewhere e.isbn = '5-17-011197-5
'
16) Вывести все издательства и количество книг изданных ими
select p.publishing, count(b.isbn) from publishing pleft outer join book b on b.publishing = p.publishinggroup by p.publishing
17) Вывести информацию о книге с ISBN 5-17-011197-5
select b.name, a.fio, e.fio, b.pub_year, b.str_num, b.publishing, b.blockfrom book b, author a, edition e where b.isbn = '5-17-011197-5'and e.isbn = b.isbnand a.isbn = b.isbn
18) Добавить личность Купчина И.И.
insert into person (fio) values ('купчина и.и.')
19) Удалить экземпляры книги "Язык С++ в С++ Builder"
delete from book_expl bewhere be.isbn = (select b.isbn from book b where b.name = 'Язык С++ в С++ Builder')
20) Изменить категорию каталога у книги "Метрология и радиоизмерения" на раздел физикиu
pdate catalog_link clset cl.catalog_id = (select c.catalog_id from catalog c where c.name = 'Физика')where cl.isbn = (select b.isbn from book b where b.name = 'Метрология и радиоизмерения')
21) Вывести кники у которых нет рецензентов
select b.name from book b where not exists (select 1 from edition e where e.isbn = b.isbn)
22) Вывести книги и информацию по ним из раздела "Математика"
select b.isbn, b.name, a.fio, e.fio, b.pub_year, b.str_num, b.publishingfrom catalog c, catalog_link cl, book bleft outer join author a on a.isbn = b.isbnleft outer join edition e on e.isbn = b.isbn where c.name = 'Математика'and cl.catalog_id = c.catalog_idand b.isbn = cl.isbn
23) Вывести личностей которые являлись как авторами, так и рецензентами
select p.fio from person p where exists (select 1 from author a where a.fio = p.fio)and exists (select 1 from edition e where e.fio = p.fio)
24) Вывести каталог библиотеки
select c.name, c1.name from catalog cright outer join catalog c1 on c1.parent_cat_id = c.catalog_id
25) Добавить экземпляр книги "КПК и коммуникатор." на стеллаж 4
insert into book_expl (rack_id,expl_id,isbn) values (4,21,'978-5-477-00604-5')
26) Вывести личностей которые не являются авторами
select p.fio from person p where not exists (select 1 from author a where a.fio = p.fio)
27) Вывести ISBN идентификаторы книг от издательств Аквариум и Дрофа
select b.isbn from book b where b.publishing in ('Аквариум', 'Дрофа')
28) Вывести какого автора какое издательство публиковало
select distinct a.fio, b.publishingfrom author a, book b where b.isbn = a.isbn
29) Вывести книги автора Кузьминова В.И.
select b.name, c.name from author a, book b, catalog_link cl, catalog cwhere a.fio = 'Кузьминов В.И.'and b.isbn = a.isbnand cl.isbn = b.isbnand c.catalog_id = cl.catalog_id
30) Вывести того кто являлся одновременно и автором книги и ее рецензентом
select distinct p.fio from person p, author a, edition ewhere a.fio = p.fio and e.fio = p.fio and a.isbn = e.isbn
Заключение
В данной работе нами была создана база данных, которая позволяет упрощённо пользоваться библиотекой, с легкостью полонять и корректировать её. С помощью этой базы можно значительно упростить работу библиотекаря и освободить его от лишней бумажной волокиты.