Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
1.54 Mб
Скачать

5. Контрольные и самостоятельные работы

А. Спроектировать БД «Библиотека», ввести данные и сформулировать 10 запросов.

create table Categories_annkos

(

catnum integer not null primary key ,

catname char(15) not null

);

insert into Categories_annkos values (111, 'Базы данных');

insert into Categories_annkos values (112, 'ÎÎÏ');

insert into Categories_annkos values (113, 'Логика');

insert into Categories_annkos values (114, 'История');

insert into Categories_annkos values (115, 'Философия');

select * from Categories_annkos;

drop table Categories_annkos;

-------------------------------------------------

create table Author_annkos

(

autnum integer not null primary key ,

autname char(15) not null,

autsurname char(15) not null,

birth_year integer ,

comment char(30)

);

--drop table Author_annkos;

select * from Author_annkos;

insert into Author_annkos values (211, 'М.', 'Грабер', null, null);

insert into Author_annkos values (212, 'Дж.С.', 'Боуман', null, null);

insert into Author_annkos values (213, 'Í.', 'Âåðò', null, null);

insert into Author_annkos values (214, 'С.Ф.', 'Платонов', null, null);

insert into Author_annkos values (215, 'Е.К.', 'Войшвилло', null, null);

insert into Author_annkos values (216, 'М.Г.', 'Дегтярев', null, null);

insert into Author_annkos values (217, 'Е.', 'Мамаев', null, null);

insert into Author_annkos values (218, 'А.', 'Вишневский', null, null);

insert into Author_annkos values (219, 'Т.А.', 'Павловская', null, null);

insert into Author_annkos values (220, 'Ю.А.', 'Щупак', null, null);

------------------------------------------------------

create table Publishing_house_annkos

(

pubnum integer not null primary key ,

pubname char(20) not null,

city char(15) not null,

);

select * from Publishing_house_annkos;

insert into Publishing_house_annkos values (311, 'Весь мир', 'Москва');

insert into Publishing_house_annkos values (312, 'ВЛАДОС-ПРЕСС', 'Москва');

insert into Publishing_house_annkos values (313, 'Интерпракс', 'Москва');

insert into Publishing_house_annkos values (314, 'Вильямс', 'Москва');

insert into Publishing_house_annkos values (315, 'Лори', 'Москва');

insert into Publishing_house_annkos values (316, 'БХВ', 'Санкт-Питербург');

insert into Publishing_house_annkos values (317, 'Питер', 'Санкт-Питербург');

---------------------------------------------------------

create table Books_annkos

(

isbn integer not null primary key ,

bookname varchar(60) not null,

catnum integer not null,

pubyear integer not null,

FOREIGN KEY (catnum) references Categories_annkos (catnum),

);

select * from Books_annkos;

insert into Books_annkos values (411, 'SQL',111, 2003);

insert into Books_annkos values (412, 'История Советского государства',114, 2000);

insert into Books_annkos values (413, 'Полный курс лекций по русской истории',114, 2002);

insert into Books_annkos values (414, 'Логика:Учеб.для вузов',113, 2001);

insert into Books_annkos values (415, 'Логика с элементами эпистемологии и научной методологии',113, 1994);

insert into Books_annkos values (416, 'Практическое руководство по SQL',111, 2001);

insert into Books_annkos values (417, 'Microsoft SQL Server 2000',111, 2002);

insert into Books_annkos values (418, 'Microsoft SQL Server 7 для профессионалов',111, 2001);

insert into Books_annkos values (419, 'С++. Объектно-ориентированное программирование',112, 2005);

insert into Books_annkos values (420, 'С/ С++. Структурное программирование',112, 2005);

drop table Books_annkos;

-----------------------------------------------------------

create table Book_Author_annkos

(

isbn integer not null references Books_annkos ,

autnum integer not null references Author_annkos,

primary key(isbn,autnum)

);

select * from Book_Author_annkos;

insert into Book_Author_annkos values (411,211);--'SQL'

insert into Book_Author_annkos values (412,213);--'История Советского государства'

insert into Book_Author_annkos values (413,214);--'Полный курс лекций по русской истории'

insert into Book_Author_annkos values (414,215);--Логика:Учеб.для вузов'

insert into Book_Author_annkos values (414,216);--Логика:Учеб.для вузов'

insert into Book_Author_annkos values (415,215);--'Логика с элементами эпистемологии и научной методологии'

insert into Book_Author_annkos values (415,216);--'Логика с элементами эпистемологии и научной методологии'

insert into Book_Author_annkos values (416,212);--'Практическое руководство по SQL'

insert into Book_Author_annkos values (417,217);--'Microsoft SQL Server 2000'

insert into Book_Author_annkos values (418,217);--'Microsoft SQL Server 7 для профессионалов'

insert into Book_Author_annkos values (418,218);--'Microsoft SQL Server 7 для профессионалов'

insert into Book_Author_annkos values (419,219);--'С++. Объектно-ориентированное программирование'

insert into Book_Author_annkos values (419,220);--'С++. Объектно-ориентированное программирование'

insert into Book_Author_annkos values (420,219);--'С/ С++. Структурное программирование'

insert into Book_Author_annkos values (420,220);--'С/ С++. Структурное программирование'

--drop table Book_Author_annkos;

---------------------------------------------------------------

create table Book_Publishing_annkos

(

isbn integer not null references Books_annkos ,

pubnum integer not null references Publishing_house_annkos,

primary key(isbn,pubnum)

);

select * from Book_Publishing_annkos;

insert into Book_Publishing_annkos values (411,315);

insert into Book_Publishing_annkos values (412,311);

insert into Book_Publishing_annkos values (413,311);

insert into Book_Publishing_annkos values (414,312);

insert into Book_Publishing_annkos values (415,313);

insert into Book_Publishing_annkos values (416,314);

insert into Book_Publishing_annkos values (417,316);

insert into Book_Publishing_annkos values (418,317);

insert into Book_Publishing_annkos values (419,317);

insert into Book_Publishing_annkos values (420,317);

--drop table Book_Publishing_annkos;

------------------------------------------------------------------

--ЗАПРОСЫ

--1 Найти все книги, у которых 2 автора, и вывести книги, разделы и авторов

select bookname,catname,autsurname

from Categories_annkos,Author_annkos,Books_annkos,Book_Author_annkos

where Books_annkos.isbn in

(select isbn

from Book_Author_annkos

group by isbn

having count(autnum)=2)

and Categories_annkos.catnum=Books_annkos.catnum

and Author_annkos.autnum=Book_Author_annkos.autnum

and Books_annkos.isbn=Book_Author_annkos.isbn;

--2 Найти все книги, которые написала Павловская

select bookname,autsurname

from Author_annkos,Books_annkos,Book_Author_annkos

where Author_annkos.autnum =219

and Author_annkos.autnum=Book_Author_annkos.autnum

and Books_annkos.isbn=Book_Author_annkos.isbn;

--èëè

select bookname,autsurname

from Author_annkos,Books_annkos,Book_Author_annkos

where Book_Author_annkos.autnum =

(select autnum

from Author_annkos

where autsurname='Павловская')

and Author_annkos.autnum=Book_Author_annkos.autnum

and Books_annkos.isbn=Book_Author_annkos.isbn;

--3 Найти всех авторов, издававших книги в издательстве Питер

select distinct autsurname

from Author_annkos,Books_annkos,Book_Author_annkos,Book_Publishing_annkos

where Book_Author_annkos.autnum in

(select autnum

from Book_Author_annkos

where isbn in

(select isbn

from Book_Publishing_annkos

where pubnum=317))

and Author_annkos.autnum=Book_Author_annkos.autnum

and Books_annkos.isbn=Book_Author_annkos.isbn

and Book_Publishing_annkos.isbn=Books_annkos.isbn;

--4 Найти все книги по ООП

select bookname,catname

from Books_annkos,Categories_annkos

where Books_annkos.catnum =112

and Books_annkos.catnum=Categories_annkos.catnum;

--èëè

select bookname,catname

from Books_annkos,Categories_annkos

where Books_annkos.catnum =

(select catnum

from Categories_annkos

where catname='ÎÎÏ')

and Books_annkos.catnum=Categories_annkos.catnum;

--5 Вывести всех авторов, написавших 2 книги

select bookname,catname,autsurname

from Categories_annkos,Author_annkos,Books_annkos,Book_Author_annkos

where Author_annkos.autnum in

(select autnum

from Book_Author_annkos

group by autnum

having count(isbn)=2)

and Categories_annkos.catnum=Books_annkos.catnum

and Author_annkos.autnum=Book_Author_annkos.autnum

and Books_annkos.isbn=Book_Author_annkos.isbn

order by 3;

--6 Найти все издательства, издавшие книги по истории

select distinct pubname, city

from Books_annkos,Book_Publishing_annkos,Publishing_house_annkos

where Publishing_house_annkos.pubnum in

(select pubnum

from Book_Publishing_annkos

where isbn in

(select isbn

from Books_annkos

where catnum=114))

and Books_annkos.isbn=Book_Publishing_annkos.isbn

and Book_Publishing_annkos.pubnum=Publishing_house_annkos.pubnum;

--7 Найти всех авторов, написавших книги по SQL

select distinct autsurname,autname

from Author_annkos,Books_annkos,Book_Author_annkos

where Author_annkos.autnum in

(select autnum

from Book_Author_annkos

where isbn in

(select isbn

from Books_annkos

where catnum=111))

and Books_annkos.isbn=Book_Author_annkos.isbn

and Book_Author_annkos.autnum=Author_annkos.autnum;

--8 Вывести все книги, издававшиеся в Москве

select distinct bookname,catname

from Categories_annkos,Author_annkos,Books_annkos,Book_Author_annkos

where Books_annkos.isbn in

(select isbn

from Book_Publishing_annkos

where pubnum in

(select pubnum

from Publishing_house_annkos

where city='Москва'))

and Categories_annkos.catnum=Books_annkos.catnum

and Author_annkos.autnum=Book_Author_annkos.autnum

and Books_annkos.isbn=Book_Author_annkos.isbn;

--9 Найти все книги издававшиеся до 2003 года, но не по Истории

select distinct bookname,Categories_annkos.catname,pubyear

from Categories_annkos,Books_annkos

where pubyear < 2003

and Books_annkos.catnum <>

(select catnum

from Categories_annkos

where catname = 'История')

and Categories_annkos.catnum=Books_annkos.catnum;

--10 Вывести все категории, в которых больше, чем 2 книги

select catname

from Categories_annkos

where catnum in

(select catnum

from Books_annkos

group by catnum

having count(isbn)>2);

Б. Разработать небольшую БД «Студенты», ввести данные и реализовать запросы

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]