Главная / Базы данных / Введение в модель данных SQL

Введение в модель данных SQL - ответы на тесты Интуит

Правильные ответы выделены зелёным цветом.
Все ответы: Курс посвящен описанию базовых средств языка SQL в соответствии со стандартом SQL:2003. Задача состоит в том, чтобы представить язык как специфическую модель данных, происходящую от реляционной модели, но значительно от нее отличающуюся. В соответствии с общими принципами представления модели данных в курсе представляется структурная часть модели – средства определения таблиц и представлений, целостная часть – средства определения ограничений целостности и триггеров, а также манипуляционная часть – оператор SELECT. Для полноты также обсуждаются средства обновления баз данных, контроля доступа, управления транзакциями, сессиями и подключениями к серверу баз данных.
Что представляют собой значения типа NUMERIC (10, 2)?
(1) приближенные числа из 12 десятичных цифр с двумя цифрами после десятичной точки
(2) точные числа из 12 десятичных цифр с двумя цифрами после десятичной точки
(3) точные числа из 10 десятичных цифр, две из которых составляют дробную часть
В каких из перечисленных ниже случаях значением столбца по умолчанию является NULL?
(1) в разделе DEFAULT определения столбца указано NULL
(2) в определении столбца отсутствует раздел DEFAULT, но столбец определяется на домене, в определении которого присутствует раздел DEFAULT NULL
(3) в определении столбца отсутствует раздел DEFAULT, и столбец определяется на базовом типе данных или на домене, в определении которого отсутствует раздел DEFAULT
Пусть A и B являются столбцами таблицы T типа CHARACTER (5), и пусть в при вставке в строку s этой таблицы в столбец A было занесено значение ‘ONE’, а в столбец B‘TIME’. Каким будет значение выражения A || B при его вычислении для значений строки s? (Здесь “_” обозначает символ пробела.)
(1) “ONE_TIME”
(2) “ONE__TIME”
(3) “ONE__TIME_”

База данных АВТОРЫ-КНИГИ-ИЗДАТЕЛЬСТВА (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 содержит даты публикации книг.

Требуется сформулировать запрос "Найти имена авторов, издавших более 10 книг, включая разные издания книги с одним и тем же названием". Какие из приведенных ниже формулировок являются правильными?

(1) 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;
(2) SELECT AUTHOR_NAME FROM AUTHORS WHERE (SELECT COUNT (*) FROM AUTHORS-BOOKS WHERE AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID) > 10;
(3) SELECT DISTINCT AUTHOR_NAME FROM AUTHORS, AUTHORS-BOOKS WHERE AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND COUNT (ISBN) > 10;

База данных АВТОРЫ-КНИГИ-ИЗДАТЕЛЬСТВА (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) со следующими телами:

table1

a1a2c1c2
5555
5586
5537
23NULL7
4NULLNULLNULL

table2

b1b2c1c2
5555
1256
3855
3855
8888
3NULLNULL5
3NULLNULL5

Требуется сформулировать запрос "Для каждого издательства выдать название издательства, его адрес, среднюю и максимальную цены издававшихся книг и общее число издававшихся авторов". Какие из приведенных ниже формулировок являются правильными?

(1) 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;
(2) 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;
(3) 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 EMP_SAL, EMP_BONUS, DEPT_NO, MAX(EMP_BDATE) AS MAX_BDATE, GROUPING (EMP_BONUS) AS GBON, GROUPING (DEPT_NO) AS GDN FROM EMP GROUP BY ROLLUP (EMP_SAL, EMP_BONUS, DEPT_NO);
(1)
EMP_SALEMP_BONUSDEPT_NOMAX_BDATEGBONGDN
NULLNULLNULL197011
13000.00NULLNULL195011
14000.00NULLNULL196011
15000.00NULLNULLNULL11
16000.00NULLNULL196011
17000.00NULL NULL NULL 1 1
18000.00NULL NULL 1955 1 1
19000.00 NULL NULL NULL 1 1
20000.00 NULL NULL 1960 1 1
22000.00 NULL NULL 1960 1 1
13000.00 12000.00 NULL 1950 0 1
15000.00 13000.00 NULL 1950 0 1
15000.00 14000.00 NULL NULL 0 1
16000.00 14000.00 NULL 1955 0 1
16000.00 13000.00 NULL 1960 0 1
16000.00 15000.00 NULL 1950 0 1
17000.00 16000.00 NULL 1970 0 1
18000.00 17000.00 NULL 1955 0 1
19000.00 18000.00 NULL NULL 0 1
22000.00 20000.00 NULL 1960 0 1
13000.00 12000.00 1 1950 0 0
14000.00 NULL 1 1960 00
15000.00 13000.00 1 1950 0 0
15000.00 14000.00 1 NULL 0 0
16000.00 14000.00 1 1955 0 0
16000.00 13000.00 1 1960 0 0
16000.00 15000.00 2 1950 0 0
17000.00 NULL 1 NULL 00
17000.00 16000.00 2 1970 0 0
18000.00 17000.00 3 1955 0 0
20000.00 NULL 2 1960 00
22000.00 20000.00 3 1960 0 0
(2)
EMP_SAL EMP_BONUS DEPT_NO MAX_BDATE GBON GDN
NULL NULL NULL 1970 1 1
13000.00 NULL NULL 1950 1 1
14000.00 NULL NULL 1960 1 1
15000.00 NULL NULL NULL 1 1
16000.00 NULL NULL 1960 1 1
17000.00 NULL NULL NULL 1 1
18000.00 NULL NULL 1955 1 1
19000.00 NULL NULL NULL 1 1
20000.00 NULL NULL 1960 1 1
22000.00 NULL NULL 1960 1 1
13000.00 12000.00 NULL 1950 0 1
14000.00 NULL NULL 1960 0 1
15000.00 13000.00 NULL 1950 0 1
15000.00 14000.00 NULL NULL 0 1
16000.00 14000.00 NULL 1955 0 1
16000.00 13000.00 NULL 1960 0 1
16000.00 15000.00 NULL 1950 0 1
17000.00 NULL NULL NULL 0 1
17000.00 16000.00 NULL 1970 0 1
18000.00 17000.00 NULL 1955 0 1
19000.00 18000.00 NULL NULL 0 1
20000.00 NULL NULL 1960 0 1
22000.00 20000.00 NULL 1960 0 1
13000.00 12000.00 1 1950 0 0
14000.00 NULL 1 1960 0 0
14000.00 NULL NULL 1960 0 0
15000.00 13000.00 1 1950 0 0
15000.00 14000.00 1 NULL 0 0
16000.00 14000.00 1 1955 0 0
16000.00 13000.00 1 1960 0 0
16000.00 15000.00 2 1950 0 0
17000.00 NULL 1 NULL 0 0
17000.00 16000.00 2 1970 0 0
18000.00 17000.00 3 1955 0 0
19000.00 18000.00 NULL NULL 0 0
20000.00 NULL 2 1960 0 0
22000.00 20000.00 3 1960 0 0
(3)
EMP_SALEMP_BONUSDEPT_NOMAX_BDATEGBONGDN
NULLNULLNULL197011
13000.00NULLNULL195011
14000.00NULLNULL196011
15000.00NULLNULLNULL11
16000.00NULLNULL196011
17000.00NULLNULLNULL11
18000.00NULLNULL195511
19000.00NULLNULLNULL11
20000.00NULLNULL196011
22000.00NULLNULL196011
13000.0012000.00NULL195001
14000.00NULLNULL196001
15000.0013000.00NULL195001
16000.0014000.00NULL195501
17000.00NULLNULLNULL01
18000.0017000.00NULL195501
19000.0018000.00NULLNULL01
20000.00NULLNULL196001
22000.0020000.00NULL196001
13000.0012000.001195000
14000.00NULL1196000
15000.0013000.001195000
16000.0014000.001195500
17000.00NULL1NULL00
18000.0017000.003195500
19000.0018000.00NULLNULL00
20000.00NULL2196000
22000.0020000.003196000
Чему соответствует имя псевдонима, вводимого в разделе REFERENCING определения триггера над таблицей T конструкцией NEW TABLE?
(1) Содержимому таблицы T после выполнения операции, инициирующей триггер
(2) Набору строк, которые были обновлены в теле таблицы T
(3) Набору строк, удаленных из тела таблицы T

Пусть роль R1 создается путем выполнения операции

CREATE ROLE R1 WITH ADMIN CURRENT_ROLE;

и текущим именем роли сессии, в которой выполняется эта операция, является R. При каких из указанных ниже условий будет успешно выполнена операция?

GRANT R1 TO PUBLIC;
(1) текущим именем роли сессии, в которой выполняется эта операция, является R
(2) операция выполняется в тот момент, когда идентификатором авторизации является R
(3) операция выполняется от имени идентификатора авторизации, которому была передана роль R с правом ее дальнейшей передачи

Пусть имеются следующие два определения индивидуальных типов:

CREATE TYPE EMP_NO_I AS INTEGER FINAL; CREATE TYPE EMP_NO_C AS CHAR(6);

Значениями обоих типов являются номера служащих, но в первом случае для представления номеров используются целые числа (по всей видимости, натуральные целые), а во втором – строки символов, изображающие натуральные числа. Предположим, что в таблице T1 определен столбец EMP_NO_1 типа EMP_NO_I, а таблице T2 – столбец EMP_NO_2 типа EMP_NO_C. Требуется выполнить эквисоединение таблиц T1 и T2 по значениям столбцов EMP_NO_1 и EMP_NO_2. Какие из приводимых ниже выражений являются правильными?

(1) CAST (EMP_NO_1 TO INTEGER) = CAST (EMP_NO_2 TO INTEGER)
(2) CAST (EMP_NO_1 TO INTEGER) = CAST (CAST (EMP_NO_2 TO CHAR(6)) AS INTEGER)
(3) CAST (EMP_NO_1 AS INTEGER) = CAST (EMP_NO_2 AS INTEGER)
Какова максимальная кардинальность типа INTEGER ARRAY [10]?
(1) 100
(2) 10
(3) 11
(4) 9
Предположим, что некоторые служащие могут учиться в аспирантуре своего предприятия. Каждый аспирант имеет единственного научного руководителя, являющегося служащим того же предприятия. Требуется, чтобы у одного научного руководителя было не более пяти аспирантов. Выполнение каких из приведенных ниже операторов изменит определение таблицы EMP требуемым образом?
(1) ALTER TABLE EMP ADD EMP_ADVISER EMP_NO DEFAULT NULL REFERENCES EMP ON DELETE SET NULL CHECK (VALUE < 6);
(2) ALTER TABLE EMP ADD EMP_ADVISER EMP_NO NO NULL REFERENCES EMP ON DELETE CASCADE;
(3) 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);

Сколько строк будет в результате операции

SELECT A FROM T GROUP BY A;

если столбец A является возможным ключом таблицы T?

(1) 0
(2) 1
(3) столько, сколько строк в таблице T
Требуется сформулировать запрос “Найти общее число книг, изданных в 2002 г. издательствами, которые когда-либо издавали книги Дейта”. Какие из приведенных ниже формулировок являются правильными?
(1) 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);
(2) 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 BOOKS.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;
(3) 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;
Требуется сформулировать запрос “Найти названия издательств, издавших не меньше книг, чем издательство Morgan Kauffman, и не больше, чем издательство Addison-Wesley”. Какие из приведенных ниже формулировок являются правильными?
(1) SELECT PUB_NAME FROM BOOKS, PUBLISHERS WHERE PUBLISHERS.PUB_ID = BOOKS.PUB_ID GROUP BY PUBLISHERS.PUB_ID HAVING COUNT (BOOKS.ISBN) BETWEEN (SELECT COUNT (ISBN) FROM BOOKS WHERE PUB_ID = (SELECT PUBLISHERS.PUB_ID FROM PUBLISHERS WHERE PUB_NAME = ‘Morgan Kauffman’) AND (SELECT COUNT (ISBN) FROM BOOKS WHERE PUB_ID = (SELECT PUBLISHERS.PUB_ID FROM PUBLISHERS WHERE PUB_NAME = ‘Addison-Wesley’);
(2) SELECT PUB_NAME FROM PUBLISHERS WHERE (SELECT COUNT (ISBN) FROM BOOKS WHERE BOOKS.PUB_ID = PUBLISHERS.PUB_ID) BETWEEN (SELECT COUNT (ISBN) FROM BOOKS WHERE PUB_ID = (SELECT PUBLISHERS.PUB_ID FROM PUBLISHERS WHERE PUB_NAME = ‘Morgan Kauffman’) AND (SELECT COUNT (ISBN) FROM BOOKS WHERE PUB_ID = (SELECT PUBLISHERS.PUB_ID FROM PUBLISHERS WHERE PUB_NAME = ‘Addison-Wesley’);
(3) SELECT PUB_NAME FROM PUBLISHERS WHERE (SELECT COUNT (ISBN); FROM BOOKS WHERE BOOKS.PUB_ID = PUBLISHERS.PUB_ID) BETWEEN (SELECT COUNT (ISBN) FROM BOOKS, PUBLISHERS WHERE PUB_NAME = ‘Morgan Kauffman’) AND (SELECT COUNT (ISBN); FROM BOOKS, PUBLISHERS WHERE PUB_NAME = ‘Addison-Wesley’);

Какая из показанных ниже таблиц является результатом запроса?

SELECT EMP_BDATE, EMP_BONUS, MIN (EMP_SAL) AS MIN_SAL, GROUPING (EMP_BDATE) AS GBD, GROUPING (EMP_BONUS) AS GBON FROM EMP GROUP BY ROLLUP (EMP_BDATE, EMP_BONUS);
(1)
EMP_BDATEEMP_BONUSMIN_SALGBDGBON
NULLNULL13000.0011
1950NULL13000.0001
1955NULL16000.0001
1960NULL14000.0001
1970NULL17000.0001
NULLNULL15000.0001
195013000.0015000.0000
195015000.0016000.0000
195017000.0018000.0000
195012000.0013000.0000
195514000.0016000.0000
195517000.0018000.0000
196013000.0016000.0000
196020000.0022000.0000
197016000.0017000.0000
NULL14000.0015000.0000
NULL18000.0019000.0000
(2)
EMP_BDATEEMP_BONUSMIN_SALGBDGBON
NULLNULL13000.0011
1950NULL13000.0001
1955NULL16000.0001
1960NULL14000.0001
1970NULL17000.0001
195013000.0015000.0000
195015000.0016000.0000
195017000.0018000.0000
195012000.0013000.0000
195514000.0016000.0000
195517000.0018000.0000
196013000.0016000.0000
196020000.0022000.0000
197016000.0017000.0000
(3)
EMP_BDATEEMP_BONUSMIN_SALGBDGBON
NULLNULL13000.0011
1950NULL13000.0001
1955NULL16000.0001
1960NULL14000.0001
1970NULL17000.0001
NULLNULL15000.0001
195013000.0015000.0000
195015000.0016000.0000
195017000.0018000.0000
195012000.0013000.0000
1950NULL14000.0000
195514000.0016000.0000
195517000.0018000.0000
1960NULL14000.0000
196013000.0016000.0000
196020000.0022000.0000
1960NULL14000.0000
197016000.0017000.0000
NULL14000.0015000.0000
NULL18000.0019000.0000
NULLNULL17000.0000

Предположим, что в базе данных поддерживаются две специальные “аудиторские” таблицы AUDIT1 и AUDIT2 следующей структуры:

AUDIT1
EMP_NO
EVENT_TS
OLD_SAL
OLD_BONUS
NEW_SAL
NEW_BONUS
AUDIT2
DEPT_NO
EVENT_TS
AVG_DEPT_SAL
AVG_DEPT_BONUS

В таблице AUDIT1 фиксируются все события, соответствующие изменению зарплаты служащих. В столбце EVENT_TS сохраняется временная метка соответствующего события. В таблице AUDIT2 регистрируются события, связанные с такими обновлениями данных о сотрудниках, при которых среднее значение зарплаты или премиальных некоторого отдела становится меньше среднего значения зарплаты или премиальных служащих, участвующих в некотором проекте, в котором принимает участие и хотя бы один сотрудник данного отдела. В столбце EVENT_TS таблицы AUDIT2 сохраняется временная метка соответствующего события, а в столбцах AVG_DEPT_SAL и AVG_DEPT_BONUS – соответствующие “критические” средние значения.

Какие из приводимых ниже определений триггеров обеспечат требуемую функциональность?

(1) CREATE TRIGGER EMP_INSERT AFTER INSERT ON EMP REFERENCING NEW ROW AS NEW_EMP FOR EACH ROW INSERT INTO AUDIT1 ROW (NEW_EMP.EMP_NO, CURRENT_TIMESTAMP, 0, 0, NEW_EMP.EMP_SAL, NEW_EMP.EMP_BONUS); CREATE TRIGGER EMP_UPDATE AFTER UPDATE OF EMP_SAL, EMP_BONUS ON EMP REFERENCING OLD ROW AS OLD_EMP NEW ROW AS NEW_EMP FOR EACH ROW INSERT INTO AUDIT1 ROW (NEW_EMP.EMP_NO, CURRENT_TIMESTAMP, OLD_EMP.EMP_SAL, OLD_EMP.EMP_BONUS, NEW_EMP.EMP_SAL, NEW_EMP.EMP_BONUS); CREATE TRIGGER EMP_DELETE AFTER DELETE ON EMP REFERENCING OLD ROW AS OLD_EMP FOR EACH ROW INSERT INTO AUDIT1 ROW (OLD_EMP.EMP_NO, CURRENT_TIMESTAMP, OLD_EMP.EMP_SAL, OLD_EMP.EMP_BONUS, 0, 0); CREATE TRIGGER EMP_INSERT1 AFTER INSERT ON EMP INSERT INTO AUDIT2 (SELECT DISTINCT NE.DEPT_NO, CURRENT_TIMESTAMP, AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) FROM EMP NE WHERE NE.DEPT_NO = NEW_EMP.DEPT_NO GROUP BY NE.DEPT_NO HAVING AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) < (SELECT AVG (NE1.EMP_SAL), AVG (NE1.EMP_BONUS) FROM EMP NE1 WHERE NE.PRO_NO = NE1.PRO_NO)); CREATE TRIGGER EMP_UPDATE1 AFTER UPDATE OF EMP_SAL, EMP_BONUS ON EMP INSERT INTO AUDIT2 (SELECT DISTINCT NE.DEPT_NO, CURRENT_TIMESTAMP, AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) FROM NEW_EMP NE WHERE NE.DEPT_NO = NEW_EMP.DEPT_NO GROUP BY NE.DEPT_NO HAVING AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) < (SELECT AVG (NE1.EMP_SAL), AVG (NE1.EMP_BONUS) FROM NEW_EMP NE1 WHERE NE.PRO_NO = NE1.PRO_NO)); CREATE TRIGGER EMP_DELETE1 AFTER DELETE ON EMP INSERT INTO AUDIT2 (SELECT DISTINCT NE.DEPT_NO, CURRENT_TIMESTAMP, AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) FROM NEW_EMP NE WHERE NE.DEPT_NO = NEW_EMP.DEPT_NO GROUP BY NE.DEPT_NO HAVING AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) < (SELECT AVG (NE1.EMP_SAL), AVG (NE1.EMP_BONUS) FROM NEW_EMP NE1 WHERE NE.PRO_NO = NE1.PRO_NO));
(2) CREATE TRIGGER EMP_INSERT AFTER INSERT ON EMP REFERENCING NEW ROW AS NEW_EMP FOR EACH ROW BEGIN ATOMIC INSERT INTO AUDIT1 ROW (NEW_EMP.EMP_NO, CURRENT_TIMESTAMP, 0, 0, NEW_EMP.EMP_SAL, NEW_EMP.EMP_BONUS); INSERT INTO AUDIT2 (SELECT DISTINCT NE.DEPT_NO, CURRENT_TIMESTAMP, AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) FROM EMP NE WHERE NE.DEPT_NO = NEW_EMP.DEPT_NO GROUP BY NE.DEPT_NO HAVING AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) < (SELECT AVG (NE1.EMP_SAL), AVG (NE1.EMP_BONUS) FROM EMP NE1 WHERE NE.PRO_NO = NE1.PRO_NO)); END; CREATE TRIGGER EMP_UPDATE AFTER UPDATE OF EMP_SAL, EMP_BONUS ON EMP REFERENCING OLD ROW AS OLD_EMP NEW ROW AS NEW_EMP FOR EACH ROW BEGIN ATOMIC INSERT INTO AUDIT1 ROW (NEW_EMP.EMP_NO, CURRENT_TIMESTAMP, OLD_EMP.EMP_SAL, OLD_EMP.EMP_BONUS, NEW_EMP.EMP_SAL, NEW_EMP.EMP_BONUS); INSERT INTO AUDIT2 (SELECT DISTINCT NE.DEPT_NO, CURRENT_TIMESTAMP, AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) FROM EMP NE WHERE NE.DEPT_NO = NEW_EMP.DEPT_NO GROUP BY NE.DEPT_NO HAVING AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) < (SELECT AVG (NE1.EMP_SAL), AVG (NE1.EMP_BONUS) FROM EMP NE1 WHERE NE.PRO_NO = NE1.PRO_NO)); END; CREATE TRIGGER EMP_DELETE AFTER DELETE ON EMP REFERENCING OLD ROW AS OLD_EMP FOR EACH ROW BEGIN ATOMIC BEGIN ATOMIC INSERT INTO AUDIT1 ROW (OLD_EMP.EMP_NO, CURRENT_TIMESTAMP, OLD_EMP.EMP_SAL, OLD_EMP.EMP_BONUS, 0, 0); INSERT INTO AUDIT2 (SELECT DISTINCT NE.DEPT_NO, CURRENT_TIMESTAMP, AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) FROM EMP NE WHERE NE.DEPT_NO = NEW_EMP.DEPT_NO GROUP BY NE.DEPT_NO HAVING AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) < (SELECT AVG (NE1.EMP_SAL), AVG (NE1.EMP_BONUS) FROM EMP NE1 WHERE NE.PRO_NO = NE1.PRO_NO)); END;
(3) CREATE TRIGGER EMP_UPDATE AFTER ON EMP REFERENCING OLD ROW AS OLD_EMP NEW ROW AS NEW_EMP FOR EACH ROW BEGIN ATOMIC INSERT INTO AUDIT1 ROW (NEW_EMP.EMP_NO, CURRENT_TIMESTAMP, OLD_EMP.EMP_SAL, OLD_EMP.EMP_BONUS, NEW_EMP.EMP_SAL, NEW_EMP.EMP_BONUS); INSERT INTO AUDIT2 (SELECT DISTINCT NE.DEPT_NO, CURRENT_TIMESTAMP, AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) FROM EMP NE WHERE NE.DEPT_NO = NEW_EMP.DEPT_NO GROUP BY NE.DEPT_NO HAVING AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) < (SELECT AVG (NE1.EMP_SAL), AVG (NE1.EMP_BONUS) FROM EMP NE1 WHERE NE.PRO_NO = NE1.PRO_NO)); END;

Пусть в некоторой транзакции выполняются операции

CREATE ROLE R1 WITH ADMIN CURRENT_ROLE; GRANT R1 TO AUDIT WITH ADMIN OPTION GRANTED BY CURRENT_ROLE;

и текущим именем роли сессии, в которой выполняется эта операция, является R. При каких из указанных ниже условий будет успешно выполнена операция?

DROP ROLE R1;
(1) текущим именем роли сессии, в которой выполняется эта операция, является R
(2) операция выполняется в тот момент, когда идентификатором авторизации является R1
(3) операция выполняется в тот момент, когда идентификатором авторизации является R
Для определения индивидуальных и структурных UDT используется один и тот же оператор CREATE TYPE. Каким образом, глядя на определение типа, можно точно сказать, к какой из двух категорий относится это определение?
(1) только в определении структурного типа может содержаться раздел инстанциируемости
(2) "в определении структурного типа либо присутствует раздел наследования UNDER, если определяемый тип не является максимальным, либо должен присутствовать раздел представления AS со спецификацией списка определений атрибутов, заключенного в круглые скобки; в определении индивидуального типа должен присутствовать раздел представления AS с указанием имени предопределенного встроенного типа (без скобок)"
(3) в определении структурного типа должна содержаться спецификация NOT FINAL, а в определении индивидуального типа – FINAL.
Пусть имеется литерал типа символьных строк ‘12251999’. При выполнении какого из следующих операторов CAST будет зафиксирована ошибка?
(1) CAST ‘12251999’ AS NUMERIC (8)
(2) CAST ‘12251999’ AS VARCHAR (8)
(3) CAST ‘12251999’ AS DATE (8)
Предположим, что служащие, участвующие в проектах, могут получать дополнительную премию, равную средней основной заработной плате участников соответствующего проекта. Выполнение каких из приведенных ниже операторов изменит определение таблицы EMP требуемым образом?
(1) 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));
(2) 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));
(3) 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));
Пусть имеются четыре мультимножества M1, M2, M3 и M4, содержащие общий элемента a, причем в мультимножестве M1 содержится n дубликатов a, в мультимножестве M2m дубликатов a, в мультимножестве M3k дубликатов, а в мультимножестве M4p дубликатов. Сколько дубликатов элемента a будет содержаться в результате операции (M1 INTERSECT M2) MINUS (M3 UNION M4)?
(1) n - m - k – p
(2) max (min ((m-n), (k+p)), 0)
(3) min (max((n-m), 0), (k+p))
Требуется сформулировать запрос “Найти названия издательств и имена авторов, которые опубликовали в данном издательстве самую дорогую книгу”. Какие из приведенных ниже формулировок являются правильными?
(1) 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
(2) 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);
(3) 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);
Требуется сформулировать запрос “Для каждого издательства выдать имя каждого автора, издававшего книги в данном издательстве, и число изданных им книг в данном издательстве”. Какие из приведенных ниже формулировок являются правильными?
(1) SELECT AUTHOR_NAME, COUNT(*) FROM AUTHORS, AUTHORS-BOOKS, BOOKS, PUBLISHERS.PUB_ID WHERE BOOKS.PUB_ID = PUBLISHERS.PUB_ID AND BOOKS.ISBN = AUTHORS-BOOKS.ISBN AND AUTHORS-BOOKS.AUTHOR_ID = AUTHORS.AUTHOR_ID GROUP BY PUBLISHERS.PUB_ID, AUTHOR_ID, AUTHOR_NAME;
(2) SELECT AUTHOR_NAME, COUNT(*) FROM AUTHORS, AUTHORS-BOOKS, BOOKS, PUBLISHERS WHERE BOOKS.PUB_ID = PUBLISHERS.PUB_ID AND BOOKS.ISBN = AUTHORS-BOOKS.ISBN AND AUTHORS-BOOKS.AUTHOR_ID = AUTHORS.AUTHOR_ID GROUP BY PUBLISHERS.PUB_ID, AUTHOR_NAME;
(3) SELECT AUTHOR_NAME, COUNT(*) FROM AUTHORS, AUTHORS-BOOKS, BOOKS, PUBLISHERS WHERE BOOKS.PUB_ID = PUBLISHERS.PUB_ID AND BOOKS.ISBN = AUTHORS-BOOKS.ISBN AND AUTHORS-BOOKS.AUTHOR_ID = AUTHORS.AUTHOR_ID GROUP BY PUBLISHERS.PUB_ID, AUTHOR_ID;

Какая из показанных ниже таблиц является результатом запроса?

SELECT EMP_SAL, EMP_BONUS, MAX(EMP_BDATE) AS MAX_BDATE, GROUPING (EMP_BONUS) AS GBON) FROM EMP GROUP BY ROLLUP (EMP_SAL, EMP_BONUS);
(1)
EMP_SALEMP_BONUSMAX_BDATEGBON
NULLNULLNULL1
13000.00NULL19501
14000.00NULL19601
15000.00NULLNULL1
16000.00NULL19701
17000.00NULLNULL1
18000.00NULL19551
19000.00NULLNULL1
20000.00NULL19601
22000.00NULL19601
NULL13000.0019600
NULL14000.00NULL0
NULL15000.0019500
NULL16000.0019700
NULL17000.0019550
NULL18000.00NULL0
NULL20000.0019600
13000.0012000.0019500
15000.0013000.0019500
15000.0014000.00NULL0
16000.0014000.0019550
16000.0013000.0019600
16000.0015000.0019500
17000.0016000.0019700
18000.0017000.0019550
19000.0018000.00NULL0
22000.0020000.0019600
(2)
EMP_SALEMP_BONUSMAX_BDATEGBON
NULLNULLNULL1
13000.00NULL19501
14000.00NULL19601
15000.00NULLNULL1
16000.00NULL19701
17000.00NULLNULL1
18000.00NULL19551
19000.00NULLNULL1
20000.00NULL19601
22000.00NULL19601
NULL13000.0019600
NULL15000.0019500
NULL16000.0019700
NULL17000.0019550
NULL20000.0019600
13000.0012000.0019500
15000.0013000.0019500
16000.0014000.0019550
16000.0013000.0019600
16000.0015000.0019500
17000.0016000.0019700
18000.0017000.0019550
22000.0020000.0019600
(3)
EMP_SALEMP_BONUSMAX_BDATEGBON
NULLNULLNULL1
13000.00NULL19501
14000.00NULL19601
15000.00NULLNULL1
16000.00NULL19701
17000.00NULLNULL1
18000.00NULL19551
19000.00NULLNULL1
20000.00NULL19601
22000.00NULL19601
NULL13000.0019600
NULL14000.00NULL0
NULL15000.0019500
NULL16000.0019700
NULL17000.0019550
NULL18000.00NULL0
NULL20000.0019600
13000.0012000.0019500
14000.00NULL19600
15000.0013000.0019500
15000.0014000.00NULL0
16000.0014000.0019550
16000.0013000.0019600
16000.0015000.0019500
17000.00NULLNULL0
17000.0016000.0019700
18000.0017000.0019550
19000.0018000.00NULL0
22000.0020000.0019600

Пусть имеется пустая таблица EMP_MNGS с заголовком

EMP_NO
DEPT_MNG
PRO_MNG

Какая из следующих таблиц EMP_MNGS является результатом выполнения оператора?

INSERT INTO EMP_MNGS (SELECT DISTINCT EMP_NO, CASE WHEN EMP.DEPT_NO IS NOT NULL THEN DEPT_MNG ELSE NULL, CASE WHEN EMP.PRO_NO IS NOT NULL THEN PRO_MNG ELSE NULL, FROM EMP, DEPT, PRO WHERE (EMP.DEPT_NO IS NULL OR EMP.DEPT_NO = DEPT.DEPT_NO) AND (EMP.PRO_NO IS NULL OR EMP.PRO_NO = PRO.PRO_NO) AND IF (EMP.DEPT_NO IS NOT NULL AND EMP.PRO_NO IS NOT NULL) THEN DEPT_MNG <> PRO_MNG);
(1)
EMP_MNGS
EMP_NODEPT_MNGPRO_MNG
244024482440
244124482446
244224482442
245224482446
245324482456
244424442440
244524442442
244624442446
244724442440
244824562448
245024562446
(2)
EMP_MNGS
EMP_NODEPT_MNGPRO_MNG
244024482440
244124482446
244224482442
24432448NULL
245224482446
245324482456
244424442440
244524442442
244624442446
244724442440
244824562448
24492456NULL
245024562446
2454NULL2442
2455NULL2448
2456NULL2456
(3)
EMP_MNGS
EMP_NODEPT_MNGPRO_MNG
244024482440
244124482446
244224482442
24432448NULL
245224482446
245324482456
244424442440
244524442442
244624442446
244724442440
2454NULL2442
2455NULL2448
2456NULL2456

Пусть в некоторой транзакции выполняются операции

CREATE ROLE R1 WITH ADMIN CURRENT_ROLE; GRANT R1 TO R2 WITH ADMIN OPTION GRANTED BY CURRENT_ROLE;

где R2 – имя некоторой существующей роли, и текущим именем роли сессии, в которой выполняется эта операция, является R. Пусть затем в некоторой другой транзакции, текущим именем роль которой является R2, выполняется операция

GRANT R1 TO R3 WITH ADMIN OPTION GRANTED BY CURRENT_ROLE;

где R3 – имя некоторой существующей роли. При каких из перечисленных ниже условий будет успешно выполнена операция?

REVOKE R1 FROM R3;
(1) именем текущей роли является R
(2) именем текущей роли является R2
(3) операция выполняется от имени authID, являющимся именем роли R или R2
Какие разделы должны обязательно присутствовать в определении структурного UDT, не являющегося максимальным?
(1) instantiable_clause и finality
(2) subtype_clause и finality
(3) subtype_clause, finality и reference_type_specification
Пусть в некоторой таблице определен столбец типа INTEGER ARRAY [10]. Пусть при вставке в эту таблицу некоторой строки в данный столбец заносится значение-массив, в котором задан только десятый элемент. Будет ли выполнена эта операция, какая память будет отведена для хранения этого массива, и что реально в ней будет содержаться?
(1) операция будет выполнена, будет выделена память для хранения одного элемента массива, в которой будет содержаться значение десятого элемента
(2) операция выполнена не будет, поскольку не заданы начальные элементы массива
(3) операция будет выполнена, будет выделена память для хранения десяти элементов массива, в первых девяти будут содержаться неопределенные значения, а в последнем – значение десятого элемента
Какой из режимов проверки разумно установить для ограничения таблицы MIN_EMP_BDATE?
(1) INITIALLY IMMEDIATE NOT DEFERRABLE
(2) INITIALLY IMMEDIATE DEFERRABLE
(3) INITIALLY DEFERRED
Пусть имеются три мультимножества M1, M2 и M3, содержащие общий элемента a, причем в мультимножестве M1 содержится n дубликатов a, в мультимножестве M2m дубликатов a, а в мультимножестве M3k дубликатов. Сколько дубликатов элемента a будет содержаться в результате операции (M1 UNIOIN M2) INTERSECT M3?
(1) n + m - k
(2) min ((m+n), k)
(3) min (n, (m+k))
Требуется сформулировать запрос “Найти названия книг, опубликованных Кристофером Дейтом в издательствах, которые в течение последнего года выпустили книги, суммарная цена которых превышает 100000.00”. Какие из приведенных ниже формулировок являются правильными?
(1) 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);
(2) 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);
(3) 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);
Какая из показанных ниже таблиц является результатом операции table1 NATURAL LEFT OUTER JOIN table2?
(1)
a1a2c1c2b1b2
555555
555538
555538
55553NULL
55553NULL
5586NULLNULL
5537NULLNULL
23NULL7NULLNULL
4NULLNULLNULLNULLNULL
(2)
a1a2c1c2b1b2
555555
555538
555538
5586NULLNULL
5537NULLNULL
23NULL7NULLNULL
4NULLNULLNULLNULLNULL
(3)
a1a2table1.c1table1.c2b1b2table2.c1table2.c2
55555555
55553855
55553855
5586NULLNULLNULLNULL
5537NULLNULLNULLNULL
23NULL7NULLNULLNULLNULL
4NULLNULLNULLNULLNULLNULLNULL

Какая из показанных ниже таблиц является результатом запроса?

SELECT EMP_BONUS, EMP_DEPT, MIN (EMP_BDATE) AS MIN_DDATE, GROUPING (EMP_BONUS) AS GBON, GROUPING (EMP_DEPT) AS GDN FROM EMP GROUP BY ROLLUP (EMP_BONUS, EMP_DEPT);
(1)
EMP_BONUSEMP_DEPTMIN_DDATEGBONGDN
NULLNULLNULL11
13000.00NULL195001
14000.00NULLNULL01
15000.00NULL195001
16000.00NULL197001
17000.00NULL195001
18000.00NULLNULL01
20000.00NULL196001
NULLNULLNULL01
13000.001195000
14000.001NULL00
14000.00NULL195000
15000.002195000
16000.002197000
17000.003195000
18000.00NULLNULL00
20000.003196000
NULL1NULL00
NULL2196000
NULLNULL195000
(2)
EMP_BONUSEMP_DEPTMIN_DDATEGBONGDN
NULLNULLNULL11
13000.00NULL195001
14000.00NULLNULL01
15000.00NULL195001
16000.00NULL197001
17000.00NULL195001
18000.00NULLNULL01
20000.00NULL196001
13000.001195000
14000.001NULL00
14000.00NULL195000
15000.002195000
16000.002197000
17000.003195000
20000.003196000
NULL1NULL00
NULL2196000
NULLNULL195000
(3)
EMP_BONUSEMP_DEPTMIN_DDATEGBONGDN
NULLNULLNULL11
13000.00NULL195001
14000.00NULLNULL01
15000.00NULL195001
16000.00NULL197001
17000.00NULL195001
18000.00NULLNULL01
20000.00NULL196001
NULLNULLNULL01
13000.001195000
14000.001NULL00
14000.00NULL195000
14000.00NULL195500
15000.002195000
15000.00NULL196000
16000.002197000
17000.003195000
18000.002196000
18000.00NULLNULL00
20000.003196000
NULL1NULL00
NULL2196000
NULLNULL195000

Пусть имеются следующие два определения представлений:

CREATE VIEW LA_EMP AS SELECT * FROM EMP WHERE EMP_SAL < (SELECT AVG (E.EMP_SAL) FROM EMP E WHERE E.DEPT_NO = EMP.DEPT_NO);

и

CREATE VIEW LA_LA_EMP AS SELECT * FROM LA_EMP WHERE EMP_SAL < (SELECT AVG (E.EMP_SAL) FROM LA_EMP E WHERE E.DEPT_NO = LA_EMP.DEPT_NO);

При принятом в этих упражнениях примерном составе строк таблицы EMP после материализации этих представлений были бы получены следующие таблицы:

LA_EMP
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24401177195015000.0013000.00
24421208196014000.00NULL
24521155NULL15000.0014000.00
24442177197017000.0016000.00
24452208195016000.0015000.00
24462155197017000.0016000.00
24483101195518000.0017000.00
24493NULL195018000.0017000.00
LA_LA_EMP
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24421208196014000.00NULL
24452208195016000.0015000.00

Пусть над представлением LA_LA_EMP выполняется операция

UPDATE LA_LA_EMP SET EMP_SAL = EMP_SAL + 10000.00

Какие из приведенных ниже таблиц соответствуют материализованным представлениям LA_LA_EMP и LA_EMP после выполнения этой операции?

(1)
LA_EMP
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24401177195015000.0013000.00
24421208196024000.00NULL
24521155NULL15000.0014000.00
24442177197017000.0016000.00
24452208195026000.0015000.00
24462155197017000.0016000.00
24483101195518000.0017000.00
24493NULL195018000.0017000.00
LA_LA_EMP
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24421208196024000.00NULL
24452208195026000.0015000.00
(2)
LA_EMP
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24401177195015000.0013000.00
24411155195516000.0014000.00
24431NULL196016000.0013000.00
24521155NULL15000.0014000.00
24531234NULL17000.00NULL
24442177197017000.0016000.00
24462155197017000.0016000.00
24483101195518000.0017000.00
24493NULL195018000.0017000.00
LA_LA_EMP
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24401177195015000.0013000.00
24521155NULL15000.0014000.00
(3)
LA_EMP
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24401177195015000.0013000.00
24421208196014000.00NULL
24521155NULL15000.0014000.00
24442177197017000.0016000.00
24452208195016000.0015000.00
24462155197017000.0016000.00
24483101195518000.0017000.00
24493NULL195018000.0017000.00
LA_LA_EMP
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24421208196014000.00NULL
24452208195016000.0015000.00
Что произойдет, если производится попытка передачи нескольких привилегий с передачей привилегии на передачу привилегий, но текущий authID обладает привилегией на передачу только части этих привилегий?
(1) будет зафиксирована ошибка
(2) будет передана только возможная часть привилегий без привилегии WITH GRANT OPTION
(3) будет выработано предупреждение, и соответствующая часть привилегий передастся с привилегией WITH GRANT OPTION
Какие разделы должны обязательно присутствовать в определении максимального структурного UDT?
(1) instantiable_clause и finality
(2) AS и finality
(3) AS, finality и reference_type_specification
Пусть в базовой таблице 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?
(1) операция удаления строки из таблицы T не выполнится
(2) строка из таблицы T будет удалена, а значением внешнего ключа в строках s1, s2 и s3 таблицы S станет <NULL, NULL, NULL>
(3) строка из таблицы T будет удалена, а значениями внешнего ключа в строках s1, s2 и s3 таблицы S станут <NULL, NULL, 5>, <25, 1, NULL> и <NULL, NULL, NULL> соответственно

Сколько строк будет в результате операции

SELECT A FROM T GROUP BY A HAVING A = const;

если столбец A является возможным ключом таблицы T?

(1) 0
(2) не больше одной
(3) столько, сколько строк в таблице T
Требуется сформулировать запрос “Найти имена авторов, книги которых издавались в издательствах Addison-Wesley, Morgan Kauffman и O’Reilly”. Какие из приведенных ниже формулировок являются правильными?
(1) 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’);
(2) 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”);
(3) 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”;
Требуется сформулировать запрос “Найти названия издательств, у которых максимальная цена книги равна средней цене книги какого-либо другого издательства”. Какие из приведенных ниже формулировок являются правильными?
(1) 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);
(2) 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);
(3) 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;

Пусть имеется следующее дерево:

files

Какой из следующих обходов этого дерева является обходом в ширину?

(1) КОРЕНЬ-ПОТОМОК1-П1.1-П1.1.1-П1.1.2-П1.1.1.1- П1.1.1.1.1-П1.1.1.1.2-ПОТОМОК2-П2.1
(2) КОРЕНЬ-ПОТОМОК1-ПОТОМОК2-П1.1-П2.1-П1.1.1- П1.1.2-П1.1.1.1-П1.1.1.1.1-П1.1.1.1.2
(3) КОРЕНЬ-ПОТОМОК1-П1.1-П1.1.1-П1.1.1.1- П1.1.1.1.1-П1.1.1.1.2-П1.1.2-ПОТОМОК2-П2.1
Пусть V – это некоторое представление, допускающее операции обновления и определенное без раздела WITH CHECK OPTION. Возможны ли ситуации, когда система может отвергнуть какую-либо операцию обновления V?
(1) нет
(2) да, когда она противоречит условию выборки запроса, на котором определено представление V
(3) да, если представление V определено над некоторым представлением V1, которое определено с разделом WITH CHECK OPTION, и операция обновления противоречит условию выборки V1

Пусть пользователь с текущим именем роли role1 от имени authID, равного текущему идентификатору пользователя userID, создает объект o, становится его владельцем и, тем самым, обладателем привилегии pr по отношению к этому объекту. Далее, от имени этого authID привилегия pr передается роли role1, а сама роль – роли role2. После этого роль role2 передается userID. Какая из перечисленных ситуаций сложется после выполнения операции?

REVOKE PR ON o FROM role1 CASCADE;
(1) привилегия pr аннулируется у role1, role2 и userID
(2) привилегия pr аннулируется у role1 и role2
(3) привилегия pr аннулируется у role1 и role2, role2 лишится права исполнять role1, а userID лишится права исполнять роль role2
Для определения базовых и типизированных таблиц используется один и тот же оператор CREATE TABLE. Каким образом, глядя на определение таблицы, можно точно сказать, к какой из двух категорий относится это определение?
(1) в определении типизированной таблицы присутствует раздел UNDER
(2) в определении типизированной таблицы присутствует определение самоссылающегося столбца
(3) в определении типизированной таблицы присутствует раздел OF
Пусть в некоторой таблице определен столбец типа CHARACTER (7). Какая символьная строка будет реально храниться в этом столбце некоторой строки таблицы, если при вставке строки в качестве значения этого была указана литеральная константа ‘test’?
(1) "test"
(2) "test___", где "_" – символ пробела
(3) "test_’000000"
Пусть при определении базовой таблицы указано ограничение UNIQUE (a, b, c), где a, b и c – составляют полный список имен столбцов определяемой таблицы. Будем считать, что все столбцы целого типа и могут содержать неопределенное значение. Какие из показанных ниже пар строк смогут находиться в теле таблицы?
(1) <NULL, NULL, 5>, <5, NULL, NULL>
(2) <NULL, NULL, NULL>, <5, NULL, NULL>
(3) <NULL, NULL, 5>, <NULL, NULL, 5>

Пусть 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
(1) CHARACTER VARYING (8)
(2) CHARACTER (13)
(3) CHARACTER VARYING (13)

База данных АВТОРЫ-КНИГИ-ИЗДАТЕЛЬСТВА (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 содержит даты публикации книг.

Требуется сформулировать запрос "Найти названия издательств, в которых издавались книги Кристофера Дейта (Chris Date)". Какие из приведенных ниже формулировок являются правильными?

(1) SELECT PUB_NAME FROM PUBLISHERS, AUTHORS WHERE AUTHOR_NAME = ‘Chris Date’;
(2) 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;
(3) 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;

База данных АВТОРЫ-КНИГИ-ИЗДАТЕЛЬСТВА (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) со следующими телами:

table1

a1a2c1c2
5555
5586
5537
23NULL7
4NULLNULLNULL

table2

b1b2c1c2
5555
1256
3855
3855
8888
3NULLNULL5
3NULLNULL5

Требуется сформулировать запрос "Найти названия всех издательств, в которых было издано больше пяти книг Дейта". Какие из приведенных ниже формулировок являются правильными?

(1) SELECT PUB_NAME FROM AUTHORS, AUTHORS-BOOKS, BOOKS, PUBLISHERS WHERE PUBLISHERS.PUB_ID = BOOKS.PUB_ID AND BOOKS.ISBN = AUTHORS-BOOKS.ISBN AND AUTHORS-BOOKS.AUTHOR_ID = AUTHORS.AUTHOR_ID AND AUTHOR_NAME = ‘Chris Date’ GROUP BY PUBLISHERS.PUB_ID HAVING COUNT (DISTINCT BOOKS.ISBN) > 5;
(2) SELECT PUB_NAME FROM PUBLISHERS WHERE (SELECT COUNT (DISTINCT BOOKS.ISBN) FROM AUTHORS, AUTHORS-BOOKS, BOOKS WHERE PUBLISHERS.PUB_ID = BOOKS.PUB_ID AND BOOKS.ISBN = AUTHORS-BOOKS.ISBN AND AUTHORS-BOOKS.AUTHOR_ID = AUTHORS.AUTHOR_ID AND AUTHOR_NAME = ‘Chris Date’) > 5;
(3) SELECT PUB_NAME FROM AUTHORS, AUTHORS-BOOKS, BOOKS, PUBLISHERS GROUP BY PUBLISHERS.PUB_ID, PUB_NAME, BOOKS.PUB_ID, BOOKS.ISBN, AUTHORS-BOOKS.ISBN, AUTHORS-BOOKS.AUTHOR_ID, AUTHORS.AUTHOR_ID, AUTHOR_NAME HAVING PUBLISHERS.PUB_ID = BOOKS.PUB_ID AND BOOKS.ISBN = AUTHORS-BOOKS.ISBN AND AUTHORS-BOOKS.AUTHOR_ID = AUTHORS.AUTHOR_ID AND AUTHOR_NAME = ‘Chris Date’ AND COUNT (DISTINCT BOOKS.ISBN) > 5;

Пусть имеется следующее дерево:

files

Какой из следующих обходов этого дерева является обходом в ширину?

(1) КОРЕНЬ-ПОТОМОК1-ПОТОМОК2-ПОТОМОК3-П1.1-П2.1- П3.1-П3.2-П3.3-П1.1.1-П1.1.2-П2.1.1-П2.1.1.1
(2) КОРЕНЬ-ПОТОМОК1-ПОТОМОК2-ПОТОМОК3-П1.1-П1.1.1- П1.1.2-П2.1-П2.1.1-П2.1.1.1-П3.1-П3.2-П3.3
(3) КОРЕНЬ-ПОТОМОК1- П1.1-П1.1.1-П1.1.2- ПОТОМОК2- П2.1-П2.1.1-П2.1.1.1- ПОТОМОК3- П3.1-П3.2-П3.3

Какая из следующих таблиц является результатом выполнения оператора?

UPDATE EMP SET EMP_SAL = (SELECT (E.EMP_SAL + E.EMP_BONUS)/2 FROM EMP E, DEPT WHERE EMP.DEPT_NO = DEPT.DEPT_NO AND DEPT_MNG = E.EMP_NO) WHERE DEPT_NO IS NOT NULL AND PRO_NO = (SELECT PRO_NO FROM EMP E, PRO WHERE PRO_NAME = ‘Sedna’ AND PRO_MNG = E.EMP_NO AND E.EMP_SAL < EMP.EMP_SAL);
(1)
EMP
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24401177195015000.0013000.00
24411155195516000.0014000.00
24421208196014000.00NULL
24431NULL196016000.0013000.00
24521155NULL15000.0014000.00
24531234NULL17000.00NULL
24442177197017000.0016000.00
24452208195016000.0015000.00
24462155197017000.0016000.00
24472177196020000.00NULL
24483101195518000.0017000.00
24493NULL195018000.0017000.00
24503234196022000.0020000.00
24513155196016500.0020000.00
2454NULL208195013000.0012000.00
2455NULL101195014000.0022000.00
2456NULL234NULL19000.0018000.00
(2)
EMP
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24401177195015000.0013000.00
24411155195517500.0014000.00
24421208196014000.00NULL
24431NULL196016000.0013000.00
24521155NULL17500.0014000.00
24531234NULL17000.00NULL
24442177197017000.0016000.00
24452208195016000.0015000.00
24462155197016500.0016000.00
24472177196020000.00NULL
24483101195518000.0017000.00
24493NULL195018000.0017000.00
24503234196022000.0020000.00
24513155196018500.0020000.00
2454NULL208195013000.0012000.00
2455NULL101195014000.0022000.00
(3)
EMP
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24513155196018500.0020000.00
Отсутствие каких привилегий должно проверяться для гарантии того, что от имени текущего authID нельзя выполнить операцию SELECT * FROM T?
(1) отсутствие привилегии SELECT для таблицы T у текущего authID
(2) отсутствие привилегии SELECT для таблицы T у текущего authID и всех переданных ему ролей
(3) отсутствие привилегии SELECT для таблицы T у текущего authID, у всех переданных ему ролей, у всех ролей, переданных этим ролям, и т.д.
Пусть структурный тип T является непосредственным не максимальным супертипом типа T’. Какие из следующих утверждений относительно определений T и T’ являются верными?
(1) в определении типа T’ не должен содержаться раздел AS
(2) в определении типа T не должна содержаться спецификация FINAL
(3) в определении типа T должен содержаться раздел UNDER, в определении типа T’ должен содержаться раздел UNDER с указанием типа T.
Какова степень анонимного строчного типа ROW (a INTEGER, b ROW (C INTEGER, C CHARACTER (7)))?
(1) 2
(2) 3
(3) 4
Предположим, что в таблице объявлен возможный ключ, состоящий из n столбцов, для m из которых (m ≤ n) при определении столбца отсутствовала спецификация NOT NULL. В скольких строках таблицы столбцы возможного ключа смогут содержать неопределенные значения?
(1) m + n
(2) m * n
(3) 2m – 1
Пусть имеются три мультимножества M1, M2 и M3, содержащие общий элемент a, причем в мультимножестве M1 содержится n дубликатов a, в мультимножестве M2m дубликатов a, а в мультимножестве M3k дубликатов. Сколько дубликатов элемента a будет содержаться в результате операции (M1 MINUS M2) INTERSECT M3?
(1) n - m - k
(2) min (max ((m-n),0), k)
(3) max (n, min (m, k))
Требуется сформулировать запрос “Найти имена авторов, в название книг которых входит название издательства, в котором издавалась соответствующая книга”. Какие из приведенных ниже формулировок являются правильными?
(1) 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 || ‘%’;
(2) 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%’;
(3) 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 || ‘_’;
Требуется сформулировать запрос “Найти название издательств и общее число изданных ими книг для тех издательств, для которых ни в одном другом издательстве не издавалось то же общее число книг”. Какие из приведенных ниже формулировок являются правильными?
(1) SELECT PUB_NAME, COUNT (ISBN) FROM PUBLISHERS, BOOKS WHERE PUBLISHERS.PUB_ID = BOOKS.PUB_ID AND COUNT (ISBN) NOT IN (SELECT COUNT (ISBN) FROM PUBLISHERS PUBLISHERS1, BOOKS BOOKS1 WHERE PUBLISHERS1.PUB_ID = BOOKS1.PUB_ID AND PUBLISHERS1.PUB_ID <> PUBLISHERS.PUB_ID GROUP BY PUBLISHERS1.PUB_ID) GROUP BY PUBLISHERS.PUB_ID;
(2) SELECT PUB_NAME, COUNT (ISBN) FROM PUBLISHERS, BOOKS WHERE PUBLISHERS.PUB_ID = BOOKS.PUB_ID GROUP BY PUBLISHERS.PUB_ID HAVING NOT EXISTS (SELECT PUBLISHERS1.PUB_ID FROM PUBLISHERS PUBLISHERS1, BOOKS BOOKS1 WHERE PUBLISHERS1.PUB_ID <> PUBLISHERS.PUB_ID GROUP BY PUBLISHERS1.PUB_ID HAVING COUNT(BOOKS1.ISBN) = COUNT (BOOKS.ISBN));
(3) SELECT PUB_NAME, COUNT (ISBN) FROM PUBLISHERS, BOOKS GROUP BY PUBLISHERS.PUB_ID HAVING PUBLISHERS.PUB_ID = BOOKS.PUB_ID AND UNIQUE (SELECT PUBLISHERS1.PUB_ID FROM PUBLISHERS, BOOKS BOOKS1 WHERE PUBLISHERS.PUB_ID = BOOKS1.PUB_ID GROUP BY PUBLISHERS.PUB_ID HAVING COUNT(BOOKS1.ISBN) = COUNT (BOOKS.ISBN));

Какая из показанных ниже таблиц является результатом запроса?

SELECT EMP_BONUS, EMP_DEPT, MIN (EMP_BDATE) AS MIN_DDATE, GROUPING (EMP_BONUS) AS GBON, GROUPING (EMP_DEPT) AS GDN FROM EMP GROUP BY CUBE (EMP_BONUS, EMP_DEPT);
(1)
EMP_BONUSEMP_DEPTMIN_DDATEGBONGDN
NULLNULLNULL11
13000.00NULL195001
14000.00NULLNULL01
15000.00NULL195001
16000.00NULL197001
17000.00NULL195001
18000.00NULLNULL01
20000.00NULL196001
NULLNULLNULL01
13000.001195000
14000.001NULL00
14000.00NULL195000
15000.002195000
16000.002197000
17000.003195000
18000.00NULLNULL00
20000.003196000
NULL1NULL00
NULL2196000
NULLNULL195000
NULL1NULL10
NULL2195010
NULL3195510
NULLNULLNULL10
(2)
EMP_BONUSEMP_DEPTMIN_DDATEGBONGDN
NULLNULLNULL11
13000.00NULL195001
14000.00NULLNULL01
15000.00NULL195001
16000.00NULL197001
17000.00NULL195001
18000.00NULLNULL01
20000.00NULL196001
13000.001195000
14000.001NULL00
14000.00NULL195000
15000.002195000
16000.002197000
17000.003195000
20000.003196000
NULL1NULL00
NULL2196000
NULLNULL195000
NULL2195010
NULL3195510
(3)
EMP_BONUSEMP_DEPTMIN_DDATEGBONGDN
NULLNULLNULL11
13000.00NULL195001
14000.00NULLNULL01
15000.00NULL195001
16000.00NULL197001
17000.00NULL195001
18000.00NULLNULL01
20000.00NULL196001
13000.001195000
14000.001NULL00
15000.002195000
16000.002197000
17000.003195000
20000.003196000
NULL2196000
NULL2195010
NULL3195510
Предположим, что в базе данных поддерживаются две отдельные таблицы RDEMP и RMEMP с такой же структурой, что и таблица EMP, но содержащие данные о служащих, имеющих самый большой доход в своем отделе и среди участников своего проекта соответственно (если для некоторого служащего размер премиальных неизвестен, премиальные не учитываются в общей сумме его дохода). Какие из приводимых ниже определений триггеров обеспечат требуемое наполнение этих таблиц?
(1) CREATE TRIGGER EMP_INSERT1 AFTER INSERT ON EMP REFERENCING NEW ROW AS NEW_EMP FOR EACH ROW WHEN (NEW_EMP.EMP_SAL + COALESCE (NEW.EMP_BONUS, 0)>= (SELECT RDEMP.EMP_SAL + COALESCE (RDEMP.EMP_BONUS, 0) FROM RDEMP WHERE RDEMP.DEPT_NO = NEW_EMP.DEPT_NO) OR NOT EXISTS (SELECT * FROM RDEMP WHERE RDEMP.DEPT_NO = NEW_EMP.DEPT_NO)) BEGIN ATOMIC DELETE FROM RDEMP WHERE RDEMP.EMP_NO = NEW_EMP.EMP_NO AND RDEMP.EMP_SAL + COALESCE (RDEMP.EMP_BONUS, 0) < NEW_EMP.EMP_SAL + COALESCE (NEW.EMP_BONUS, 0); INSERT INTO RDEMP ROW (NEW_EMP.EMP_NO, NEW_EMP.DEPT_NO, NEW_EMP.PRO_NO, NEW_EMP.EMP_BDATE, NEW_EMP.EMP_SAL, NEW_EMP.EMP_BONUS); END; CREATE TRIGGER EMP_INSERT2 AFTER INSERT ON EMP REFERENCING NEW ROW AS NEW_EMP FOR EACH ROW WHEN (NEW_EMP.EMP_SAL + COALESCE (NEW.EMP_BONUS, 0)>= (SELECT RMDEMP.EMP_SAL + COALESCE (RMEMP.EMP_BONUS, 0) FROM RMEMP WHERE RMEMP.DEPT_NO = NEW_EMP.DEPT_NO) OR NOT EXISTS (SELECT * FROM RMEMP WHERE RMEMP.PRO_NO = NEW_EMP.PRO_NO)) BEGIN ATOMIC DELETE FROM RMEMP WHERE RMEMP.EMP_NO = NEW_EMP.EMP_NO AND RMEMP.EMP_SAL + COALESCE (RMEMP.EMP_BONUS, 0) < NEW_EMP.EMP_SAL + COALESCE (NEW.EMP_BONUS, 0); INSERT INTO RMEMP ROW (NEW_EMP.EMP_NO, NEW_EMP.DEPT_NO, NEW_EMP.PRO_NO, NEW_EMP.EMP_BDATE, NEW_EMP.EMP_SAL, NEW_EMP.EMP_BONUS); END; CREATE TRIGGER EMP_UPDATE1 AFTER UPDATE OF EMP_SAL, EMP_BONUS ON EMP REFERENCING NEW ROW AS NEW_EMP FOR EACH ROW WHEN (NEW_EMP.EMP_SAL + COALESCE (NEW.EMP_BONUS, 0)>= (SELECT RDEMP.EMP_SAL + COALESCE (RDEMP.EMP_BONUS, 0) FROM RDEMP WHERE RDEMP.DEPT_NO = NEW_EMP.DEPT_NO) OR NOT EXISTS (SELECT * FROM RDEMP WHERE RDEMP.DEPT_NO = NEW_EMP.DEPT_NO)) BEGIN ATOMIC DELETE FROM RDEMP WHERE RDEMP.EMP_NO = NEW_EMP.EMP_NO AND RDEMP.EMP_SAL + COALESCE (RDEMP.EMP_BONUS, 0) < NEW_EMP.EMP_SAL + COALESCE (NEW.EMP_BONUS, 0); INSERT INTO RDEMP ROW (NEW_EMP.EMP_NO, NEW_EMP.DEPT_NO, NEW_EMP.PRO_NO, NEW_EMP.EMP_BDATE, NEW_EMP.EMP_SAL, NEW_EMP.EMP_BONUS); END; CREATE TRIGGER EMP_UPDATE2 AFTER UPDATE OF EMP_SAL, EMP_BONUS ON EMP REFERENCING NEW ROW AS NEW_EMP FOR EACH ROW WHEN (NEW_EMP.EMP_SAL + COALESCE (NEW.EMP_BONUS, 0)>= (SELECT RMEMP.EMP_SAL + COALESCE (RMEMP.EMP_BONUS, 0) FROM RMEMP WHERE RMEMP.DEPT_NO = NEW_EMP.DEPT_NO) OR NOT EXISTS (SELECT * FROM RMEMP WHERE RMEMP.PRO_NO = NEW_EMP.PRO_NO)) BEGIN ATOMIC DELETE FROM RMEMP WHERE RMEMP.EMP_NO = NEW_EMP.EMP_NO AND RMEMP.EMP_SAL + COALESCE (RMEMP.EMP_BONUS, 0) < NEW_EMP.EMP_SAL + COALESCE (NEW.EMP_BONUS, 0); INSERT INTO RMEMP ROW (NEW_EMP.EMP_NO, NEW_EMP.DEPT_NO, NEW_EMP.PRO_NO, NEW_EMP.EMP_BDATE, NEW_EMP.EMP_SAL, NEW_EMP.EMP_BONUS); END; CREATE TRIGGER EMP_DELETE1 AFTER DELETE ON EMP REFERENCING OLD ROW AS OLD_EMP FOR EACH ROW WHEN (NEW_EMP IN (SELECT * FROM RDEMP WHERE RDEMP.DEPT_NO = OLD_EMP.DEPT_NO)) BEGIN ATOMIC DELETE FROM RDEMP WHERE RDEMP.EMP_NO = OLD_EMP.EMP_NO; INSERT INTO RDEMP (SELECT * FROM EMP WHERE NOT EXISTS (SELECT * FROM RDEMP WHERE RDEMP.DEPT_NO = EMP.DEPT_NO) AND EMP.DEPT_NO = OLD_EMP.DEPT_NO AND EMP.EMP_SAL + COALESCE (EMP.EMP_BONUS, 0)= (SELECT MAX (E.EMP_SAL + COALESCE (E.EMP_BONUS, 0)) FROM EMP E WHERE E.DEPT_NO = EMP.DEPT_NO); END; CREATE TRIGGER EMP_DELETE2 AFTER DELETE ON EMP REFERENCING OLD ROW AS OLD_EMP FOR EACH ROW WHEN (NEW_EMP IN (SELECT * FROM RMEMP WHERE RMEMP.DEPT_NO = OLD_EMP.DEPT_NO)) BEGIN ATOMIC DELETE FROM RMEMP WHERE RMEMP.EMP_NO = OLD_EMP.EMP_NO; INSERT INTO RMEMP (SELECT * FROM EMP WHERE NOT EXISTS (SELECT * FROM RMEMP WHERE RMEMP.PRO_NO = EMP.PRO_NO) AND EMP.DEPT_NO = OLD_EMP.DEPT_NO AND EMP.EMP_SAL + COALESCE (EMP.EMP_BONUS, 0)= (SELECT MAX (E.EMP_SAL + COALESCE (E.EMP_BONUS, 0)) FROM EMP E WHERE E.PRO_NO = EMP.PRO_NO); END;
(2) CREATE TRIGGER EMP_INSERT AFTER INSERT ON EMP REFERENCING NEW ROW AS NEW_EMP FOR EACH ROW BEGIN ATOMIC WHEN (NEW_EMP.EMP_SAL + COALESCE (NEW.EMP_BONUS, 0)>= (SELECT RDEMP.EMP_SAL + COALESCE (RDEMP.EMP_BONUS, 0) FROM RDEMP WHERE RDEMP.DEPT_NO = NEW_EMP.DEPT_NO) OR NOT EXISTS (SELECT * FROM RDEMP WHERE RDEMP.DEPT_NO = NEW_EMP.DEPT_NO)) BEGIN ATOMIC DELETE FROM RDEMP WHERE RDEMP.EMP_NO = NEW_EMP.EMP_NO AND RDEMP.EMP_SAL + COALESCE (RDEMP.EMP_BONUS, 0) < NEW_EMP.EMP_SAL + COALESCE (NEW.EMP_BONUS, 0); INSERT INTO RDEMP ROW (NEW_EMP.EMP_NO, NEW_EMP.DEPT_NO, NEW_EMP.PRO_NO, NEW_EMP.EMP_BDATE, NEW_EMP.EMP_SAL, NEW_EMP.EMP_BONUS); END; WHEN (NEW_EMP.EMP_SAL + COALESCE (NEW.EMP_BONUS, 0)>= (SELECT RMDEMP.EMP_SAL + COALESCE (RMEMP.EMP_BONUS, 0) FROM RMEMP WHERE RMEMP.DEPT_NO = NEW_EMP.DEPT_NO) OR NOT EXISTS (SELECT * FROM RMEMP WHERE RMEMP.PRO_NO = NEW_EMP.PRO_NO)) BEGIN ATOMIC DELETE FROM RMEMP WHERE RMEMP.EMP_NO = NEW_EMP.EMP_NO AND RMEMP.EMP_SAL + COALESCE (RMEMP.EMP_BONUS, 0) < NEW_EMP.EMP_SAL + COALESCE (NEW.EMP_BONUS, 0); INSERT INTO RMEMP ROW (NEW_EMP.EMP_NO, NEW_EMP.DEPT_NO, NEW_EMP.PRO_NO, NEW_EMP.EMP_BDATE, NEW_EMP.EMP_SAL, NEW_EMP.EMP_BONUS); END; END; CREATE TRIGGER EMP_UPDATE AFTER UPDATE OF EMP_SAL, EMP_BONUS ON EMP REFERENCING NEW ROW AS NEW_EMP FOR EACH ROW BEGIN ATOMIC WHEN (NEW_EMP.EMP_SAL + COALESCE (NEW.EMP_BONUS, 0)>= (SELECT RDEMP.EMP_SAL + COALESCE (RDEMP.EMP_BONUS, 0) FROM RDEMP WHERE RDEMP.DEPT_NO = NEW_EMP.DEPT_NO) OR NOT EXISTS (SELECT * FROM RDEMP WHERE RDEMP.DEPT_NO = NEW_EMP.DEPT_NO)) BEGIN ATOMIC DELETE FROM RDEMP WHERE RDEMP.EMP_NO = NEW_EMP.EMP_NO AND RDEMP.EMP_SAL + COALESCE (RDEMP.EMP_BONUS, 0) < NEW_EMP.EMP_SAL + COALESCE (NEW.EMP_BONUS, 0); INSERT INTO RDEMP ROW (NEW_EMP.EMP_NO, NEW_EMP.DEPT_NO, NEW_EMP.PRO_NO, NEW_EMP.EMP_BDATE, NEW_EMP.EMP_SAL, NEW_EMP.EMP_BONUS); END; WHEN (NEW_EMP.EMP_SAL + COALESCE (NEW.EMP_BONUS, 0)>= (SELECT RMEMP.EMP_SAL + COALESCE (RMEMP.EMP_BONUS, 0) FROM RMEMP WHERE RMEMP.DEPT_NO = NEW_EMP.DEPT_NO) OR NOT EXISTS (SELECT * FROM RMEMP WHERE RMEMP.PRO_NO = NEW_EMP.PRO_NO)) BEGIN ATOMIC DELETE FROM RMEMP WHERE RMEMP.EMP_NO = NEW_EMP.EMP_NO AND RMEMP.EMP_SAL + COALESCE (RMEMP.EMP_BONUS, 0) < NEW_EMP.EMP_SAL + COALESCE (NEW.EMP_BONUS, 0); INSERT INTO RMEMP ROW (NEW_EMP.EMP_NO, NEW_EMP.DEPT_NO, NEW_EMP.PRO_NO, NEW_EMP.EMP_BDATE, NEW_EMP.EMP_SAL, NEW_EMP.EMP_BONUS); END; END; CREATE TRIGGER EMP_DELETE AFTER DELETE ON EMP REFERENCING OLD ROW AS OLD_EMP FOR EACH ROW BEGIN ATOMIC WHEN (NEW_EMP IN (SELECT * FROM RDEMP WHERE RDEMP.DEPT_NO = OLD_EMP.DEPT_NO)) BEGIN ATOMIC DELETE FROM RDEMP WHERE RDEMP.EMP_NO = OLD_EMP.EMP_NO; INSERT INTO RDEMP (SELECT * FROM EMP WHERE NOT EXISTS (SELECT * FROM RDEMP WHERE RDEMP.DEPT_NO = EMP.DEPT_NO) AND EMP.DEPT_NO = OLD_EMP.DEPT_NO AND EMP.EMP_SAL + COALESCE (EMP.EMP_BONUS, 0)= (SELECT MAX (E.EMP_SAL + COALESCE (E.EMP_BONUS, 0)) FROM EMP E WHERE E.DEPT_NO = EMP.DEPT_NO); END; WHEN (NEW_EMP IN (SELECT * FROM RMEMP WHERE RMEMP.DEPT_NO = OLD_EMP.DEPT_NO)) BEGIN ATOMIC DELETE FROM RMEMP WHERE RMEMP.EMP_NO = OLD_EMP.EMP_NO; INSERT INTO RMEMP (SELECT * FROM EMP WHERE NOT EXISTS (SELECT * FROM RMEMP WHERE RMEMP.PRO_NO = EMP.PRO_NO) AND EMP.DEPT_NO = OLD_EMP.DEPT_NO AND EMP.EMP_SAL + COALESCE (EMP.EMP_BONUS, 0)= (SELECT MAX (E.EMP_SAL + COALESCE (E.EMP_BONUS, 0)) FROM EMP E WHERE E.PRO_NO = EMP.PRO_NO); END; END;
(3) CREATE TRIGGER EMP_INSERT AFTER INSERT ON EMP FOR EACH STATEMENT BEGIN ATOMIC DELETE * FROM RDEMP; INSERT INTO RDEMP (SELECT * FROM EMP WHERE EMP_SAL = (SELECT MAX (E.EMP_SAL + COALESCE (E_BONUS, 0)) FROM EMP E WHERE E.DEPT_NO = EMP.DEPT_NO); DELETE * FROM RMEMP; INSERT INTO RMEMP (SELECT * FROM EMP WHERE EMP_SAL = (SELECT MAX (E.EMP_SAL + COALESCE (E_BONUS, 0)) FROM EMP E WHERE E.PRO_NO = EMP.PRO_NO); END; CREATE TRIGGER EMP_UPDATE AFTER UPDATE ON EMP FOR EACH STATEMENT BEGIN ATOMIC DELETE * FROM RDEMP; INSERT INTO RDEMP (SELECT * FROM EMP WHERE EMP_SAL = (SELECT MAX (E.EMP_SAL + COALESCE (E_BONUS, 0)) FROM EMP E WHERE E.DEPT_NO = EMP.DEPT_NO); DELETE * FROM RMEMP; INSERT INTO RMEMP (SELECT * FROM EMP WHERE EMP_SAL = (SELECT MAX (E.EMP_SAL + COALESCE (E_BONUS, 0)) FROM EMP E WHERE E.PRO_NO = EMP.PRO_NO); END; CREATE TRIGGER EMP_DELETE AFTER DELETE ON EMP FOR EACH STATEMENT BEGIN ATOMIC DELETE * FROM RDEMP; INSERT INTO RDEMP (SELECT * FROM EMP WHERE EMP_SAL = (SELECT MAX (E.EMP_SAL + COALESCE (E_BONUS, 0)) FROM EMP E WHERE E.DEPT_NO = EMP.DEPT_NO); DELETE * FROM RMEMP; INSERT INTO RMEMP (SELECT * FROM EMP WHERE EMP_SAL = (SELECT MAX (E.EMP_SAL + COALESCE (E_BONUS, 0)) FROM EMP E WHERE E.PRO_NO = EMP.PRO_NO); END;
Какими минимальными привилегиями должен обладать текущий authID, чтобы от его имени можно было создать некоторое представление V и впоследствии передать ALL PRIVILEGES для V некоторому другому authID?
(1) всеми привилегиями для всех базовых таблиц и представлений, над которыми определено представление V, включая привилегии на передачу всех привилегий
(2) привилегиями SELECT для всех базовых таблиц и представлений, над которыми определено представление V
(3) привилегиями SELECT для всех базовых таблиц и представлений, над которыми определено представление V, включая привилегии на передачу этих привилегий
Пусть типизированная таблица R является непосредственной максимальной супертаблицей типизированной таблицы R’. Какие из следующих утверждений относительно R и R’ являются верными?
(1) структурный тип таблицы R является максимальным супертипом структурного типа таблицы R’
(2) "в определении таблицы R отсутствует раздел UNDER, в определении таблицы R’ присутствует раздел UNDER с указанием таблицы R; структурный тип таблицы R является непосредственным супертипом структурного типа таблицы R’"
(3) в определении таблицы R’ отсутствуют определения первичного ключа и самоссылающегося столбца

Пусть имеется следующее определение домена:

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);

Что произойдет при выполнении оператора?

(1) имеющиеся значения столбца не изменятся
(2) оператор будет отвергнут
(3) значение 100 изменится на значение 180
Пусть в базовой таблице 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?
(1) операция удаления строки из таблицы T не выполнится
(2) строка из таблицы T будет удалена, а значением внешнего ключа в строках s1, s2 и s3 таблицы S станет <NULL, NULL, NULL>
(3) строка из таблицы T будет удалена, а значениями внешнего ключа в строках s1, s2 и s3 таблицы S станут <NULL, NULL, 5>, <NULL, NULL, NULL> и <NULL, NULL, NULL> соответственно
Какое из приведенных ниже выражений с переключателем эквивалентно выражению COALESCE (NULLIF (V1, V2), NULLIF (V3, V4))? (“<>” обозначает сравнение на неравенство.)
(1) CASE WHEN V1 <> V2 THEN V1 WHEN V1 = V2 AND V3 = V4 THEN NULL ELSE V3 END
(2) CASE WHEN V1 = V2 AND V1 NOT NULL THEN V1 WHEN V1 <> V2 AND V3 <> V4 THEN V3 ELSE NULL END
(3) CASE WHEN V1 NOT NULL THEN V2 WHEN V1 = V2 AND V3 <> V4 THEN V4 ELSE V3 END
Требуется сформулировать запрос “Найти ISBN и имена авторов книг, в название которых входит термин DBMS, но не входят термины database и data base”. Какие из приведенных ниже формулировок являются правильными?
(1) 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%’;
(2) 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%’);
(3) 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%’;
Требуется сформулировать запрос “Найти названия издательств, у которых средняя цена книги такова, что найдется хотя бы одно другое издательство с меньшей средней ценой книги”. Какие из приведенных ниже формулировок являются правильными?
(1) SELECT PUB_NAME FROM PUBLISHERS WHERE EXISTS (SELECT * FROM BOOKS GROUP BY BOOKS.PUB_ID HAVING AVG (PRICE) < (SELECT AVG (PRICE) FROM BOOKS WHERE BOOKS.PUB_ID = PUBLISHERS.PUB_ID);
(2) SELECT PUB_NAME FROM PUBLISHERS, (SELECT AVG (PRICE) FROM BOOKS GROUP BY PUB_ID) AS PUB_AVG_PRICE (AVGPR) GROUP BY PUB_ID HAVING (SELECT AVG (PRICE) FROM BOOKS WHERE PUBLISHERS.PUB_ID = BOOKS.PUB_ID) > (SELECT MIN (AVGPR) FROM PUB_AVG_PRICE);
(3) SELECT PUB_NAME FROM PUBLISHERS WHERE (SELECT AVG (PRICE) FROM BOOKS WHERE PUBLISHERS.PUB_ID = BOOKS.PUB_ID) > ALL (SELECT AVG (PRICE) FROM BOOKS GROUP BY PUB_ID);
Пусть имеется следующее дерево: files Какой из следующих обходов этого дерева является обходом в глубину?
(1) КОРЕНЬ-ПОТОМОК1-П1.1-П1.1.1-П1.1.2-ПОТОМОК2-П2.1-П2.1.1-П2.1.1.1-П2.1.1.2-ПОТОМОК3-П3.1-П3.2-П3.3
(2) КОРЕНЬ-ПОТОМОК2-П2.1-П2.1.1-П2.1.1.1-П2.1.1.2-КОРЕНЬ-ПОТОМОК1-П1.1-П1.1.1-П1.1.2-ПОТОМОК3-П3.1-П3.2-П3.3
(3) КОРЕНЬ-ПОТОМОК1-ПОТОМОК2-ПОТОМОК3-П1.1-П2.1-П3.1-П3.2-П3.3- П1.1.1-П1.1.2-П2.1.1-П2.1.1.1-П2.1.1.2

Пусть имеются следующие два определения представлений:

CREATE VIEW RICH_DEPT AS SELECT * FROM EMP WHERE (SELECT AVG (E.EMP_SAL) FROM EMP E WHERE E.DEPT_NO = EMP.DEPT_NO) > (SELECT AVG (E.EMP_SAL) FROM EMP E WHERE E.PRO_NO = EMP.PRO_NO);

и

CREATE VIEW RICH_EMP AS SELECT * FROM RICH_DEPT WHERE EMP_SAL > (SELECT AVG (E.EMP_SAL + E.EMP_BONUS) FROM EMP E WHERE E.DEPT_NO = EMP.DEPT_NO);

При принятом в этих упражнениях примерном составе строк таблицы EMP после материализации этих представлений были бы получены следующие таблицы:

RICH_DEPT
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24421208196014000.00NULL
24442177197017000.0016000.00
24452208195016000.0015000.00
24472177196020000.00NULL
24483101195518000.0017000.00
24503234196022000.0020000.00
24513155196022000.0020000.00
RICH_EMP
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24472177196020000.00NULL
24503234196022000.0020000.00
24513155196022000.0020000.00

Пусть над представлением RICH_EMP выполняется операция

UPDATE RICH_EMP SET EMP_SAL = EMP_SAL - 10000.00

Какие из приведенных ниже таблиц соответствуют материализованным представлениям RICH_DEPT и RICH_EMP после выполнения этой операции?

(1)
RICH_DEPT
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24401177195015000.0013000.00
24411155195516000.0014000.00
24421208196014000.00NULL
24521155NULL15000.0014000.00
24442177197017000.0016000.00
24452208195016000.0015000.00
24472177196010000.00NULL
24483101195518000.0017000.00
24503234196012000.0020000.00
24513155196012000.0020000.00
RICH_EMP
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24411155195516000.0014000.00
24421208196014000.00NULL
24442177197017000.0016000.00
24452208195016000.0015000.00
24483101195518000.0017000.00
(2)
RICH_DEPT
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24421208196014000.00NULL
24442177197017000.0016000.00
24452208195016000.0015000.00
24472177196010000.00NULL
24483101195518000.0017000.00
24503234196012000.0020000.00
24513155196012000.0020000.00
RICH_EMP
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24472177196010000.00NULL
24503234196012000.0020000.00
24513155196012000.0020000.00
(3)
RICH_DEPT
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24421208196014000.00NULL
24442177197017000.0016000.00
24452208195016000.0015000.00
24472177196020000.00NULL
24483101195518000.0017000.00
24503234196022000.0020000.00
24513155196022000.0020000.00
RICH_EMP
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24472177196020000.00NULL
24503234196022000.0020000.00
24513155196022000.0020000.00
Пусть транзакция T выполняется на уровне изоляции REPEATABLE READ. После выполнения какого из перечисленных ниже операторов выборки в транзакции T может проявиться эффект фантомов?
(1) "SELECT * FROM EMP WHERE EMP_NO = 4441;" и результат операции не пуст
(2) "SELECT * FROM EMP WHERE EMP_NO = 4441;" и результат операции пуст
(3) "SELECT * FROM EMP WHERE EMP_NO = 4441 OR DEPT_NO = 632;"
Пусть A – это самоссылающийся столбец типизированной таблицы R. Какая спецификация является первичной для генерации значений этого столбца?
(1) определение самоссылающегося столбца в таблице R
(2) определение самоссылающегося столбца в максимальной супертаблице таблицы R
(3) спецификация ссылочного типа в определении максимального супертипа структурного типа таблицы R
Пусть в некоторой таблице определен столбец типа VARCHAR (7). Какая символьная строка будет реально храниться в этом столбце некоторой строки таблицы, если при вставке строки в качестве значения этого была указана литеральная константа "test"?
(1) "test"
(2) "test___", где "_" – символ пробела
(3) "testX'000000"
Какой из режимов проверки разумно установить для ограничения таблицы EMP TOTAL_INCOME?
(1) INITIALLY IMMEDIATE NOT DEFERRABLE
(2) INITIALLY IMMEDIATE DEFERRABLE
(3) INITIALLY DEFERRED
Пусть имеется таблица T со столбцами A, B и C. Какие из приведенных ниже конструкторов таблицы являются синтаксически неверными?
(1) VALUES SELECT * FROM T WHERE B = const, ROW (5, NULL, SELECT A FROM T WHERE B = const), (DEFAULT, NULL, NULL)
(2) VALUES ROW (SELECT * FROM T WHERE B = const, NULL), (15, 25, NULL)
(3) 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)
Требуется сформулировать запрос “Найти названия издательств, издававших книги хотя бы одного автора из Москвы”. Какие из приведенных ниже формулировок являются правильными?
(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%’);
(2) 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;
(3) 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%’;
Какая из показанных ниже таблиц является результатом операции table1 NATURAL RIGHT OUTER JOIN table2?
(1)
a1a2c1c2b1b2
555555
NULLNULL5612
555538
555538
NULLNULL8888
NULLNULLNULL53NULL
NULLNULLNULL53NULL
(2)
a1a2table1.c1table1.c2b1b2table2.c1table2.c2
55555555
NULLNULL561256
55553855
55553855
NULLNULL888888
NULLNULLNULL53NULLNULL5
NULLNULLNULL53NULLNULL5
(3)
a1a2c1c2b1b2
NULL3NULLNULL5NULL
NULL3NULLNULL5NULL
535558
NULL88NULL88
535558
NULL15NULL62
555555
Какая из следующих последовательностей является монотонной (n = {1, 2, …, …})?
(1) Последовательность k, где k = 2-n
(2) Последовательность k, где k = (-1)n
(3) Последовательность k, где k = (n+2)/(n+1)

Какая из следующих таблиц является результатом выполнения оператора?

DELETE FROM EMP WHERE NOT EXISTS (SELECT * FROM EMP E WHERE EMP.DEPT_NO = E.DEPT_NO AND (EMP.EMP_SAL + EMP.EMP_BONUS) > (E.EMP_SAL + E.EMP_BONUS)) AND EMP_SAL + EMP_BONUS = (SELECT MIN (E.EMP_SAL + E.EMP_BONUS) FROM EMP E WHERE EMP.PRO_NO = E.PRO_NO)
(1)
EMP
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24411155195516000.0014000.00
24421208196014000.00NULL
24431NULL196016000.0013000.00
24521155NULL15000.0014000.00
24531234NULL17000.00NULL
24442177197017000.0016000.00
24452208195016000.0015000.00
24462155197017000.0016000.00
24472177196020000.00NULL
24493NULL195018000.0017000.00
24503234196022000.0020000.00
24513155196022000.0020000.00
2454NULL208195013000.0012000.00
2455NULL101195014000.0022000.00
2456NULL234NULL19000.0018000.00
(2)
EMP
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24411155195516000.0014000.00
24421208196014000.00NULL
24431NULL196016000.0013000.00
24521155NULL15000.0014000.00
24531234NULL17000.00NULL
24442177197017000.0016000.00
24452208195016000.0015000.00
24462155197017000.0016000.00
24472177196020000.00NULL
24493NULL195018000.0017000.00
24503234196022000.0020000.00
24513155196022000.0020000.00
(3)
EMP
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24411155195516000.0014000.00
24421208196014000.00NULL
24431NULL196016000.0013000.00
24521155NULL15000.0014000.00
24531234NULL17000.00NULL
24442177197017000.0016000.00
24462155197017000.0016000.00
24472177196020000.00NULL
24493NULL195018000.0017000.00
24503234196022000.0020000.00
24513155196022000.0020000.00
2454NULL208195013000.0012000.00
2455NULL101195014000.0022000.00
2456NULL234NULL19000.0018000.00

Пусть пользователь с текущим идентификатором пользователя userID1 от имени authID1, равного текущему имени роли role1, создает объект o, становится его владельцем и, тем самым, обладателем привилегии pr по отношению к этому объекту. Далее, от имени этого authID1 привилегия pr передается идентификатору пользователя userID1. Потом authID1 изменяется на userID1, и от его имени право на исполнение роли role1 передается роли с именем role2, являющемуся authID2 в некоторой сессии, текущим идентификатором пользователя которой является userID2. Наконец, от имени того же authID2 привилегия pr передается userID2. Что теперь произойдет, если от имени authID1 будет задана операция?

REVOKE PR ON o FROM userID2 CASCADE;
(1) userID2 лишится привилегии pr, но она останется у role1, role2 и userID1
(2) операция будет отвергнута
(3) привилегия pr сохранится только у role1
Как должны соответствовать структурный тип типизированного представления со структурным типом базисной типизированной таблицы этого представления?
(1) эти типы должны совпадать
(2) тип представления должен являться подтипом (не обязательно несобственным) типа базисной таблицы
(3) тип базисной таблицы должен являться непосредственным собственным супертипом типа представеления
Пусть в некоторой таблице определен столбец типа INTEGER ARRAY [10]. Пусть при вставке в эту таблицу некоторой строки в данный столбец заносится значение-массив (12, 14, 18, 22). Чему будет равно значение cs для значения-массива данного столбца в этой строке после занесения в него восьмого элемента массива?
(1) 10
(2) 5
(3) 8
Пусть в базовой таблице S определен внешний ключ (a, b, c), где a, b и c – имена столбцов определяемой таблицы. Пусть для этого внешнего ключа специфицирован способ соответствия PARTIAL. Будем считать, что все столбцы целого типа, и для них специфицированы значения по умолчанию 4, 44 и 444 соответственно. Предположим, что внешний ключ ссылается на первичный ключ таблицы T, состоящий из столбцов с такими же именами. Пусть в таблице S присутствуют строки s1, s2 и s2 со значениями внешнего ключа <NULL, NULL, 5>, <25, 1, NULL> и <25, 1, 5> соответственно. Что произойдет при удалении строки t из таблицы T со значением первичного ключа <25, 1, 5>, если при определении внешнего ключа (a, b, c) таблицы S указано ссылочное действие ON DELETE SET DEFAULT и строки s1, s2 и s2 соответствуют исключительно строке t?
(1) операция удаления строки из таблицы T не выполнится
(2) строка из таблицы T будет удалена, а значением внешнего ключа в строках s1, s2 и s2 таблицы S станет <4, 44, 444>
(3) строка из таблицы T будет удалена, а значениями внешнего ключа в строках s1, s2 и s2 таблицы S станут <NULL, NULL, 444>, <4, 44, NULL> и <4, 44, 444> соответственно
Пусть A является столбцом таблицы T типа CHARACTER (5), а B – столбцом таблицы T типа CHARACTER VARYING (8). Пусть при вставке в строку s этой таблицы в столбец A было занесено значение ‘LET’, а в столбец B‘IT’. В столбце какого из перечисленных ниже типов могло бы быть сохранено значение выражения A || B || ‘BE’, вычисленное для значений строки s? (Здесь “_” обозначает символ пробела.)
(1) CHARACTER (4)
(2) CHARACTER (9)
(3) CHARACTER (15)
Требуется сформулировать запрос “Найти имена всех соавторов Дейта”. Какие из приведенных ниже формулировок являются правильными?
(1) 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’);
(2) 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’);
(3) 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’);
Требуется сформулировать запрос “Найти имена и общее число изданных книг авторов, которые издали не менее трех книг в издательстве Morgan Kauffman”. Какие из приведенных ниже формулировок являются правильными?
(1) SELECT AUTHOR_NAME, COUNT(*) FROM AUTHORS AUTH1, AUTHORS-BOOKS WHERE AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND (SELECT COUNT (*) FROM AUTHORS, AUTHORS-BOOKS, BOOKS, PUBLISHERS WHERE AUTHORS-BOOKS.ISBN = BOOKS.ISBN AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID AND PUB_NAME = ‘Morgan Kauffman’) >= 3 GROUP BY AUTH1.AUTHOR_ID, AUTHOR_NAME;
(2) SELECT AUTHOR_NAME, COUNT(*) FROM AUTHORS AUTH1, AUTHORS-BOOKS WHERE AUTH1.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND (SELECT COUNT (*) FROM AUTHORS, AUTHORS-BOOKS, BOOKS, PUBLISHERS WHERE AUTH1.AUTHOR_ID = AUTHORS.AUTHOR_ID AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID AND PUB_NAME = ‘Morgan Kauffman’) >= 3 GROUP BY AUTH1.AUTHOR_ID, AUTHOR_NAME;
(3) SELECT AUTHOR_NAME, COUNT(*) FROM AUTHORS AUTH1, AUTHORS-BOOKS WHERE AUTH1.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND (SELECT COUNT (*) FROM AUTHORS, AUTHORS-BOOKS, BOOKS, PUBLISHERS WHERE AUTH1.AUTHOR_ID = AUTHORS.AUTHOR_ID AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID AND PUB_NAME = ‘Morgan Kauffman’) >= 3 GROUP BY AUTH1.AUTHOR_ID;

Пусть имеется следующее дерево:

files

Какой из следующих обходов этого дерева является обходом в глубину?

(1) КОРЕНЬ-ПОТОМОК1-ПОТОМОК2-П2.1-П2.1.1- П2.2-ПОТОМОК3-П3.1-П3.1.1-П3.1.2
(2) КОРЕНЬ- ПОТОМОК3-П3.1-П3.1.2-П3.1.1- ПОТОМОК2-П2.2-П2.1-П2.1.1-ПОТОМОК1
(3) КОРЕНЬ-ПОТОМОК2-П2.1-П2.1.1-ПОТОМОК3-П3.1- П3.1.1-П3.1.2-П2.2-ПОТОМОК1
Пусть V – это некоторое представление, допускающее операции обновления и определенное c разделом WITH LOCAL CHECK OPTION. Предположим, что представление V определено над некоторым представлением V1, которое определено без раздела WITH CHECK OPTION. В каких из перечисленных ситуаций система может отвергнуть какую-либо операцию обновления V?
(1) когда она противоречит условию выборки запроса, на котором определено представление V
(2) когда она противоречит условию выборки запроса, на котором определено представление V1
(3) если представление V1 определено с разделом WITH CHECK OPTION над некоторым представлением V2, которое определено с разделом WITH CHECK OPTION, и операция обновления противоречит условию выборки V2

Пусть пользователь с текущим именем роли role от имени authID1, равного текущему идентификатору пользователя userID1, создает объект o, становится его владельцем и, тем самым, обладателем привилегии pr по отношению к этому объекту. Далее, от имени этого authID1 привилегия pr передается роли role, а сама роль – текущему идентификатору пользователя userID2. После этого от имени роли role привилегия pr передается userID2. Какая из перечисленных ситуаций сложется после выполнения операции?

REVOKE role FROM userID2 CASCADE;
(1) у userID2 не будет ни привилегии pr, ни роли role
(2) у userID2 останется привилегия pr, но не будет роли role
(3) привилегия pr аннулируется у userID2 и role
Что означает отсутствие reference_type_specification в определении максимального структурного UDT?
(1) этот тип нельзя использовать для определения типизированной таблицы
(2) синтаксическую ошибку
(3) использование по умолчанию спецификации REF IS SYSTEM GENERATED
Какая из приведенных ниже таблиц является таблицей истинности для логической функции “штрих Шеффера” в трехзначной логике?
(1)
?TRUEFALSEUNKNOWN
TRUEFALSETRUEUNKNOWN
FALSETRUETRUETRUE
UNKNOWNUNKNOWNTRUEUNKNOWN
(2)
ANDTRUEFALSEUNKNOWN
TRUETRUEFALSEUNKNOWN
FALSEFALSEFALSEFALSE
UNKNOWNUNKNOWNFALSEUNKNOWN
(3)
ANDTRUEFALSEUNKNOWN
TRUETRUEFALSEFALSE
FALSEFALSETRUEFALSE
UNKNOWNFALSEFALSEUNKNOWN
Пусть в базовой таблице S определен внешний ключ (a, b, c), где a, b и c – имена столбцов определяемой таблицы. Будем считать, что все столбцы целого типа и могут содержать неопределенное значение. Предположим, что внешний ключ ссылается на первичный ключ таблицы T, состоящий из столбцов с такими же именами. При какой спецификации способа соответствия значение внешнего ключа <NULL, 1, 10> соответствует значению первичного ключа <25, 1, 10>?
(1) SIMPLE
(2) FULL
(3) PARTIAL
Можно ли выразить булевскую функцию SQL IS через функцию “стрелка Пирса”? Каков из представленных ниже ответов является правильным?
(1) Да. 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)))
(2) Да. x IS y ≡ pi (pi (pi (pi (A, A), pi (B, B)), pi (A, B)))
(3) Булевская функция SQL IS не выражается через функцию “стрелка Пирса”, потому что в трехзначной логике SQL NOT UNKNOWN = UNKNOWN

База данных АВТОРЫ-КНИГИ-ИЗДАТЕЛЬСТВА (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 содержит даты публикации книг.

Требуется сформулировать запрос "Найти ISBN и имена авторов книг, в название которых входит хотя бы одна цифра". Какие из приведенных ниже формулировок являются правильными?

(1) 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:]%’;
(2) 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%)’;
(3) 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) состоит из следующих таблиц:

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) со следующими телами:

table1

a1a2c1c2
5555
5586
5537
23NULL7
4NULLNULLNULL

table2

b1b2c1c2
5555
1256
3855
3855
8888
3NULLNULL5
3NULLNULL5

Какая из показанных ниже таблиц является результатом операции table1 LEFT OUTER JOIN table2 ON a2=b1 AND a1<b2

?
(1)
a1a2c1c2b1b2
5555NULLNULL
5586NULLNULL
5537NULLNULL
23NULL738
23NULL738
4NULLNULLNULLNULLNULL
(2)
a1a2table1.c1table1.c2b1b2table2.c1table2.c2
5555NULLNULLNULLNULL
5586NULLNULLNULLNULL
5537NULLNULLNULLNULL
23NULL73855
23NULL73855
4NULLNULLNULLNULLNULLNULLNULL
(3)
a1a2table1.c1table1.c2b1b2table2.c1table2.c2
5555NULLNULLNULLNULL
5586NULLNULLNULLNULL
5537NULLNULLNULLNULL
23NULL73855
23NULL73855
23NULL73NULLNULL5
23NULL73NULLNULL5
4NULLNULLNULLNULLNULLNULLNULL

Какая из показанных ниже таблиц является результатом запроса?

SELECT EMP_BDATE, EMP_BONUS, MIN (EMP_SAL) AS MIN_SAL, GROUPING (EMP_BDATE) AS GBD, GROUPING (EMP_BONUS) AS GBON FROM EMP GROUP BY CUBE (EMP_BDATE, EMP_BONUS);
(1)
EMP_BDATEEMP_BONUSMIN_SALGBDGBON
NULLNULL13000.0011
1950NULL13000.0001
1955NULL16000.0001
1960NULL14000.0001
1970NULL17000.0001
195013000.0015000.0000
195015000.0016000.0000
195017000.0018000.0000
195012000.0013000.0000
1950NULL14000.0000
195514000.0016000.0000
195517000.0018000.0000
1960NULL14000.0000
196013000.0016000.0000
196020000.0022000.0000
1960NULL14000.0000
197016000.0017000.0000
NULL14000.0015000.0000
NULL18000.0019000.0000
NULL13000.0015000.0010
NULL14000.0015000.0010
NULL15000.0016000.0010
NULL16000.0017000.0010
NULL17000.0018000.0010
NULL18000.0019000.0010
NULL20000.0022000.0010
(2)
EMP_BDATEEMP_BONUSMIN_SALGBDGBON
NULLNULL13000.0011
1950NULL13000.0001
1955NULL16000.0001
1960NULL14000.0001
1970NULL17000.0001
NULLNULL15000.0001
195013000.0015000.0000
195015000.0016000.0000
195017000.0018000.0000
195012000.0013000.0000
1950NULL14000.0000
195514000.0016000.0000
195517000.0018000.0000
1960NULL14000.0000
196013000.0016000.0000
196020000.0022000.0000
1960NULL14000.0000
197016000.0017000.0000
NULL14000.0015000.0000
NULL18000.0019000.0000
NULLNULL17000.0000
NULL13000.0015000.0010
NULL14000.0015000.0010
NULL15000.0016000.0010
NULL16000.0017000.0010
NULL17000.0018000.0010
NULL18000.0019000.0010
NULL20000.0022000.0010
NULLNULL14000.0010
(3)
EMP_BDATEEMP_BONUSMIN_SALGBDGBON
NULLNULL13000.0011
1950NULL13000.0001
1955NULL16000.0001
1960NULL14000.0001
1970NULL17000.0001
195013000.0015000.0000
195015000.0016000.0000
195017000.0018000.0000
195012000.0013000.0000
195514000.0016000.0000
195517000.0018000.0000
196013000.0016000.0000
196020000.0022000.0000
197016000.0017000.0000
NULL14000.0015000.0000
NULL18000.0019000.0000
NULL13000.0015000.0010
NULL14000.0015000.0010
NULL15000.0016000.0010
NULL16000.0017000.0010
NULL17000.0018000.0010
NULL18000.0019000.0010
NULL20000.0022000.0010
Чему соответствует имя псевдонима, вводимого в разделе REFERENCING определения триггера над таблицей T конструкцией OLD TABLE?
(1) Содержимому таблицы T после выполнения операции, инициирующей триггер
(2) Набору строк в исходном теле таблицы T, которые подвергались обновлению
(3) Набору строк, которые были обновлены в теле таблицы T
Пусть одновременно выполняются три транзакции: T1 = (ST1(c), SPT1(spn1), IT1(c), DT1(c), ST1(c), RBT1(spn1), COMMITT1), T2 = (ST2(c), SPT2(spn2), UT2(c), ST2(c), RBT2(spn2), COMMITT2), T3 = (ST3(c), COMMITT3). Какие из указанных ниже реальных последовательностей выполнения операций соответствуют уровню изоляции SERIALIZABLE?
(1) ST1(c), ST2(c), ST3(c), SPT1(spn1), IT1(c), DT1(c), ST1(c), RBT1(spn1), SPT2(spn2), UT2(c), ST2(c), RBT2(spn2), COMMITT1, COMMITT2, COMMITT3
(2) ST3(c), COMMITT3, SPT1(spn1), IT1(c), DT1(c), ST2(c), SPT2(spn2), UT2(c), ST1(c), RBT1(spn1), COMMITT1, ST2(c), RBT2(spn2), COMMITT2
(3) ST1(c), SPT1(spn1), IT1(c), DT1(c), ST1(c), RBT1(spn1), ST2(c), SPT2(spn2), UT2(c), ST2(c), RBT2(spn2), ST3(c), COMMITT3, COMMITT1, COMMITT2
Какая из приведенных ниже формулировок правильно соответствует запросу “выдать имена начальников отделов, в которых работает хотя бы один программист”?
(1) SELECT DISTINCT DEPT -> DEPT_MNG -> EMP_NAME FROM PROGRAMMER
(2) SELECT EMP_NAME FROM EMP, DEPT WHERE DEPT = DEPT_ID AND DEPT_MNG = EMP_ID AND EXISTS (SELECT * FROM PROGRAMMER WHERE DEPT = DEPT_ID);
(3) SELECT EMP_NAME FROM EMP, DEPT WHERE DEPT_MNG = EMP_ID AND EXISTS (SELECT * FROM PROGRAMMER WHERE DEPT = DEPT_ID);

Пусть имеется следующее определение домена:

CREATE DOMAIN TEST AS INTEGER DEFAULT 100 CHECK (VALUE > 0 AND VALUE != 150 AND VALUE < 200) CONSTRAINT (VALUE IS NOT NULL);

Пусть на этом домене определен столбец некоторой таблицы. Какие из перечисленных значений не могут появиться в качестве значений этого столбца ни в одной строке таблицы?

(1) 100
(2) NULL
(3) 151
Предположим, что проекты финансируются отделами. Каждый отдел финансирует не более одного проекта, один проект может финансироваться несколькими отделами, и общая сумма финансирования проекта не должна составлять менее 1000000.00 руб. Выполнение каких из приведенных ниже операторов изменит определения таблиц DEPT и PRO требуемым образом?
(1) 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);
(2) 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);
(3) 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);
Какое из приведенных ниже выражений с переключателем эквивалентно выражению NULLIF (COALESCE (V1, V2), COALESCE (V3, V4))? (“<>” обозначает сравнение на неравенство.)
(1) 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
(2) 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
(3) 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
Требуется сформулировать запрос “Найти имена авторов, книги которых никогда не публиковались издательствами, издававшими книги Дейта”. Какие из приведенных ниже формулировок являются правильными?
(1) 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);
(2) 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);
(3) 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));
Какая из показанных ниже таблиц является результатом операции table1 NATURAL FULL OUTER JOIN table2?
(1)
a1a2c1c2b1b2
555555
555538
555538
5586NULLNULL
5537NULLNULL
23NULL7NULLNULL
4NULLNULL NULLNULLNULL
NULLNULL5612
NULLNULL8888
NULLNULLNULL53NULL
NULLNULLNULL53NULL
(2)
a1a2table1.c1table1.c2b1b2table2.c1table2.c2
55555555
55553855
55553855
5586NULLNULLNULLNULL
5537NULLNULLNULLNULL
23NULL7NULLNULLNULLNULL
4NULLNULL6NULLNULLNULLNULL
NULLNULL561256
NULLNULL888888
NULLNULLNULL53NULLNULL5
NULLNULLNULL53NULLNULL5
(3)
a1a2c1c2b1b2
555555
555538
555538
5586NULLNULL
5537NULLNULL
23NULL7NULLNULL
4NULLNULL6NULLNULL
NULLNULL5612
NULLNULL8888
55NULL53NULL
55NULL53NULL

Какая из приведенных ниже таблиц является результатом рекурсивного запроса?

WITH RECURSIVE PX (Major, Minor, Qty) AS ((SELECT Major, Minor, Qty FROM PARTS WHERE PARTS.Major = ‘P1’) UNION ALL (SELECT PX.Major, PARTS.Minor, PX.Qty * PARTS.Qty FROM PX, PARTS where pp.Major = px.Minor)) SELECT Major, Minor, Qty FROM PX;
(1)
MajorMinorQty
P1P22
P1P33
P1P42
P1P36
P1P54
P1P524
P1P612
P1P512
P1P66
P1P310
P1P64
P1P540
P1P620
(2)
MajorMinorQty
P1P22
P1P33
P1P42
P1P54
P1P524
P1P612
P1P512
P1P66
P1P64
P1P540
P1P620
(3)
MajorMinorQty
P1P22
P1P33
P1P42
P1P580
P1P642

Пусть имеются следующие два определения представлений:

CREATE VIEW RICH_EMP AS SELECT * FROM EMP WHERE EMP_SAL = (SELECT MAX (E.EMP_SAL) FROM EMP E WHERE E.DEPT_NO = EMP.DEPT_NO) OR EMP_BONUS = (SELECT MAX (E.EMP_BONUS) FROM EMP E WHERE E.DEPT_NO = EMP.DEPT_NO);

и

CREATE VIEW LESS_RICH_EMP AS SELECT * FROM RICH_EMP WHERE EMP_SAL + EMP_BONUS = (SELECT MIN (RE.EMP_SAL + RE.EMP_BONUS) FROM RICH_EMP RE WHERE RE.DEPT_NO = RICH_EMP.DEPT_NO);

При принятом в этих упражнениях примерном составе строк таблицы EMP после материализации этих представлений были бы получены следующие таблицы:

RICH_EMP
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24411155195516000.0014000.00
24521155NULL15000.0014000.00
24531234NULL17000.00NULL
24442177197017000.0016000.00
24462155197017000.0016000.00
24472177196020000.00NULL
24503234196022000.0020000.00
24513155196022000.0020000.00
LESS_RICH_EMP
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24521155NULL15000.0014000.00
24442177197017000.0016000.00
24462155197017000.0016000.00
24503234196022000.0020000.00
24513155196022000.0020000.00

Пусть над представлением RICH_EMP выполняется операция

UPDATE RICH_EMP SET EMP_SAL = EMP_SAL + 10000.00, EMP_BONUS = EMP_BONUS – 10000.00

Какие из приведенных ниже таблиц соответствуют материализованным представлениям RICH_EMP и LESS_RICH_EMP после выполнения этой операции?

(1)
RICH_EMP
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24411155195516000.0014000.00
24521155NULL15000.0014000.00
24531234NULL17000.00NULL
24442177197017000.0016000.00
24462155197017000.0016000.00
24472177196020000.00NULL
24503234196022000.0020000.00
24513155196022000.0020000.00
LESS_RICH_EMP
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24521155NULL15000.0014000.00
24442177197017000.0016000.00
24462155197017000.0016000.00
24503234196022000.0020000.00
24513155196022000.0020000.00
(2)
RICH_EMP
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24411155195516000.0014000.00
24521155NULL25000.004000.00
24531234NULL17000.00NULL
24442177197027000.006000.00
24462155197027000.006000.00
24472177196020000.00NULL
24503234196032000.0010000.00
24513155196032000.0010000.00
LESS_RICH_EMP
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24521155NULL25000.004000.00
24442177197027000.006000.00
24462155197027000.006000.00
24503234196032000.0010000.00
24513155196032000.0010000.00
(3)
RICH_EMP
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24411155195516000.0014000.00
24521155NULL25000.004000.00
24442177197027000.006000.00
24452208195016000.0015000.00
24462155197027000.006000.00
24483101195518000.0017000.00
24493NULL195018000.0017000.00
24503234196032000.0010000.00
24513155196032000.0010000.00
LESS_RICH_EMP
EMP_NODEPT_NOPRO_NOEMP_BDATEEMP_SALEMP_BONUS
24521155NULL25000.004000.00
24452208195016000.0015000.00
24483101195518000.0017000.00
24493NULL195018000.0017000.00
Пусть одновременно выполняются три транзакции: T1 = (ST1(c), SPT1(spn1), IT1(c), RBT1(spn1), DT1(c), ST1(c), RBT1(spn1), DT1(c), COMMITT1), T2 = (ST2(c), SPT2(spn2), UT2(c), ST2(c), RBT2(spn2), ST2(c), COMMITT2), T1 = (ST3(c), SPT3(spn3), UT3(c), RBT3(spn3), COMMITT3). Какие из указанных ниже реальных последовательностей выполнения операций соответствуют уровню изоляции SERIALIZABLE?
(1) ST1(c), SPT1(spn1), IT1(c), RBT1(spn1), ST2(c), SPT2(spn2), UT2(c), ST2(c), RBT2(spn2), ST3(c), SPT3(spn3), UT3(c), RBT3(spn3), DT1(c), ST1(c), RBT1(spn1), ST2(c), COMMITT2, DT1(c), COMMITT1, COMMITT3
(2) ST1(c), SPT1(spn1), IT1(c), ST2(c), SPT2(spn2), UT2(c), ST2(c), RBT2(spn2), RBT1(spn1), DT1(c), ST1(c), RBT1(spn1), DT1(c), COMMITT1, ST3(c), SPT3(spn3), UT3(c), RBT3(spn3), COMMITT3, ST2(c), COMMITT2
(3) ST1(c), SPT1(spn1), ST2(c), SPT2(spn2), ST3(c), SPT3(spn3), IT1(c), RBT1(spn1), UT2(c), ST2(c), RBT2(spn2), UT3(c), RBT3(spn3), DT1(c), ST1(c), RBT1(spn1), ST2(c), COMMITT2, COMMITT3, DT1(c), COMMITT1
Какая из приведенных ниже формулировок правильно соответствует запросу “выдать имена начальников отделов, в которых работает исключительно программисты”?
(1) SELECT DISTINCT DEPT -> DEPT_MNG -> EMP_NAME FROM PROGRAMMER
(2) SELECT DEPT_MNG -> EMP_NAME FROM DEPT WHERE NOT EXISTS (SELECT * FROM ONLY (EMP) WHERE DEPT = DEPT_ID);
(3) SELECT DEPT_MNG -> EMP_NAME FROM DEPT WHERE DEPT IN (SELECT DEPT FROM PROGRAMMER);
Пусть имеется литерал точного числового типа 22519. При выполнении какого из следующих операторов CAST будет зафиксирована ошибка?
(1) CAST 22519 AS NUMERIC (8)
(2) CAST 22519 AS FLOAT (8)
(3) CAST 22519 AS CHARACTER (4)
Какой из режимов проверки разумно установить для ограничения таблицы PRO_EMP_NO?
(1) INITIALLY IMMEDIATE NOT DEFERRABLE
(2) INITIALLY IMMEDIATE DEFERRABLE
(3) INITIALLY DEFERRED
Пусть имеется таблица T со столбцами A, B и C. Какие из приведенных ниже конструкторов строки являются синтаксически неверными?
(1) SELECT A FROM T WHERE B = const
(2) ROW (5, NULL, SELECT * FROM T WHERE B = const)
(3) SELECT * FROM T WHERE B = const
Требуется сформулировать запрос “Найти имена авторов, которые издали не больше книг, чем автор Smith, но не меньше, чем автор Brown”. Какие из приведенных ниже формулировок являются правильными?
(1) 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’);
(2) 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’);
(3) 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);
Какая из показанных ниже таблиц является результатом операции table1 FULL OUTER JOIN table2 ON a2=b1 AND a1<b2?
(1)
a1a2table1.c1table1.c2b1b2table2.c1table2.c2
5555NULLNULLNULLNULL
NULLNULLNULLNULL3NULLNULL5
5586NULLNULLNULLNULL
NULLNULLNULLNULL3NULLNULL5
5537NULLNULLNULLNULL
NULLNULLNULLNULL8888
23NULL73855
NULLNULLNULLNULL1256
23NULL73855
NULLNULLNULLNULL5555
4NULLNULLNULLNULLNULLNULLNULL
(2)
a1a2table1.c1table1.c2b1b2table2.c1table2.c2
5555NULLNULLNULLNULL
5586NULLNULLNULLNULL
5537NULLNULLNULLNULL
23NULL73855
23NULL73855
4NULLNULLNULLNULLNULLNULLNULL
NULLNULLNULLNULL5555
NULLNULLNULLNULL1256
NULLNULLNULLNULL8888
NULLNULLNULLNULL3NULLNULL5
NULLNULLNULLNULL3NULLNULL5
(3)
a1a2c1c2b1b2
5555NULLNULL
5586NULLNULL
5537NULLNULL
23NULL738
23NULL738
4NULLNULLNULLNULLNULL
NULLNULLNULLNULL55
NULLNULLNULLNULL12
NULLNULLNULLNULL88
NULLNULLNULLNULL3NULL
NULLNULLNULLNULL3NULL

Какая из приведенных ниже таблиц является результатом рекурсивного запроса?

WITH RECURSIVE PX (Major, Minor, Qty) AS ((SELECT Major, Minor, Qty FROM PARTS WHERE PARTS.Major = ‘P1’) UNION ALL (SELECT PX.Major, PARTS.Minor, PX.Qty * PARTS.Qty FROM PX, PARTS where pp.Major = px.Minor)) SEARCH BREADTH FIRST BY Major, Minor SET ORDER_COLUMN SELECT Major, Minor, Qty FROM PX ORDER BY ORDER_COLUMN;?
(1)
MajorMinorQty
P1P22
P1P33
P1P36
P1P310
P1P42
P1P54
P1P524
P1P512
P1P540
P1P612
P1P66
P1P64
P1P620
(2)
MajorMinorQty
P1P22
P1P310
P1P36
P1P33
P1P42
P1P540
P1P512
P1P524
P1P54
P1P620
P1P64
P1P66
P1P612
(3)
MajorMinorQty
P1P22
P1P33
P1P42
P1P36
P1P54
P1P524
P1P612
P1P512
P1P66
P1P310
P1P64
P1P540
P1P620
Пусть V – это некоторое представление, допускающее операции обновления и определенное c разделом WITH GLOBAL CHECK OPTION. Предположим, что представление V определено над некоторым представлением V1, которое определено без раздела WITH CHECK OPTION. В каких из перечисленных ситуаций система не должна отвергать данную операцию обновления V?
(1) когда она не противоречит условию выборки запроса, на котором определено представление V
(2) когда она не противоречит условию выборки запроса, на котором определено представление V1
(3) когда она не противоречит условию выборки запроса, на котором определено представление V, и не противоречит условию выборки запроса, на котором определено представление V1, как если бы V2 было определено с разделом WITH GLOBAL CHECK OPTION
Пусть одновременно выполняются три транзакции: T1 = (IT1(c), ST1(c), DT1(c), COMMITT1), T2 = (ST2(c), UT2(c), ST2(c), COMMITT2), T3 = (ST3(c), COMMITT3). Какие из указанных ниже реальных последовательностей выполнения операций соответствуют уровню изоляции SERIALIZABLE?
(1) ST3(c), ST2(c), COMMITT3, UT2(c), ST2(c), COMMITT2, IT1(c), ST1(c), DT1(c), COMMITT1
(2) IT1(c), ST1(c), DT1(c), COMMITT1, ST2(c), ST3(c), COMMITT3, UT2(c), ST2(c), COMMITT2
(3) IT1(c), ST1(c), ST3(c), ST2(c), COMMITT3, UT2(c), ST2(c), COMMITT2, DT1(c), COMMITT1
Какая из приведенных ниже формулировок правильно соответствует запросу “выдать имена начальников отделов, в которых работает хотя бы один не программист”?
(1) SELECT DISTINCT DEPT -> DEPT_MNG -> EMP_NAME FROM ONLY (EMP);
(2) SELECT DISTINCT DEPT -> DEPT_MNG -> EMP_NAME FROM PROGRAMMER WHERE DEPT IN (SELECT DEPT FROM ONLY (EMP));
(3) SELECT DEPT_MNG -> EMP_NAME FROM DEPT WHERE DEPT IN (SELECT DEPT FROM ONLY (EMP));
Пусть имеется литерал 123E12. При выполнении какого из следующих операторов CAST будет зафиксирована ошибка?
(1) CAST 123E12 AS NUMERIC (8)
(2) CAST 123E12 AS CHARACTER (4)
(3) CAST 123E12 AS FLOAT (8)
Каким будет значение по умолчанию столбца, определенного без указания собственного значения по умолчанию и без ограничения NOT NULL, после отмены определения домена, на котором данный столбец был определен, если у домена было задано значение по умолчанию?
(1) NULL
(2) у столбца не будет значения по умолчанию
(3) останется значение по умолчанию домена
Пусть имеется таблица T со столбцами A, B и C. При каких условиях можно гарантировать, что в результате запроса SELECT * FROM T WHERE B = const всегда будет содержаться не более чем одна строка?
(1) при определении таблицы T столбец B был специфицирован как первичный ключ
(2) при определении таблицы T столбец B был специфицирован как возможный ключ
(3) таблица T содержит всего одну строку
Требуется сформулировать запрос “Найти ISBN всех книг, написанных не Дейтом, названия которых совпадают с названием какой-либо книги Дейта”. Какие из приведенных ниже формулировок являются правильными?
(1) 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’);
(2) 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;
(3) 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);
Какая из показанных ниже таблиц является результатом операции table1 RIGHT OUTER JOIN table2 ON a2=b1 AND a1<b2?
(1)
a1a2table1.c1table1.c2b1b2table2.c1table2.c2
NULLNULLNULLNULL5555
NULLNULLNULLNULL1256
23NULL73855
23NULL73855
NULLNULLNULLNULL8888
23NULL73NULLNULL5
23NULL73NULLNULL5
(2)
a1a2b1b2c1c2
NULLNULL5555
NULLNULL1256
233855
233855
NULLNULL8888
NULLNULL3NULLNULL5
NULLNULL3NULLNULL5
(3)
a1a2table1.c1table1.c2b1b2table2.c1table2.c2
NULLNULLNULLNULL5555
NULLNULLNULLNULL1256
23NULL73855
23NULL73855
NULLNULLNULLNULL8888
NULLNULLNULLNULL3NULLNULL5
NULLNULLNULLNULL3NULLNULL5

Какая из приведенных ниже таблиц является результатом рекурсивного запроса?

WITH RECURSIVE PX (Major, Minor, Qty) AS ((SELECT Major, Minor, Qty FROM PARTS WHERE PARTS.Major = ‘P1’) UNION ALL (SELECT PX.Major, PARTS.Minor, PX.Qty * PARTS.Qty FROM PX, PARTS where pp.Major = px.Minor)) SEARCH DEPTH FIRST BY Major, Minor SET ORDER_COLUMN SELECT Major, Minor, Qty FROM PX ORDER BY ORDER_COLUMN;
(1)
MajorMinorQty
P1P22
P1P33
P1P36
P1P310
P1P42
P1P524
P1P54
P1P512
P1P540
P1P612
P1P66
P1P620
P1P64
(2)
MajorMinorQty
P1P22
P1P310
P1P36
P1P33
P1P42
P1P540
P1P512
P1P54
P1P524
P1P64
P1P620
P1P66
P1P612
(3)
MajorMinorQty
P1P22
P1P33
P1P36
P1P310
P1P42
P1P54
P1P524
P1P512
P1P540
P1P612
P1P66
P1P64
P1P620
Чему соответствует имя псевдонима, вводимого в разделе REFERENCING определения триггера над таблицей T конструкцией NEW ROW?
(1) Текущей строке из числа строк, появляющихся в таблице T в результате выполнения операции, которая инициирует триггер
(2) Набору строк в исходном теле таблицы T, которые подвергались обновлению
(3) Содержимому таблицы T после выполнения операции, инициирующей триггер
Пусть одновременно выполняются три транзакции: T1 = (ST1(c), SPT1(spn1), IT1(c), SPT1(spn2), DT1(c), ST1(c), RBT1(spn2), ST1(c), RBT1(spn1), DT1(c), COMMITT1), T2 = (ST2(c), UT2(c), SPT2(spn2), DT2(c), ST2(c), RBT2(spn2), ST2(c), COMMITT2), T3 = (ST3(c), SPT3(spn3), UT3(c), RBT3(spn3), DT3(c), COMMITT3). Какие из указанных ниже реальных последовательностей выполнения операций соответствуют уровню изоляции SERIALIZABLE?
(1) ST1(c), SPT1(spn1), IT1(c), SPT1(spn2), DT1(c), ST1(c), RBT1(spn2), ST1(c), RBT1(spn1), ST2(c), UT2(c), SPT2(spn2), DT2(c), ST2(c), RBT2(spn2), ST3(c), SPT3(spn3), UT3(c), RBT3(spn3), ST2(c), COMMITT2, DT3(c), COMMITT3, DT1(c), COMMITT1
(2) ST1(c), ST2(c), ST3(c), SPT3(spn3), SPT1(spn1), UT2(c), SPT2(spn2), DT2(c), ST2(c), RBT2(spn2), IT1(c), SPT1(spn2), DT1(c), ST1(c), RBT1(spn2), ST1(c), RBT1(spn1), UT3(c), RBT3(spn3), DT3(c), COMMITT3, DT1(c), COMMITT1, ST2(c), COMMITT2
(3) ST1(c), SPT1(spn1), IT1(c), SPT1(spn2), DT1(c), ST1(c), RBT1(spn2), ST2(c), UT2(c), SPT2(spn2), DT2(c), ST2(c), RBT2(spn2), ST3(c), SPT3(spn3), UT3(c), RBT3(spn3), ST1(c), RBT1(spn1), DT1(c), COMMITT1, ST2(c), COMMITT2, DT3(c), COMMITT3
Пусть представление V’ c базисной типизированной таблицей R’ является непосредственным собственным подпредставлением представления V c базисной типизированной таблицей R. Какое из следующих утверждений является правильным?
(1) тип представления V’ должен являться непосредственным подтипом типа представления V, а таблица R’ должна являться непосредственной подтаблицей таблицы R
(2) тип представления V должен являться непосредственным супертипом типа представления V’, а таблица R должна являться супертаблицей таблицы R’
(3) тип представления V’ должен являться подтипом типа представления V, а таблица R’ должна являться подтаблицей таблицы R

Пусть имеется следующее определение домена:

CREATE DOMAIN TEST AS INTEGER DEFAULT 100 CHECK (VALUE > 0 AND VALUE != 150 AND VALUE < 200) CONSTRAINT (VALUE IS NOT NULL);

Пусть на этом домене определен столбец некоторой таблицы. Предположим, что в некоторый момент времени значениями данного столбца в строках таблицы являются значения {100, 120, 160}. Пусть после этого выполняется оператор

DROP DOMAIN TEST

Что произойдет при выполнении оператора?

(1) имеющиеся значения столбца не изменятся
(2) оператор будет отвергнут
(3) значение 100 изменится на значение NULL
Предположим, что в таблице объявлен возможный ключ со спецификацией MATCH PARTIAL, состоящий из n столбцов, для m из которых (m ≤ n) при определении столбца отсутствовала спецификация NOT NULL. На сколько строк таблицы, на которую ведет ссылка, может ссылаться одна строка ссылающейся таблицы?
(1) m + n
(2) m * n
(3) 2m

Сколько строк будет в результате операции

SELECT A FROM S GROUP BY A

если столбец A является внешним ключом таблицы S, ссылающимся на первичный ключ таблицы T

(1) столько, сколько строк в таблице T
(2) столько, сколько строк в таблице S
(3) столько, сколько строк в таблице T, или на одну строку больше
Требуется сформулировать запрос “Найти названия издательств, в которых Кристофер Дейт издал хотя бы одну книгу объемом меньше 300 страниц”. Какие из приведенных ниже формулировок являются правильными?
(1) 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);
(2) 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;
(3) 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);
Требуется сформулировать запрос “Найти названия книг, изданных Дейтом с двумя соавторами”. Какие из приведенных ниже формулировок являются правильными?
(1) SELECT TITLE FROM AUTHORS-BOOKS, BOOKS WHERE AUTHORS-BOOKS.ISBN = BOOKS.ISBN AND ‘Chris Date’ IN (SELECT AUTHOR_NAME FROM AUTHORS, AUTHORS-BOOKS1 WHERE AUTHORS.AUTHOR_ID = AUTHORS-BOOKS1.AUTHOR_ID AND AUTHORS-BOOKS1.ISBN = AUTHORS-BOOKS.ISBN) GROUP BY AUTHORS-BOOKS.ISBN, TITLE HAVING COUNT (*) = 3;
(2) SELECT TITLE FROM AUTHORS-BOOKS, BOOKS WHERE AUTHORS-BOOKS.ISBN = BOOKS.ISBN AND ‘Chris Date’ IN (SELECT AUTHOR_NAME FROM AUTHORS, AUTHORS-BOOKS1 WHERE AUTHORS.AUTHOR_ID = AUTHORS-BOOKS1.AUTHOR_ID AND AUTHORS-BOOKS1.ISBN = AUTHORS-BOOKS.ISBN) GROUP BY AUTHORS-BOOKS.ISBN HAVING COUNT (*) = 3;
(3) SELECT TITLE FROM AUTHORS, AUTHORS-BOOKS, BOOKS WHERE AUTHOR_NAME = ‘Chris Date’ AND AUTHORS.AUTHOR_ID = AUTHORS-BOOKS.AUTHOR_ID AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN AND (SELECT COUNT (*) FROM AUTHORS-BOOKS1 WHERE AUTHORS-BOOKS1.ISBN = AUTHORS-BOOKS.ISBN) = 3;
Какая из следующих последовательностей является монотонной?
(1) ‘a’, ‘b’, … ‘z’, ‘aa’, ‘ab’, …, ‘az’, …, ‘a..aa’, ‘a..ab’, …, ‘a..az’, …
(2) ‘a’, ‘b’, … ‘z’, ‘za’, ‘zb’, …, ‘zz’, …, ‘z..za’, ‘z..zb’, …, ‘z..zz’, …
(3) ‘a’, ‘ba’, ‘aba’, ‘baba’, ‘ababa’, …

Предположим, что в базе данных поддерживается таблица RDEMP, в которой с момента приема служащего на работу и вплоть до его увольнения фиксируется рейтинг служащего в его отделе по доходам, т.е. при каждой смене общей суммы дохода служащего, изменяющей его рейтинг, сохраняется временная метка этого события, размеры зарплаты и премиальных служащего, а также число служащих в данном отделе, получающих больший доход, и число служащих с меньшим доходом. Таблица RDEMP имеет следующую структуру:

EMP_NO
EVENT_TS
NEW_SAL
NEW_BONUS
NUMBER_LESS
NUMBER_MORE

Какие из приводимых ниже определений триггеров обеспечат требуемое наполнение этой таблицы?

(1) CREATE TRIGGER EMP_INSERT AFTER INSERT ON EMP REFERENCING NEW ROW AS NEW_EMP FOR EACH ROW INSERT INTO RDEMP ROW (NEW_EMP.EMP_NO, CURRENT_TIMESRAMP, NEW_EMP.EMP_SAL, NEW_EMP.EMP_BONUS, (SELECT COUNT (*) FROM EMP WHERE EMP.DEPT_NO = NEW_EMP.DEPT_NO AND EMP.EMP_SAL + COALESCE (EMP.EMP_BONUS, 0) < NEW_EMP.EMP_SAL + COALESCE (NEW_EMP.EMP_BONUS, 0)), (SELECT COUNT (*) FROM EMP WHERE EMP.DEPT_NO = NEW_EMP.DEPT_NO AND EMP.EMP_SAL + COALESCE (EMP.EMP_BONUS, 0) > NEW_EMP.EMP_SAL + COALESCE (NEW_EMP.EMP_BONUS, 0)), CREATE TRIGGER EMP_UPDATE AFTER UPDATE OF EMP_SAL, EMP_BONUS ON EMP REFERENCING NEW ROW AS NEW_EMP FOR EACH ROW WHEN (((SELECT COUNT (*) FROM EMP WHERE EMP.DEPT_NO = NEW_EMP.DEPT_NO AND EMP.EMP_SAL + COALESCE (EMP.EMP_BONUS, 0) < NEW_EMP.EMP_SAL + COALESCE (NEW_EMP.EMP_BONUS, 0)), SELECT COUNT (*) FROM EMP WHERE EMP.DEPT_NO = NEW_EMP.DEPT_NO AND EMP.EMP_SAL + COALESCE (EMP.EMP_BONUS, 0) > NEW_EMP.EMP_SAL + COALESCE (NEW_EMP.EMP_BONUS, 0))) <> (SELECT RDEMP.NUMBER_LESS, RDEMP.NUMBER_MORE FROM RDEMP.EVENT_TS = SELECT MAX (RDE.EVENT_TS) FROM RDEMP RDE WHERE RDE.EMP_NO = RDEMP.EMP_NO)) INSERT (NEW_EMP.EMP_NO, CURRENT_TIMESRAMP, NEW_EMP.EMP_SAL, NEW_EMP.EMP_BONUS, (SELECT COUNT (*) FROM EMP WHERE EMP.DEPT_NO = NEW_EMP.DEPT_NO AND EMP.EMP_SAL + COALESCE (EMP.EMP_BONUS, 0) < NEW_EMP.EMP_SAL + COALESCE (NEW_EMP.EMP_BONUS, 0)), (SELECT COUNT (*) FROM EMP WHERE EMP.DEPT_NO = NEW_EMP.DEPT_NO AND EMP.EMP_SAL + COALESCE (EMP.EMP_BONUS, 0) > NEW_EMP.EMP_SAL + COALESCE (NEW_EMP.EMP_BONUS, 0)); CREATE TRIGGER EMP_DELETE AFTER DELETE ON EMP REFERENCING OLD ROW AS OLD_EMP DELETE FROM RDEMP WHERE RDEMP.EMP_NO = OLD_EMP.EMP_NO;
(2) CREATE TRIGGER EMP_INSERT AFTER INSERT ON EMP REFERENCES NEW TABLE AS NEW_EMP INSERT (NEW_EMP.EMP_NO, CURRENT_TIMESRAMP, NEW_EMP.EMP_SAL, NEW_EMP.EMP_BONUS, (SELECT COUNT (*) FROM EMP WHERE EMP.DEPT_NO = NEW_EMP.DEPT_NO AND EMP.EMP_SAL + COALESCE (EMP.EMP_BONUS, 0) < NEW_EMP.EMP_SAL + COALESCE (NEW_EMP.EMP_BONUS, 0)), (SELECT COUNT (*) FROM EMP WHERE EMP.DEPT_NO = NEW_EMP.DEPT_NO AND EMP.EMP_SAL + COALESCE (EMP.EMP_BONUS, 0) > NEW_EMP.EMP_SAL + COALESCE (NEW_EMP.EMP_BONUS, 0)); CREATE TRIGGER EMP_UPDATE AFTER UPDATE OF EMP_SAL, EMP_BONUS ON EMP REFERENCING NEW TABLE AS NEW_EMP INSERT INTO RDEMP (SELECT NEW.EMP_NO, CURRENT_TIMESRAMP, NEW_EMP.EMP_SAL, NEW_EMP.EMP_BONUS, SELECT COUNT (*) FROM EMP WHERE EMP.DEPT_NO = NEW_EMP.DEPT_NO AND EMP.EMP_SAL + COALESCE (EMP.EMP_BONUS, 0) < NEW_EMP.EMP_SAL + COALESCE (NEW_EMP.EMP_BONUS, 0)), (SELECT NEW.EMP_NO, CURRENT_TIMESRAMP, NEW_EMP.EMP_SAL, NEW_EMP.EMP_BONUS, SELECT COUNT (*) FROM EMP WHERE EMP.DEPT_NO = NEW_EMP.DEPT_NO AND EMP.EMP_SAL + COALESCE (EMP.EMP_BONUS, 0) < NEW_EMP.EMP_SAL + COALESCE (NEW_EMP.EMP_BONUS, 0)) FROM NEW_EMP WHERE ((SELECT COUNT (*) FROM EMP WHERE EMP.DEPT_NO = NEW_EMP.DEPT_NO AND EMP.EMP_SAL + COALESCE (EMP.EMP_BONUS, 0) < NEW_EMP.EMP_SAL + COALESCE (NEW_EMP.EMP_BONUS, 0)), SELECT COUNT (*) FROM EMP WHERE EMP.DEPT_NO = NEW_EMP.DEPT_NO AND EMP.EMP_SAL + COALESCE (EMP.EMP_BONUS, 0) > NEW_EMP.EMP_SAL + COALESCE (NEW_EMP.EMP_BONUS, 0))) <> (SELECT RDEMP.NUMBER_LESS, RDEMP.NUMBER_MORE FROM RDEMP.EVENT_TS = SELECT MAX (RDE.EVENT_TS) FROM RDEMP RDE WHERE RDE.EMP_NO = RDEMP.EMP_NO)); CREATE TRIGGER EMP_DELETE AFTER DELETE ON EMP REFERENCING OLD TABLE AS OLD_EMP DELETE FROM RDEMP WHERE RDEMP.EMP_NO IN (SELECT EMP_NO FROM OLD_EMP);
(3) CREATE TRIGGER EMP_INSERT AFTER INSERT ON EMP FOR EACH ROW REFERENCING NEW ROW AS NEW_EMP INSERT (NEW_EMP.EMP_NO, CURRENT_TIMESRAMP, NEW_EMP.EMP_SAL, NEW_EMP.EMP_BONUS, (SELECT COUNT (*) FROM EMP WHERE EMP.DEPT_NO = NEW_EMP.DEPT_NO AND EMP.EMP_SAL + COALESCE (EMP.EMP_BONUS, 0) < NEW_EMP.EMP_SAL + COALESCE (NEW_EMP.EMP_BONUS, 0)), (SELECT COUNT (*) FROM EMP WHERE EMP.DEPT_NO = NEW_EMP.DEPT_NO AND EMP.EMP_SAL + COALESCE (EMP.EMP_BONUS, 0) > NEW_EMP.EMP_SAL + COALESCE (NEW_EMP.EMP_BONUS, 0)); CREATE TRIGGER EMP_UPDATE AFTER UPDATE OF EMP_SAL, EMP_BONUS ON EMP FOR EACH ROW REFERENCING NEW ROW AS NEW_EMP INSERT INTO RDEMP (SELECT NEW.EMP_NO, CURRENT_TIMESRAMP, NEW_EMP.EMP_SAL, NEW_EMP.EMP_BONUS, SELECT COUNT (*) FROM EMP WHERE EMP.DEPT_NO = NEW_EMP.DEPT_NO AND EMP.EMP_SAL + COALESCE (EMP.EMP_BONUS, 0) < NEW_EMP.EMP_SAL + COALESCE (NEW_EMP.EMP_BONUS, 0)), (SELECT NEW.EMP_NO, CURRENT_TIMESRAMP, NEW_EMP.EMP_SAL, NEW_EMP.EMP_BONUS, SELECT COUNT (*) FROM EMP WHERE EMP.DEPT_NO = NEW_EMP.DEPT_NO AND EMP.EMP_SAL + COALESCE (EMP.EMP_BONUS, 0) < NEW_EMP.EMP_SAL + COALESCE (NEW_EMP.EMP_BONUS, 0)) FROM NEW_EMP WHERE ((SELECT COUNT (*) FROM EMP WHERE EMP.DEPT_NO = NEW_EMP.DEPT_NO AND EMP.EMP_SAL + COALESCE (EMP.EMP_BONUS, 0) < NEW_EMP.EMP_SAL + COALESCE (NEW_EMP.EMP_BONUS, 0)), SELECT COUNT (*) FROM EMP WHERE EMP.DEPT_NO = NEW_EMP.DEPT_NO AND EMP.EMP_SAL + COALESCE (EMP.EMP_BONUS, 0) > NEW_EMP.EMP_SAL + COALESCE (NEW_EMP.EMP_BONUS, 0))) <> (SELECT RDEMP.NUMBER_LESS, RDEMP.NUMBER_MORE FROM RDEMP.EVENT_TS = SELECT MAX (RDE.EVENT_TS) FROM RDEMP RDE WHERE RDE.EMP_NO = RDEMP.EMP_NO)); CREATE TRIGGER EMP_DELETE AFTER DELETE ON EMP FOR EACH ROW REFERENCING OLD TABLE AS OLD_EMP DELETE FROM RDEMP WHERE RDEMP.EMP_NO IN (SELECT EMP_NO FROM OLD_EMP);
При каких уровнях изоляции транзакции в ней не допускается чтение объекта базы данных, изменявшегося еще не завершенной транзакцией?
(1) READ COMMITTED
(2) REPEATABLE READ
(3) READ COMMITTED, REPEATABLE READ и SERIALIZABLE
Для определения всех разновидностей представлений используется один и тот же оператор CREATE VIEW. Каким образом, глядя на определение представления, можно точно сказать, что оно является допустимым определением типизированного представления?
(1) присутствует раздел OF
(2) присутствуют разделы OF и UNDER
(3) присутствует раздел UNDER