Автор уникально идентифицируется своим идентификатором AUTHOR_ID. Уникальным идентификатором книги является ISBN (как выглядит ISBN, можно посмотреть в выходных данных любой книги). Издательство идентифицируется уникальным идентификатором PUB_ID. В таблицах AUTHORS, BOOKS и PUBLISHERS столбцы AUTHOR_ID, ISBN и PUB_ID соответственно являются первичными ключами. В таблице AUTHORS-BOOKS столбцы AUTHOR_ID и ISBN являются внешними ключами, ссылающимися на первичные ключи таблиц AUTHORS и BOOKS соответственно. В таблице BOOKS столбец PUB_ID является внешним ключом, ссылающимся на первичный ключ таблицы PUBLISHERS.
У каждой книги могут быть один или несколько авторов. Допускается, что авторы книги временно неизвестны. В таблице авторов могут содержаться данные только об авторах книг, описываемых в таблице BOOKS. Каждая книга может быть издана только одним издательством, но для некоторых книг издательство может быть временно неизвестно. Столбец DATE_OF_AGREEMENT содержит дату заключения договора на написание книги между автором и издательством. Столбец AGREEMENT_DURAT содержит временной интервал, в течение которого действует договор. Столбец DATE_OF_PUB содержит даты публикации книг.
Требуется сформулировать запрос "Найти названия издательств, в которых издавались книги Кристофера Дейта (Chris Date)". Какие из приведенных ниже формулировок являются правильными?
SELECT PUB_NAME
FROM PUBLISHERS, AUTHORS
WHERE AUTHOR_NAME = ‘Chris Date’;
SELECT DISTINCT PUB_NAME
FROM PUBLISHERS, BOOKS,
AUTHORS_BOOKS, AUTHORS
WHERE AUTHOR_NAME = ‘Chris Date’
AND PUBLISHERS.PUB_ID =
BOOKS.PUB_ID
AND BOOKS_ISBN =
AUTHORS_BOOKS.ISBN;
SELECT DISTINCT PUB_NAME
FROM PUBLISHERS, BOOKS,
AUTHORS_BOOKS, AUTHORS
WHERE AUTHOR_NAME = ‘Chris Date’
AND PUBLISHERS.PUB_ID =
BOOKS.PUB_ID
AND BOOKS.ISBN =
AUTHORS_BOOKS.ISBN
AND BOOKS.AUTHOR_ID =
AUTHORS.AUTHOR_ID;+
Требуется сформулировать запрос “Найти имена авторов, книги которых издавались в издательствах Addison-Wesley, Morgan Kauffman и O’Reilly”. Какие из приведенных ниже формулировок являются правильными?
SELECT AUTHOR_NAME
FROM AUTHORS, AUTHORS-BOOKS,
BOOKS, PUBLISHERS
WHERE AUTHORS.AUTHOR_ID =
AUTHORS-BOOKS.AUTHOR_ID
AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN
AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID
AND (PUB_NAME = ‘Addison-Wesley’ OR
PUB_NAME = ‘Morgan Kauffman’ OR
PUB_NAME = ‘O’Reilly’);
SELECT DISTINCT AUTHORS.AUTHOR_NAME
FROM AUTHORS, AUTHORS-BOOKS,
BOOKS, PUBLISHERS
WHERE AUTHORS.AUTHOR_ID =
AUTHORS-BOOKS.AUTHOR_ID
AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN
AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID
AND PUB.PUB_NAME
IN (“Addison-Wesley”,
“Morgan Kauffman”,
“O’Reilly”);
SELECT DISTINCT AUTHOR_NAME
FROM AUTHORS, AUTHORS-BOOKS,
BOOKS, PUBLISHERS
WHERE AUTHORS.AUTHOR_ID =
AUTHORS-BOOKS.AUTHOR_ID
AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN
AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID
AND PUB_NAME = ‘Addison-Wesley’
AND PUB_NAME = ‘Morgan Kauffman’
AND PUB_NAME = “O’Reilly”;+
Требуется сформулировать запрос “Найти названия издательств и имена авторов, которые опубликовали в данном издательстве самую дорогую книгу”. Какие из приведенных ниже формулировок являются правильными? (несколько) 2/3-
SELECT PUBLISHERS.PUB_NAME, AUTHOR_NAME
FROM AUTHORS, AUTHORS-BOOKS,
BOOKS, BOOKS BOOKS1, PUBLISHERS,
PUBLISHERS PUBLISHERS1
WHERE AUTHORS.AUTHOR_ID =
AUTHORS-BOOKS.AUTHOR_ID
AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN
AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID
AND BOOKS.PRICE > BOOKS1.PRICE
AND BOOKS1.PUB_ID = PUBLISHERS.PUB_ID
AND BOOKS1.PUB_ID = PUBLISHERS1.PUB_ID
SELECT PUBLISHERS.PUB_NAME, AUTHOR_NAME
FROM AUTHORS, AUTHORS-BOOKS,
BOOKS, PUBLISHERS
WHERE AUTHORS.AUTHOR_ID =
AUTHORS-BOOKS.AUTHOR_ID
AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN
AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID
AND BOOKS.PRICE = (SELECT MAX (BOOKS1.PRICE)
FROM BOOKS BOOKS1,
PUBLISHERS PUBLISHERS1
WHERE BOOKS1.PUB_ID =
PUBLISHERS1.PUB_ID
AND PUBLISHERS1.PUB_ID =
PUBLISHERS.PUB_ID);
SELECT PUBLISHERS.PUB_NAME, AUTHOR_NAME
FROM AUTHORS, AUTHORS-BOOKS, BOOKS, PUBLISHERS
WHERE AUTHORS.AUTHOR_ID =
AUTHORS-BOOKS.AUTHOR_ID
AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN
AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID
AND NOT EXISTS (SELECT *
FROM BOOKS BOOKS1,
PUBLISHERS PUBLISHERS1
WHERE BOOKS1.PUB_ID =
PUBLISHERS1.PUB_ID
AND PUBLISHERS1.PUB_ID =
PUBLISHERS.PUB_ID
AND BOOKS1.PRICE >
BOOKS.PRICE);
База данных АВТОРЫ-КНИГИ-ИЗДАТЕЛЬСТВА (AUTHORS-BOOKS-PUBLISHERS) состоит из следующих таблиц:
AUTHORS
AUTHOR_ID : INTEGER
AUTHOR_NAME : VARCHAR (20)
AUTHOR_BDATE : DATE
AUTHOR_ADDRESS : VARCHAR (40)
AUTHOR_PICTURE : BLOB
AUTHORS-BOOKS
ISBN : VARCHAR (20)
AUTHOR_ID : INTEGER
BOOKS
ISBN : VARCHAR (20)
TITLE : VARCHAR (30)
PUB_ID : INTEGER
DATE_OF_AGREEMENT : DATE
AGREEMENT_DURAT : INTERVAL
DATE_OF_PUB : DATE
PRICE : MONEY
NUMBER_OF_PAGES : SMALLINT
COVER_PICTURE : BLOB
DESCR : CLOB
PUBLISHERS
PUB_ID : INTEGER
PUB_NAME : VARCHAR (20)
PUB_ADDRESS : VARCHAR (40)
Автор уникально идентифицируется своим идентификатором AUTHOR_ID. Уникальным идентификатором книги является ISBN (как выглядит ISBN, можно посмотреть в выходных данных любой книги). Издательство идентифицируется уникальным идентификатором PUB_ID. В таблицах AUTHORS, BOOKS и PUBLISHERS столбцы AUTHOR_ID, ISBN и PUB_ID соответственно являются первичными ключами. В таблице AUTHORS-BOOKS столбцы AUTHOR_ID и ISBN являются внешними ключами, ссылающимися на первичные ключи таблиц AUTHORS и BOOKS соответственно. В таблице BOOKS столбец PUB_ID является внешним ключом, ссылающимся на первичный ключ таблицы PUBLISHERS.
У каждой книги могут быть один или несколько авторов. Допускается, что авторы книги временно неизвестны. В таблице авторов могут содержаться данные только об авторах книг, описываемых в таблице BOOKS. Каждая книга может быть издана только одним издательством, но для некоторых книг издательство может быть временно неизвестно. Столбец DATE_OF_AGREEMENT содержит дату заключения договора на написание книги между автором и издательством. Столбец AGREEMENT_DURAT содержит временной интервал, в течение которого действует договор. Столбец DATE_OF_PUB содержит даты публикации книг.
Также будем использовать таблицы table1 (a1, a2, c1, c2) и table2 (b1, b2, c1, c2) со следующими телами: