Внимание ! Вопросы к тесту выложены исключительно в ознакомительных целях: количество вопросов может не совпадать с действительным, актуальность не поддерживается,- за решением теста Welcome to the cashier! Что представляют собой значения типа NUMERIC (10, 2)?
приближенные числа из 12 десятичных цифр с двумя цифрами после десятичной точки точные числа из 12 десятичных цифр с двумя цифрами после десятичной точки точные числа из 10 десятичных цифр, две из которых составляют дробную часть
Пусть в некоторой таблице определен столбец типа CHARACTER (7). Какая символьная строка будет реально храниться в этом столбце некоторой строки таблицы, если при вставке строки в качестве значения этого была указана литеральная константа ‘test’?
"test___", где "_" – символ пробела "test_’000000" "test"
Какая из приведенных ниже таблиц является таблицей истинности для логической функции “штрих Шеффера” в трехзначной логике?
AND TRUE FALSE UNKNOWN TRUE TRUE FALSE UNKNOWN FALSE FALSE FALSE FALSE UNKNOWN UNKNOWN FALSE UNKNOWN Пусть имеется следующее определение домена:
CREATE DOMAIN TEST AS INTEGER DEFAULT 100 CHECK (VALUE > 0 AND VALUE != 150 AND VALUE < 200) CONSTRAINT (VALUE IS NOT NULL);
Пусть на этом домене определен столбец некоторой таблицы. Какие из перечисленных значений не могут появиться в качестве значений этого столбца ни в одной строке таблицы?
NULL 100 151
Какова степень анонимного строчного типа ROW (a INTEGER, b ROW (C INTEGER, C CHARACTER (7)))?
3 4 2
Пусть имеется литерал точного числового типа 22519. При выполнении какого из следующих операторов CAST будет зафиксирована ошибка?
CAST 22519 AS CHARACTER (4) CAST 22519 AS NUMERIC (8) CAST 22519 AS FLOAT (8)
Какова максимальная кардинальность типа INTEGER ARRAY [10] ARRAY [10]?
20 10 100
Пусть имеется следующее определение домена:
CREATE DOMAIN TEST AS INTEGER DEFAULT 100 CHECK (VALUE > 10 AND VALUE != 150 AND VALUE != 190 AND VALUE < 200);
Пусть на этом домене определен столбец некоторой таблицы. Предположим, что в некоторый момент времени значениями данного столбца в строках таблицы являются значения {100, NULL, 160}. Пусть после этого выполняется оператор
ALTER DOMAIN TEST SET DEFAULT 180 ADD CHECK (VALUE IS NOT NULL);
Что произойдет при выполнении оператора?
оператор будет отвергнут имеющиеся значения столбца не изменятся значение 100 изменится на значение 180
Пусть имеется литерал 123E12. При выполнении какого из следующих операторов CAST будет зафиксирована ошибка?
CAST 123E12 AS FLOAT (8) CAST 123E12 AS NUMERIC (8) CAST 123E12 AS CHARACTER (4)
Пусть имеется литерал типа символьных строк ‘12251999’. При выполнении какого из следующих операторов CAST будет зафиксирована ошибка?
CAST ‘12251999’ AS VARCHAR (8) CAST ‘12251999’ AS NUMERIC (8) CAST ‘12251999’ AS DATE (8)
Пусть в некоторой таблице определен столбец типа VARCHAR (7). Какая символьная строка будет реально храниться в этом столбце некоторой строки таблицы, если при вставке строки в качестве значения этого была указана литеральная константа "test"?
"test___", где "_" – символ пробела "test" "testX'000000"
Пусть в некоторой таблице определен столбец типа INTEGER ARRAY [10]. Пусть при вставке в эту таблицу некоторой строки в данный столбец заносится значение-массив, в котором задан только десятый элемент. Будет ли выполнена эта операция, какая память будет отведена для хранения этого массива, и что реально в ней будет содержаться?
операция будет выполнена, будет выделена память для хранения десяти элементов массива, в первых девяти будут содержаться неопределенные значения, а в последнем – значение десятого элемента операция выполнена не будет, поскольку не заданы начальные элементы массива операция будет выполнена, будет выделена память для хранения одного элемента массива, в которой будет содержаться значение десятого элемента
Пусть в некоторой таблице определен столбец типа INTEGER ARRAY [10]. Пусть при вставке в эту таблицу некоторой строки в данный столбец заносится значение-массив (12, 14, 18, 22). Чему будет равно значение cs для значения-массива данного столбца в этой строке после занесения в него восьмого элемента массива?
10 5 8
Пусть в базовой таблице S определен внешний ключ (a, b, c), где a, b и c – имена столбцов определяемой таблицы. Будем считать, что все столбцы целого типа и могут содержать неопределенное значение. Предположим, что внешний ключ ссылается на первичный ключ таблицы T, состоящий из столбцов с такими же именами. При какой спецификации способа соответствия значение внешнего ключа <NULL, 1, 10> соответствует значению первичного ключа <25, 1, 10>?
PARTIAL FULL SIMPLE
Пусть при определении базовой таблицы указано ограничение UNIQUE (a, b, c), где a, b и c – составляют полный список имен столбцов определяемой таблицы. Будем считать, что все столбцы целого типа и могут содержать неопределенное значение. Какие из показанных ниже пар строк смогут находиться в теле таблицы?
Предположим, что проекты финансируются отделами. Каждый отдел финансирует не более одного проекта, один проект может финансироваться несколькими отделами, и общая сумма финансирования проекта не должна составлять менее 1000000.00 руб. Выполнение каких из приведенных ниже операторов изменит определения таблиц DEPT и PRO требуемым образом?
ALTER TABLE DEPT ADD DEPT_PRO_INVEST NUMERIC (10, 2) DEFAULT NULL;
ALTER TABLE DEPT ADD DEPT_PRO PRO_NO DEFAULT NULL; REFERENCES PRO ON DELETE SET NULL;
ALTER TABLE DEPT ADD CONSTRAINT PRO_INVEST_VALUE CHECK (IF (DEPT_PRO IS NOT NULL) THEN (SELECT SUM (D.DEPT_PRO_INVEST) FROM DEPT D WHERE DEPT_PRO = D.DEPT_PRO) >= 1000000.00);
ALTER TABLE PRO ADD PRO_DEPT_INVEST NUMERIC (10, 2) DEFAULT NULL;
ALTER TABLE PRO ADD PRO_DEPT DEPT_NO NO NULL; REFERENCES PRO ON DELETE CASCADES; CHECK (SELECT SUM (PRO_DEPT_INVEST) FROM PRO WHERE PRO_DEPT = VALUE) >= 1000000.00);
ALTER TABLE DEPT ADD DEPT_PRO_INVEST NUMERIC (10, 2) DEFAULT NULL;
ALTER TABLE PRO ADD PRO_DEPT DEPT_NO NO NULL; REFERENCES DEPT ON DELETE CASCADES; CHECK (SELECT SUM (DEPT_PRO_INVEST) FROM DEPT WHERE DEPT_NO = VALUE) >= 1000000.00);
Пусть в базовой таблице S определен внешний ключ (a, b, c), где a, b и c – имена столбцов определяемой таблицы. Пусть для этого внешнего ключа специфицирован способ соответствия SIMPLE. Будем считать, что все столбцы целого типа и могут содержать неопределенное значение. Предположим, что внешний ключ ссылается на первичный ключ таблицы T, состоящий из столбцов с такими же именами. Пусть в таблице S присутствуют строки s1, s2 и s3 со значениями внешнего ключа <NULL, NULL, 5>, <25, 1, NULL> и <25, 1, 5> соответственно. Что произойдет при удалении строки из таблицы T со значением первичного ключа <25, 1, 5>, если при определении внешнего ключа (a, b, c) таблицы S указано ссылочное действие ON DELETE SET NULL?
строка из таблицы T будет удалена, а значением внешнего ключа в строках s1, s2 и s3 таблицы S станет <NULL, NULL, NULL> строка из таблицы T будет удалена, а значениями внешнего ключа в строках s1, s2 и s3 таблицы S станут <NULL, NULL, 5>, <25, 1, NULL> и <NULL, NULL, NULL> соответственно операция удаления строки из таблицы T не выполнится
Предположим, что в таблице объявлен возможный ключ, состоящий из n столбцов, для m из которых (m ≤ n) при определении столбца отсутствовала спецификация NOT NULL. В скольких строках таблицы столбцы возможного ключа смогут содержать неопределенные значения?
2m – 1 m * n m + n
Предположим, что некоторые служащие могут учиться в аспирантуре своего предприятия. Каждый аспирант имеет единственного научного руководителя, являющегося служащим того же предприятия. Требуется, чтобы у одного научного руководителя было не более пяти аспирантов. Выполнение каких из приведенных ниже операторов изменит определение таблицы EMP требуемым образом?
ALTER TABLE EMP ADD EMP_ADVISER EMP_NO DEFAULT NULL REFERENCES EMP ON DELETE SET NULL CHECK (VALUE < 6);
ALTER TABLE EMP ADD EMP_ADVISER EMP_NO NO NULL REFERENCES EMP ON DELETE CASCADE;
ALTER TABLE EMP ADD EMP_ADVISER EMP_NO DEFAULT NULL REFERENCES EMP ON DELETE SET NULL; CHECK (IF (VALUE IS NOT NULL) THEN (SELECT COUNT (*) FROM EMP E WHERE E.EMP_ADVISER = VALUE) < 6);
Какой из режимов проверки разумно установить для ограничения таблицы PRO_EMP_NO?
INITIALLY IMMEDIATE DEFERRABLE INITIALLY DEFERRED INITIALLY IMMEDIATE NOT DEFERRABLE
Пусть в базовой таблице S определен внешний ключ (a, b, c), где a, b и c – имена столбцов определяемой таблицы. Пусть для этого внешнего ключа специфицирован способ соответствия PARTIAL. Будем считать, что все столбцы целого типа и могут содержать неопределенное значение. Предположим, что внешний ключ ссылается на первичный ключ таблицы T, состоящий из столбцов с такими же именами. Пусть в таблице S присутствуют строки s1, s2 и s3 со значениями внешнего ключа <NULL, NULL, 5>, <25, 1, NULL> и <25, 1, 5> соответственно. Пусть в таблице T присутствуют строки t1, t2 со значениями первичного ключа <25, 1, 5> и <25, 2, 5> соответственно. Что произойдет при удалении из таблицы T строки t1, если при определении внешнего ключа (a, b, c) таблицы S указано ссылочное действие ON DELETE SET NULL?
строка из таблицы T будет удалена, а значением внешнего ключа в строках s1, s2 и s3 таблицы S станет <NULL, NULL, NULL> строка из таблицы T будет удалена, а значениями внешнего ключа в строках s1, s2 и s3 таблицы S станут <NULL, NULL, 5>, <NULL, NULL, NULL> и <NULL, NULL, NULL> соответственно операция удаления строки из таблицы T не выполнится
Каким будет значение по умолчанию столбца, определенного без указания собственного значения по умолчанию и без ограничения NOT NULL, после отмены определения домена, на котором данный столбец был определен, если у домена было задано значение по умолчанию?
у столбца не будет значения по умолчанию NULL останется значение по умолчанию домена
Какой из режимов проверки разумно установить для ограничения таблицы EMP TOTAL_INCOME?
INITIALLY DEFERRED INITIALLY IMMEDIATE NOT DEFERRABLE INITIALLY IMMEDIATE DEFERRABLE
Предположим, что служащие, участвующие в проектах, могут получать дополнительную премию, равную средней основной заработной плате участников соответствующего проекта. Выполнение каких из приведенных ниже операторов изменит определение таблицы EMP требуемым образом?
ALTER TABLE EMP ADD EMP_PRO_BONUS SALARY DEFAULT NULL;
ALTER TABLE EMP ADD CONSTRAINT PRO_BONUS CHECK (IF (EMP_PRO_BONUS IS NOT NULL) THEN PRO_NO IS NOT NULL)
ALTER TABLE DEPT ADD CONSTRAINT MORE_TOTAL_INCOME CHECK (DEPT_TOTAL_SAL >= (SELECT SUM(EMP_SAL + COALESCE(EMP_BONUS,0) + COALESCE(EMP_PRO_BONUS,0)) FROM EMP WHERE EMP.DEPT_NO = DEPT_NO));
ALTER TABLE EMP ADD EMP_PRO_BONUS SALARY DEFAULT NULL;
ALTER TABLE EMP ADD CONSTRAINT PRO_BONUS_VALUE CHECK (IF (EMP_PRO_BONUS IS NOT NULL) THEN EMP_PRO_BONUS = (SELECT AVG (E.EMP_SAL) FROM EMP E WHERE PRO_NO = E.PRO_NO));
ALTER TABLE EMP ADD CONSTRAINT PRO_BONUS CHECK (IF (EMP_PRO_BONUS IS NOT NULL) THEN PRO_NO IS NOT NULL)
ALTER TABLE DEPT ADD CONSTRAINT MORE_TOTAL_INCOME CHECK (DEPT_TOTAL_SAL >= (SELECT SUM(EMP_SAL + COALESCE(EMP_BONUS,0) + COALESCE(EMP_PRO_BONUS,0)) FROM EMP WHERE EMP.DEPT_NO = DEPT_NO));
ALTER TABLE EMP ADD EMP_PRO_BONUS SALARY DEFAULT NULL;
ALTER TABLE EMP DROP CONSTRAINT TOTAL_INCOME;
ALTER TABLE DEPT ADD CONSTRAINT TOTAL_INCOME CHECK (DEPT_TOTAL_SAL >= (SELECT SUM(EMP_SAL + COALESCE(EMP_BONUS,0) + COALESCE(EMP_PRO_BONUS,0)) FROM EMP WHERE EMP.DEPT_NO = DEPT_NO));
Какой из режимов проверки разумно установить для ограничения таблицы MIN_EMP_BDATE?
INITIALLY DEFERRED INITIALLY IMMEDIATE NOT DEFERRABLE INITIALLY IMMEDIATE DEFERRABLE
Предположим, что в таблице объявлен возможный ключ со спецификацией MATCH PARTIAL, состоящий из n столбцов, для m из которых (m ≤ n) при определении столбца отсутствовала спецификация NOT NULL. На сколько строк таблицы, на которую ведет ссылка, может ссылаться одна строка ссылающейся таблицы?
m + n m * n 2m
В каких из перечисленных ниже случаях значением столбца по умолчанию является NULL?
(Ответ считается верным, если отмечены все правильные варианты ответов.) в определении столбца отсутствует раздел DEFAULT, и столбец определяется на базовом типе данных или на домене, в определении которого отсутствует раздел DEFAULT в определении столбца отсутствует раздел DEFAULT, но столбец определяется на домене, в определении которого присутствует раздел DEFAULT NULL в разделе DEFAULT определения столбца указано NULL
Пусть A является столбцом таблицы T типа INTEGER, B – столбцом таблицы T типа CHARACTER (5), а C – столбцом таблицы T типа CHARACTER VARYING (8). Какого типа будет результат выражения следующего выражения с переключателем?
CASE WHEN A = 5 THEN B WHEN A > 6 THEN C ELSE B || C END
CHARACTER (13) CHARACTER VARYING (8) CHARACTER VARYING (13)
Можно ли выразить булевскую функцию SQL IS через функцию “стрелка Пирса”? Каков из представленных ниже ответов является правильным?
Да. x IS y ≡ pi (pi (pi (pi (A, A), pi (B, B)), pi (A, B))) Булевская функция SQL IS не выражается через функцию “стрелка Пирса”, потому что в трехзначной логике SQL NOT UNKNOWN = UNKNOWN Да. x IS y ≡ pi (pi (pi (pi (A, A), pi (B, B)), pi (A, B)), pi (pi (pi (A, A), pi (B, B)), pi (A, B)))
Пусть A и B являются столбцами таблицы T типа CHARACTER (5), и пусть в при вставке в строку s этой таблицы в столбец A было занесено значение ‘ONE’, а в столбец B – ‘TIME’. Каким будет значение выражения A || B при его вычислении для значений строки s? (Здесь “_” обозначает символ пробела.)
“ONE_TIME” “ONE__TIME_” “ONE__TIME”
Какое из приведенных ниже выражений с переключателем эквивалентно выражению NULLIF (COALESCE (V1, V2), COALESCE (V3, V4))? (“<>” обозначает сравнение на неравенство.)
CASE WHEN V1 = V3 OR (V1 IS NULL AND V3 NOT NULL AND V2 = V3) OR (V1 NOT NULL AND V3 IS NULL AND V1 = V4) OR (V1 IS NULL AND V3 IS NULL AND V2 = V4) THEN NULL WHEN V1 NOT NULL AND (V1 <> V3 OR V3 IS NULL) AND (V3 IS NULL OR V2 IS NULL OR V2 <> V3) AND (V3 NOT NULL OR V4 IS NULL OR V1 <> V4) AND (V3 NOT NULL OR V2 IS NULL OR V4 IS NULL OR V2 <> V4) THEN V1 ELSE V2 END
CASE WHEN V1 = V3 OR (V1 NOT NULL AND V3 NOT NULL OR V2 = V3) OR (V1 IS NULL OR V3 IS NULL AND V1 = V4) OR (V1 IS NULL AND V3 NOT NULL OR V2 = V4) THEN NULL WHEN V1 NOT NULL AND V1 <> V3 AND V3 NOT NULL AND V2 <> V3 AND (V3 IS NULL OR V1 <> V4) AND (V3 NOT NULL AND V2 <> V4 THEN V1 ELSE V2 END
CASE WHEN V1 = V3 OR (V1 NOT NULL AND V3 NOT NULL AND V2 = V3) OR (V1 IS NULL AND V3 IS NULL AND V1 = V4) OR (V1 IS NULL AND V3 NOT NULL AND V2 = V4) THEN NULL WHEN V1 NOT NULL AND V1 <> V3 AND (V3 NOT NULL OR V2 <> V3) AND (V3 IS NULL OR V1 <> V4) AND (V3 NOT NULL OR V2 <> V4) THEN V1 ELSE V2 END
Сколько строк будет в результате операции
SELECT A FROM T GROUP BY A HAVING A = const; если столбец A является возможным ключом таблицы T?
столько, сколько строк в таблице T 0 не больше одной
Пусть имеются три мультимножества M1, M2 и M3, содержащие общий элемент a, причем в мультимножестве M1 содержится n дубликатов a, в мультимножестве M2 – m дубликатов a, а в мультимножестве M3 – k дубликатов. Сколько дубликатов элемента a будет содержаться в результате операции (M1 MINUS M2) INTERSECT M3?
min (max ((m-n),0), k) n - m - k max (n, min (m, k))
Пусть имеется таблица T со столбцами A, B и C. Какие из приведенных ниже конструкторов строки являются синтаксическими неверными?
SELECT * FROM T WHERE B = const ROW (5, NULL, SELECT * FROM T WHERE B = const) SELECT A FROM T WHERE B = const
Сколько строк будет в результате операции
SELECT A FROM T GROUP BY A;
если столбец A является возможным ключом таблицы T?
1 0 столько, сколько строк в таблице T
Пусть имеется таблица T со столбцами A, B и C. При каких условиях можно гарантировать, что в результате запроса SELECT * FROM T WHERE B = const всегда будет содержаться не более чем одна строка?
(Ответ считается верным, если отмечены все правильные варианты ответов.) при определении таблицы T столбец B был специфицирован как возможный ключ таблица T содержит всего одну строку при определении таблицы T столбец B был специфицирован как первичный ключ
Какое из приведенных ниже выражений с переключателем эквивалентно выражению COALESCE (NULLIF (V1, V2), NULLIF (V3, V4))? (“<>” обозначает сравнение на неравенство.)
CASE WHEN V1 <> V2 THEN V1 WHEN V1 = V2 AND V3 = V4 THEN NULL ELSE V3 END
CASE WHEN V1 NOT NULL THEN V2 WHEN V1 = V2 AND V3 <> V4 THEN V4 ELSE V3 END
CASE WHEN V1 = V2 AND V1 NOT NULL THEN V1 WHEN V1 <> V2 AND V3 <> V4 THEN V3 ELSE NULL END
Пусть имеется таблица T со столбцами A, B и C. Какие из приведенных ниже конструкторов таблицы являются синтаксически неверными?
VALUES ROW (SELECT A FROM T WHERE B = const, SELECT B FROM T WHERE C = const, SELECT A FROM T WHERE B = const), ROW (15, 25, NULL)
VALUES ROW (SELECT * FROM T WHERE B = const, NULL), (15, 25, NULL)
VALUES SELECT * FROM T WHERE B = const, ROW (5, NULL, SELECT A FROM T WHERE B = const), (DEFAULT, NULL, NULL)
Пусть имеются четыре мультимножества M1, M2, M3 и M4, содержащие общий элемента a, причем в мультимножестве M1 содержится n дубликатов a, в мультимножестве M2 – m дубликатов a, в мультимножестве M3 – k дубликатов, а в мультимножестве M4– p дубликатов Сколько дубликатов элемента a будет содержаться в результате операции (M1 INTERSECT M2) MINUS (M3 UNION M4)?
n - m - k – p min (max((n-m), 0), (k+p)) max (min ((m-n), (k+p)), 0)
Пусть имеются три мультимножества M1, M2 и M3, содержащие общий элемента a, причем в мультимножестве M1 содержится n дубликатов a, в мультимножестве M2 – m дубликатов a, а в мультимножестве M3 – k дубликатов. Сколько дубликатов элемента a будет содержаться в результате операции (M1 UNIOIN M2) INTERSECT M3?
min ((m+n), k) n + m - k min (n, (m+k))
Пусть A является столбцом таблицы T типа CHARACTER (5), а B – столбцом таблицы T типа CHARACTER VARYING (8). Пусть при вставке в строку s этой таблицы в столбец A было занесено значение ‘LET’, а в столбец B – ‘IT’. В столбце какого из перечисленных ниже типов могло бы быть сохранено значение выражения A || B || ‘BE’, вычисленное для значений строки s? (Здесь “_” обозначает символ пробела.)
CHARACTER (15) CHARACTER (4) CHARACTER (9)
Сколько строк будет в результате операции
SELECT A FROM S GROUP BY A
если столбец A является внешним ключом таблицы S, ссылающимся на первичный ключ таблицы T
столько, сколько строк в таблице T, или на одну строку больше столько, сколько строк в таблице S столько, сколько строк в таблице T
База данных АВТОРЫ-КНИГИ-ИЗДАТЕЛЬСТВА (AUTHORS-BOOKS-PUBLISHERS) состоит из следующих таблиц:
Автор уникально идентифицируется своим идентификатором 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 содержит даты публикации книг.
Требуется сформулировать запрос "Найти имена авторов, издавших более 10 книг, включая разные издания книги с одним и тем же названием". Какие из приведенных ниже формулировок являются правильными?
SELECT AUTHOR_NAME FROM AUTHORS WHERE (SELECT COUNT (*) FROM AUTHORS-BOOKS WHERE AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID) > 10;
SELECT DISTINCT AUTHOR_NAME FROM AUTHORS, AUTHORS-BOOKS WHERE AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND COUNT (ISBN) > 10;
SELECT AUTHOR_NAME FROM AUTHORS WHERE (SELECT COUNT (*) FROM AUTHORS-BOOKS, BOOKS WHERE AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN) > 10;
База данных АВТОРЫ-КНИГИ-ИЗДАТЕЛЬСТВА (AUTHORS-BOOKS-PUBLISHERS) состоит из следующих таблиц:
Автор уникально идентифицируется своим идентификатором 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) со следующими телами:
Требуется сформулировать запрос “Найти названия издательств, у которых максимальная цена книги равна средней цене книги какого-либо другого издательства”. Какие из приведенных ниже формулировок являются правильными?
SELECT PUB_NAME FROM PUBLISHERS WHERE (SELECT MAX (PRICE) FROM BOOKS WHERE PUBLISHERS.PUB_ID = BOOKS.PUB_ID) = SOME (SELECT AVG (PRICE) FROM PUBLISHERS PUBLISHERS1, BOOKS WHERE PUBLISHERS1.PUB_ID <> PUBLISHERS.PUB_ID GROUP BY PUBLISHERS1.PUB_ID);
SELECT PUB_NAME FROM PUBLISHERS, BOOKS WHERE PUBLISHERS.PUB_ID = BOOKS.PUB_ID GROUP BY PUBLISHERS.PUB_ID HAVING MAX (PRICE) IN (SELECT AVG (PRICE) FROM PUBLISHERS PUBLISHERS1, BOOKS WHERE PUBLISHERS1.PUB_ID <> PUBLISHERS.PUB_ID GROUP BY PUBLISHERS1.PUB_ID);
SELECT PUB_NAME FROM PUBLISHERS, BOOKS WHERE EXISTS (SELECT PUBLISHERS1.PUB_ID FROM PUBLISHERS PUBLISHERS1, BOOKS BOOKS1 WHERE PUBLISHERS1.PUB_ID <> PUBLISHERS.PUB_ID GROUP BY PUBLISHERS1.PUB_ID HAVING AVG (BOOKS1.PRICE) = AVG (BOOKS.PRICE)) GROUP BY PUBLISHERS.PUB_ID;
База данных АВТОРЫ-КНИГИ-ИЗДАТЕЛЬСТВА (AUTHORS-BOOKS-PUBLISHERS) состоит из следующих таблиц:
Автор уникально идентифицируется своим идентификатором 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 содержит даты публикации книг.
Требуется сформулировать запрос "Найти ISBN и имена авторов книг, в название которых входит хотя бы одна цифра". Какие из приведенных ниже формулировок являются правильными?
SELECT BOOKS.ISBN, AUTHOR_NAME FROM AUTHORS, AUTHORS-BOOKS, BOOKS WHERE AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN AND TITLE SIMILAR ‘%[:DIGIT:]%’;
SELECT BOOKS.ISBN, AUTHOR_NAME FROM AUTHORS, AUTHORS-BOOKS, BOOKS WHERE AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN AND TITLE SIMILAR ‘(%0%)|(%1%)|(%2%)|(%3%)|(%4%)| (%5%)|(%6%)|(%7%)|(%8%)|(%9%)’;
SELECT BOOKS.ISBN, AUTHOR_NAME FROM AUTHORS, AUTHORS-BOOKS, BOOKS WHERE AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN AND TITLE SIMILAR ‘%[:ALNUM:][^A-Z]*%’;
База данных АВТОРЫ-КНИГИ-ИЗДАТЕЛЬСТВА (AUTHORS-BOOKS-PUBLISHERS) состоит из следующих таблиц:
Автор уникально идентифицируется своим идентификатором 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 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;
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;
Требуется сформулировать запрос “Найти имена авторов, книги которых издавались в издательствах 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”;
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”);
Внимание ! Вопросы к тесту выложены исключительно в ознакомительных целях: количество вопросов может не совпадать с действительным, актуальность не поддерживается,- за решением теста Welcome to the cashier! Требуется сформулировать запрос “Найти имена авторов, книги которых никогда не публиковались издательствами, издававшими книги Дейта”. Какие из приведенных ниже формулировок являются правильными?
SELECT DISTINCT AUTHOR_NAME FROM AUTHORS, AUTHORS AUTHORS1, AUTHORS-BOOKS AUTHORS-BOOKS1, BOOKS, BOOKS BOOKS1, PUBLISHERS PUBLISHERS1 WHERE AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID AND PUBLISHERS.PUB_ID <> PUBLISHERS1.PUB_ID AND AUTHORS1.AUTHOR_NAME = ‘Chris Date’ AND AUTHORS1.AUTHOR_ID = AUTHORS-BOOKS1.AUTHOR_ID AND AUTHORS-BOOKS1.ISBN = BOOKS1.ISBN AND BOOKS1.PUB_ID = PUBLISHERS1.PUB_ID);
SELECT DISTINCT AUTHOR_NAME FROM AUTHORS, AUTHORS-BOOKS, BOOKS, PUBLISHERS WHERE AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID AND PUBLISHERS.PUB_ID NOT IN (SELECT PUBLISHERS.PUB_ID FROM AUTHORS, AUTHORS-BOOKS, BOOKS, PUBLISHERS) WHERE AUTHORS.AUTHOR_NAME = ‘Chris Date’ AND AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID);
SELECT AUTHOR_NAME FROM AUTHORS WHERE AUTHOR_ID NOT IN (SELECT AUTHOR_ID FROM AUTHORS-BOOKS, BOOKS, PUBLISHERS WHERE AUTHORS-BOOKS.ISBN = BOOKS.ISBN AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID AND PUBLISHERS.PUB_ID IN (SELECT PUBLISHERS.PUB_ID FROM AUTHORS, AUTHORS-BOOKS, BOOKS, PUBLISHERS) WHERE AUTHORS.AUTHOR_NAME = ‘Chris Date’ AND AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID));
Требуется сформулировать запрос “Найти общее число книг, изданных в 2002 г. издательствами, которые когда-либо издавали книги Дейта”. Какие из приведенных ниже формулировок являются правильными?
SELECT COUNT (DISTINCT BOOKS.ISBN) FROM BOOKS, PUBLISHERS, AUTHORS, AUTHORS-BOOKS WHERE BOOKS.PUB_ID = PUBLISHERS.PUB_ID AND EXTRACT (YEAR FROM BOORS.DATE_OF_PUB) = 2002 AND AUTHORS.AUTHOR_NAME = ‘Chris Date’ AND AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID;
SELECT COUNT (BOOKS.ISBN) FROM BOOKS, PUBLISHERS WHERE BOOKS.PUB_ID = PUBLISHERS.PUB_ID AND EXTRACT (YEAR FROM BOOKS.DATE_OF_PUB) = 2002 AND PUBLISHERS.PUB_ID IN (SELECT PUB_ID FROM AUTHORS, AUTHORS-BOOKS, BOOKS, PUBLISHERS WHERE AUTHORS.AUTHOR_NAME = ‘Chris Date’ AND AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID);
SELECT COUNT (DISTINCT BOOKS.ISBN) FROM BOOKS, BOOKS BOOKS1, PUBLISHERS, PUBLISHERS PUBLISHERS1, AUTHORS, AUTHORS-BOOKS WHERE BOOKS.PUB_ID = PUBLISHERS.PUB_ID AND EXTRACT (YEAR FROM BOORS.DATE_OF_PUB) = 2002 AND PUBLISHERS.PUB_ID = PUBLISHERS1.PUB_ID AND AUTHORS.AUTHOR_NAME = ‘Chris Date’ AND AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND AUTHORS-BOOKS.ISBN = BOOKS1.ISBN AND BOOKS1.PUB_ID = PUBLISHERS1.PUB_ID;
Требуется сформулировать запрос “Найти названия издательств и имена авторов, которые опубликовали в данном издательстве самую дорогую книгу”. Какие из приведенных ниже формулировок являются правильными?
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 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);
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 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 BOOKS.TITLE LIKE ‘%’ || PUBLISHERS.PUB_NAME || ‘%’;
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 BOOKS.TITLE LIKE ‘_’ || PUBLISHERS.PUB_NAME || ‘_’;
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 BOOKS.TITLE LIKE ‘%PUBLISHERS.PUB_NAME%’;
Требуется сформулировать запрос “Найти имена авторов, которые издали не больше книг, чем автор Smith, но не меньше, чем автор Brown”. Какие из приведенных ниже формулировок являются правильными?
SELECT AUTHOR_NAME FROM AUTHORS, AUTHORS-BOOKS WHERE AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND COUNT (ISBN) BETWEEN (SELECT COUNT (ISBN) FROM AUTHORS, AUTHORS-BOOKS WHERE AUTHORS.AUTHOR_NAME = ‘Brown’) AND (SELECT COUNT (ISBN) FROM AUTHORS, AUTHORS-BOOKS WHERE AUTHORS.AUTHOR_NAME = ‘Smith’);
SELECT AUTHOR_NAME FROM AUTHORS WHERE (SELECT COUNT (ISBN) FROM AUTHORS-BOOKS WHERE AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID) BETWEEN (SELECT COUNT (ISBN) FROM AUTHORS, AUTHORS-BOOKS WHERE AUTHORS.AUTHOR_NAME = ‘Brown’) AND (SELECT COUNT (ISBN) FROM AUTHORS, AUTHORS-BOOKS WHERE AUTHORS.AUTHOR_NAME = ‘Smith’);
SELECT AUTHOR_NAME FROM AUTHORS WHERE (SELECT COUNT (ISBN) FROM AUTHORS-BOOKS WHERE AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID) BETWEEN (SELECT COUNT (ISBN) FROM AUTHORS, AUTHORS-BOOKS WHERE AUTHORS.AUTHOR_NAME = ‘Brown’ AND AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID) AND (SELECT COUNT (ISBN) FROM AUTHORS, AUTHORS-BOOKS WHERE AUTHORS.AUTHOR_NAME = ‘Smith’ AND AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID);
Требуется сформулировать запрос “Найти ISBN и имена авторов книг, в название которых входит термин DBMS, но не входят термины database и data base”. Какие из приведенных ниже формулировок являются правильными?
SELECT BOOKS.ISBN, AUTHOR_NAME FROM AUTHORS, AUTHORS-BOOKS, BOOKS WHERE AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN AND BOOKS.TITLE LIKE ‘%DBMS%’ AND BOOKS.TITLE NOT LIKE ‘%database%’ AND BOOKS.TITLE NOT LIKE ‘%data base%’;
SELECT DISTINCT BOOKS.ISBN, AUTHOR_NAME FROM AUTHORS, AUTHORS-BOOKS, BOOKS WHERE AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN AND BOOKS.TITLE LIKE ‘%DBMS%’ AND BOOKS.TITLE NOT LIKE ‘%data%base%’;
SELECT ISBN, AUTHOR_NAME FROM AUTHORS, AUTHORS-BOOKS WHERE ISBN IN (SELECT ISBN FROM BOOKS WHERE TITLE LIKE ‘%DBMS%’ AND TITLE NOT LIKE ‘%database%’ AND TITLE NOT LIKE ‘%data base%’);
Требуется сформулировать запрос “Найти ISBN всех книг, написанных не Дейтом, названия которых совпадают с названием какой-либо книги Дейта”. Какие из приведенных ниже формулировок являются правильными?
SELECT DISTINCT BOOKS.ISBN FROM AUTHORS, AUTHORS-BOOKS, BOOKS WHERE AUTHORS.AUTHOR_NAME <> ‘Chris Date’ AND AUTHOR.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN AND BOOKS.TITLE = SOME (SELECT BOOKS.TITLE FROM AUTHORS, AUTHORS-BOOKS, BOOKS WHERE AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN AND AUTHORS.AUTHOR_NAME = ‘Chris Date’);
SELECT DISTINCT BOOKS.ISBN FROM AUTHORS, AUTHORS AUTHORS1, BOOKS, BOOKS BOOKS1, AUTHORS-BOOKS, AUTHORS-BOOKS1 WHERE AUTHORS.AUTHOR_NAME <> ‘Chris Date’ AND AUTHORS1.AUTHOR_NAME = ‘Chris Date’ AND AUTHOR.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND AUTHOR1.AUTHOR_ID = AUTHORS-BOOKS1.AUTHOR_ID AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN AND AUTHORS-BOOKS1.ISBN = BOOKS1.ISBN AND BOOKS.TITLE = BOOKS1.TITLE;
SELECT ISBN FROM BOOKS WHERE ISBN IN (SELECT BOOKS.ISBN FROM AUTHORS, AUTHORS-BOOKS, BOOKS WHERE AUTHORS.AUTHOR_NAME <> ‘Chris Date’ AND AUTHOR.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN) AND TITLE IN (SELECT BOOKS.TITLE FROM AUTHORS, AUTHORS-BOOKS, BOOKS WHERE AUTHORS.AUTHOR_NAME = ‘Chris Date’ AND AUTHOR.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN);
Требуется сформулировать запрос “Найти названия издательств, издававших книги хотя бы одного автора из Москвы”. Какие из приведенных ниже формулировок являются правильными?
SELECT PUBLISHERS.PUB_NAME FROM AUTHORS, AUTHORS-BOOKS, BOOKS, PUBLISHERS WHERE AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN AND AUTHORS.ADDRESS LIKE ‘%Moscow%’;
SELECT PUB_NAME FROM PUBLISHERS, WHERE (SELECT COUNT (AUTHOR.AUTHOR_ID) FROM AUTHORS, AUTHORS-BOOKS, BOOKS, PUBLISHERS PUBLISHERS1 WHERE AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID AND PUBLISHERS1.PUB_ID = PUBLISHERS.PUB_ID AND AUTHORS.ADDRESS LIKE ‘%Moscow%’) >= 1;
SELECT PUB_NAME FROM PUBLISHERS, WHERE EXISTS (SELECT * FROM AUTHORS, AUTHORS-BOOKS, BOOKS, PUBLISHERS PUBLISHERS1 WHERE AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID AND PUBLISHERS1.PUB_ID = PUBLISHERS.PUB_ID AND AUTHOR.ADDRESS LIKE ‘%Moscow%’);
Требуется сформулировать запрос “Найти названия издательств, в которых Кристофер Дейт издал хотя бы одну книгу объемом меньше 300 страниц”. Какие из приведенных ниже формулировок являются правильными?
SELECT PUB_NAME FROM PUBLISHERS, AUTHORS, AUTHORS-BOOKS, BOOKS WHERE BOOKS.PUB_ID = PUBLISHERS.PUB_ID AND BOOKS.ISBN = AUTHORS-BOOKS.ISBN AND AUTHORS-BOOKS.AUTHOR_ID = AUTHORS.AUTHOR_ID AND AUTHORS.AUTHOR_NAME = ‘Chris Date’ AND BOOKS.NUMBER_OF_PAGES < 300);
SELECT PUB_NAME FROM PUBLISHERS WHERE EXISTS (SELECT * FROM AUTHORS, AUTHORS-BOOKS, BOOKS WHERE BOOKS.PUB_ID = PUBLISHERS.PUB_ID AND BOOKS.ISBN = AUTHORS-BOOKS.ISBN AND AUTHORS-BOOKS.AUTHOR_ID = AUTHORS.AUTHOR_ID AND AUTHORS.AUTHOR_NAME = ‘Chris Date’ AND BOOKS.NUMBER_OF_PAGES < 300);
SELECT PUB_NAME FROM PUBLISHERS WHERE (SELECT MIN (NUMBER_OF_PAGES) FROM AUTHORS, AUTHORS-BOOKS, BOOKS WHERE BOOKS.PUB_ID = PUBLISHERS.PUB_ID AND BOOKS.ISBN = AUTHORS-BOOKS.ISBN AND AUTHORS-BOOKS.AUTHOR_ID = AUTHORS.AUTHOR_ID AND AUTHORS.AUTHOR_NAME = ‘Chris Date’) < 300;
Требуется сформулировать запрос “Найти имена всех соавторов Дейта”. Какие из приведенных ниже формулировок являются правильными?
SELECT DISTINCT AUTHOR_NAME FROM AUTHORS, AUTHORS-BOOKS WHERE AUTHOR_NAME <> ‘Chris Date’ AND AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND EXISTS (SELECT * FROM AUTHORS, AUTHORS-BOOKS AUTHORS-BOOKS1 WHERE AUTHORS-BOOKS1.ISBN = AUTHORS-BOOKS.ISBN AND AUTHORS-BOOKS1.AUTHOR_ID = AUTHORS.AUTHOR_ID AND AUTHOR_NAME = ‘Chris Date’);
SELECT AUTHOR_NAME FROM AUTHORS, AUTHORS-BOOKS WHERE AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND EXISTS (SELECT * FROM AUTHORS, AUTHORS-BOOKS AUTHORS-BOOKS1 WHERE AUTHORS-BOOKS1.ISBN = AUTHORS-BOOKS.ISBN AND AUTHORS-BOOKS1.AUTHOR_ID = AUTHORS.AUTHOR_ID AND AUTHOR_NAME = ‘Chris Date’);
SELECT DISTINCT AUTHOR_NAME FROM AUTHORS, AUTHORS-BOOKS WHERE AUTHOR_NAME = ‘Chris Date’ AND AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND EXISTS (SELECT * FROM AUTHORS, AUTHORS-BOOKS AUTHORS-BOOKS1 WHERE AUTHORS-BOOKS1.ISBN = AUTHORS-BOOKS.ISBN AND AUTHORS-BOOKS1.AUTHOR_ID = AUTHORS.AUTHOR_ID AND AUTHOR_NAME <> ‘Chris Date’);
Требуется сформулировать запрос “Найти названия книг, опубликованных Кристофером Дейтом в издательствах, которые в течение последнего года выпустили книги, суммарная цена которых превышает 100000.00”. Какие из приведенных ниже формулировок являются правильными?
SELECT TITLE FROM AUTHORS, AUTHORS-BOOKS, BOOKS, PUBLISHERS WHERE AUTHOR_NAME = ‘Chris Date’ AND AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID AND PUBLISHERS.PUB_ID = (SELECT PUBLISHERS1.PUB_ID FROM PUBLISHERS PUBLISHERS1 WHERE PUBLISHERS1.PUB_ID = PUBLISHERS.PUB_ID AND (SELECT SUM (PRICE) FROM BOOKS WHERE BOOKS.PUB_ID = PUBLISHERS1.PUB_ID AND DATE_OF_PUB – CURRENT_DATE <= INTERVAL ‘1’ YEAR) >= 100000.00);
SELECT TITLE FROM AUTHORS, AUTHORS-BOOKS, BOOKS, PUBLISHERS WHERE AUTHOR_NAME = ‘Chris Date’ AND AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID AND EXISTS (SELECT PUBLISHERS1.PUB_ID FROM PUBLISHERS PUBLISHERS1 WHERE (SELECT SUM (PRICE) FROM BOOKS WHERE BOOKS.PUB_ID = PUBLISHERS1.PUB_ID AND DATE_OF_PUB – CURRENT_DATE <= INTERVAL ‘1’ YEAR) >= 100000.00);
SELECT TITLE FROM AUTHORS, AUTHORS-BOOKS, BOOKS, PUBLISHERS WHERE AUTHOR_NAME = ‘Chris Date’ AND AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID AND PUBLISHERS.PUB_ID IN (SELECT PUBLISHERS1.PUB_ID FROM PUBLISHERS PUBLISHERS1 WHERE (SELECT SUM (PRICE) FROM BOOKS WHERE BOOKS.PUB_ID = PUBLISHERS1.PUB_ID AND DATE_OF_PUB – CURRENT_DATE <= INTERVAL ‘1’ YEAR) >= 100000.00);
База данных АВТОРЫ-КНИГИ-ИЗДАТЕЛЬСТВА (AUTHORS-BOOKS-PUBLISHERS) состоит из следующих таблиц:
Автор уникально идентифицируется своим идентификатором 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) со следующими телами:
Требуется сформулировать запрос "Для каждого издательства выдать название издательства, его адрес, среднюю и максимальную цены издававшихся книг и общее число издававшихся авторов". Какие из приведенных ниже формулировок являются правильными?
SELECT PUB_NAME, PUB_ADDRESS, AVG (PRICE), MAX (PRICE), COUNT (DISTINCT AUTHOR_ID) FROM AUTHORS-BOOKS, BOOKS, PUBLISHERS WHERE PUBLISHERS.PUB_ID = BOOKS.PUB_ID AND BOOKS.ISBN = AUTHORS-BOOKS.ISBN GROUP BY PUBLISHERS.PUB_ID;
SELECT PUB_NAME, PUB_ADDRESS, AVG (PRICE), MAX (PRICE), COUNT (DISTINCT AUTHOR_ID) FROM AUTHORS-BOOKS, BOOKS, PUBLISHERS GROUP BY PUBLISHERS.PUB_ID HAVING PUBLISHERS.PUB_ID = BOOKS.PUB_ID AND BOOKS.ISBN = AUTHORS-BOOKS.ISBN;
SELECT DISTINCT PUB_NAME, PUB_ADDRESS, (SELECT AVG (PRICE) FROM BOOKS WHERE PUBLISHERS.PUB_ID = BOOKS.PUB_ID), (SELECT MAX (PRICE) FROM BOOKS WHERE PUBLISHERS.PUB_ID = BOOKS.PUB_ID), (SELECT COUNT (DISTINCT AUTHOR_ID) FROM BOOKS, AUTHORS-BOOKS WHERE BOOKS.PUB_ID = PUBLISHERS.PUB_ID AND BOOKS.ISBN = AUTHORS-BOOKS.ISBN) FROM PUBLISHERS;
Вы можете обратится к нам напрямую, через:
По Skype: molodoyberkut По Telegram: @MolodoyBerkut По ICQ: 657089516