Что представляют собой значения типа 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
a1 | a2 | c1 | c2 |
5 | 5 | 5 | 5 |
5 | 5 | 8 | 6 |
5 | 5 | 3 | 7 |
2 | 3 | NULL | 7 |
4 | NULL | NULL | NULL |
table2
b1 | b2 | c1 | c2 |
5 | 5 | 5 | 5 |
1 | 2 | 5 | 6 |
3 | 8 | 5 | 5 |
3 | 8 | 5 | 5 |
8 | 8 | 8 | 8 |
3 | NULL | NULL | 5 |
3 | NULL | NULL | 5 |
Требуется сформулировать запрос "Для каждого издательства выдать название издательства, его адрес, среднюю и максимальную цены издававшихся книг и общее число издававшихся авторов". Какие из приведенных ниже формулировок являются правильными?
(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_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 |
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 | 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 |
20000.00 | NULL | 2 | 1960 | 0 | 0 |
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_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 |
16000.00 | 14000.00 | NULL | 1955 | 0 | 1 |
17000.00 | NULL | NULL | NULL | 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 |
15000.00 | 13000.00 | 1 | 1950 | 0 | 0 |
16000.00 | 14000.00 | 1 | 1955 | 0 | 0 |
17000.00 | NULL | 1 | NULL | 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 |
Чему соответствует имя псевдонима, вводимого в разделе 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_BDATE | EMP_BONUS | MIN_SAL | GBD | GBON |
---|
NULL | NULL | 13000.00 | 1 | 1 |
1950 | NULL | 13000.00 | 0 | 1 |
1955 | NULL | 16000.00 | 0 | 1 |
1960 | NULL | 14000.00 | 0 | 1 |
1970 | NULL | 17000.00 | 0 | 1 |
NULL | NULL | 15000.00 | 0 | 1 |
1950 | 13000.00 | 15000.00 | 0 | 0 |
1950 | 15000.00 | 16000.00 | 0 | 0 |
1950 | 17000.00 | 18000.00 | 0 | 0 |
1950 | 12000.00 | 13000.00 | 0 | 0 |
1955 | 14000.00 | 16000.00 | 0 | 0 |
1955 | 17000.00 | 18000.00 | 0 | 0 |
1960 | 13000.00 | 16000.00 | 0 | 0 |
1960 | 20000.00 | 22000.00 | 0 | 0 |
1970 | 16000.00 | 17000.00 | 0 | 0 |
NULL | 14000.00 | 15000.00 | 0 | 0 |
NULL | 18000.00 | 19000.00 | 0 | 0 |
(2)
EMP_BDATE | EMP_BONUS | MIN_SAL | GBD | GBON |
---|
NULL | NULL | 13000.00 | 1 | 1 |
1950 | NULL | 13000.00 | 0 | 1 |
1955 | NULL | 16000.00 | 0 | 1 |
1960 | NULL | 14000.00 | 0 | 1 |
1970 | NULL | 17000.00 | 0 | 1 |
1950 | 13000.00 | 15000.00 | 0 | 0 |
1950 | 15000.00 | 16000.00 | 0 | 0 |
1950 | 17000.00 | 18000.00 | 0 | 0 |
1950 | 12000.00 | 13000.00 | 0 | 0 |
1955 | 14000.00 | 16000.00 | 0 | 0 |
1955 | 17000.00 | 18000.00 | 0 | 0 |
1960 | 13000.00 | 16000.00 | 0 | 0 |
1960 | 20000.00 | 22000.00 | 0 | 0 |
1970 | 16000.00 | 17000.00 | 0 | 0 |
(3)
EMP_BDATE | EMP_BONUS | MIN_SAL | GBD | GBON |
---|
NULL | NULL | 13000.00 | 1 | 1 |
1950 | NULL | 13000.00 | 0 | 1 |
1955 | NULL | 16000.00 | 0 | 1 |
1960 | NULL | 14000.00 | 0 | 1 |
1970 | NULL | 17000.00 | 0 | 1 |
NULL | NULL | 15000.00 | 0 | 1 |
1950 | 13000.00 | 15000.00 | 0 | 0 |
1950 | 15000.00 | 16000.00 | 0 | 0 |
1950 | 17000.00 | 18000.00 | 0 | 0 |
1950 | 12000.00 | 13000.00 | 0 | 0 |
1950 | NULL | 14000.00 | 0 | 0 |
1955 | 14000.00 | 16000.00 | 0 | 0 |
1955 | 17000.00 | 18000.00 | 0 | 0 |
1960 | NULL | 14000.00 | 0 | 0 |
1960 | 13000.00 | 16000.00 | 0 | 0 |
1960 | 20000.00 | 22000.00 | 0 | 0 |
1960 | NULL | 14000.00 | 0 | 0 |
1970 | 16000.00 | 17000.00 | 0 | 0 |
NULL | 14000.00 | 15000.00 | 0 | 0 |
NULL | 18000.00 | 19000.00 | 0 | 0 |
NULL | NULL | 17000.00 | 0 | 0 |
Предположим, что в базе данных поддерживаются две специальные “аудиторские” таблицы AUDIT1
и AUDIT2
следующей структуры:
AUDIT1EMP_NO |
EVENT_TS |
OLD_SAL |
OLD_BONUS |
NEW_SAL |
NEW_BONUS |
AUDIT2DEPT_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
, в мультимножестве M2
– m
дубликатов a
, в мультимножестве M3
– k
дубликатов, а в мультимножестве M4
– p
дубликатов. Сколько дубликатов элемента 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_SAL | EMP_BONUS | MAX_BDATE | GBON |
---|
NULL | NULL | NULL | 1 |
13000.00 | NULL | 1950 | 1 |
14000.00 | NULL | 1960 | 1 |
15000.00 | NULL | NULL | 1 |
16000.00 | NULL | 1970 | 1 |
17000.00 | NULL | NULL | 1 |
18000.00 | NULL | 1955 | 1 |
19000.00 | NULL | NULL | 1 |
20000.00 | NULL | 1960 | 1 |
22000.00 | NULL | 1960 | 1 |
NULL | 13000.00 | 1960 | 0 |
NULL | 14000.00 | NULL | 0 |
NULL | 15000.00 | 1950 | 0 |
NULL | 16000.00 | 1970 | 0 |
NULL | 17000.00 | 1955 | 0 |
NULL | 18000.00 | NULL | 0 |
NULL | 20000.00 | 1960 | 0 |
13000.00 | 12000.00 | 1950 | 0 |
15000.00 | 13000.00 | 1950 | 0 |
15000.00 | 14000.00 | NULL | 0 |
16000.00 | 14000.00 | 1955 | 0 |
16000.00 | 13000.00 | 1960 | 0 |
16000.00 | 15000.00 | 1950 | 0 |
17000.00 | 16000.00 | 1970 | 0 |
18000.00 | 17000.00 | 1955 | 0 |
19000.00 | 18000.00 | NULL | 0 |
22000.00 | 20000.00 | 1960 | 0 |
(2)
EMP_SAL | EMP_BONUS | MAX_BDATE | GBON |
---|
NULL | NULL | NULL | 1 |
13000.00 | NULL | 1950 | 1 |
14000.00 | NULL | 1960 | 1 |
15000.00 | NULL | NULL | 1 |
16000.00 | NULL | 1970 | 1 |
17000.00 | NULL | NULL | 1 |
18000.00 | NULL | 1955 | 1 |
19000.00 | NULL | NULL | 1 |
20000.00 | NULL | 1960 | 1 |
22000.00 | NULL | 1960 | 1 |
NULL | 13000.00 | 1960 | 0 |
NULL | 15000.00 | 1950 | 0 |
NULL | 16000.00 | 1970 | 0 |
NULL | 17000.00 | 1955 | 0 |
NULL | 20000.00 | 1960 | 0 |
13000.00 | 12000.00 | 1950 | 0 |
15000.00 | 13000.00 | 1950 | 0 |
16000.00 | 14000.00 | 1955 | 0 |
16000.00 | 13000.00 | 1960 | 0 |
16000.00 | 15000.00 | 1950 | 0 |
17000.00 | 16000.00 | 1970 | 0 |
18000.00 | 17000.00 | 1955 | 0 |
22000.00 | 20000.00 | 1960 | 0 |
(3)
EMP_SAL | EMP_BONUS | MAX_BDATE | GBON |
---|
NULL | NULL | NULL | 1 |
13000.00 | NULL | 1950 | 1 |
14000.00 | NULL | 1960 | 1 |
15000.00 | NULL | NULL | 1 |
16000.00 | NULL | 1970 | 1 |
17000.00 | NULL | NULL | 1 |
18000.00 | NULL | 1955 | 1 |
19000.00 | NULL | NULL | 1 |
20000.00 | NULL | 1960 | 1 |
22000.00 | NULL | 1960 | 1 |
NULL | 13000.00 | 1960 | 0 |
NULL | 14000.00 | NULL | 0 |
NULL | 15000.00 | 1950 | 0 |
NULL | 16000.00 | 1970 | 0 |
NULL | 17000.00 | 1955 | 0 |
NULL | 18000.00 | NULL | 0 |
NULL | 20000.00 | 1960 | 0 |
13000.00 | 12000.00 | 1950 | 0 |
14000.00 | NULL | 1960 | 0 |
15000.00 | 13000.00 | 1950 | 0 |
15000.00 | 14000.00 | NULL | 0 |
16000.00 | 14000.00 | 1955 | 0 |
16000.00 | 13000.00 | 1960 | 0 |
16000.00 | 15000.00 | 1950 | 0 |
17000.00 | NULL | NULL | 0 |
17000.00 | 16000.00 | 1970 | 0 |
18000.00 | 17000.00 | 1955 | 0 |
19000.00 | 18000.00 | NULL | 0 |
22000.00 | 20000.00 | 1960 | 0 |
Пусть имеется пустая таблица EMP_MNGS
с заголовком
Какая из следующих таблиц 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_MNGSEMP_NO | DEPT_MNG | PRO_MNG |
---|
2440 | 2448 | 2440 |
2441 | 2448 | 2446 |
2442 | 2448 | 2442 |
2452 | 2448 | 2446 |
2453 | 2448 | 2456 |
2444 | 2444 | 2440 |
2445 | 2444 | 2442 |
2446 | 2444 | 2446 |
2447 | 2444 | 2440 |
2448 | 2456 | 2448 |
2450 | 2456 | 2446 |
(2)
EMP_MNGSEMP_NO | DEPT_MNG | PRO_MNG |
---|
2440 | 2448 | 2440 |
2441 | 2448 | 2446 |
2442 | 2448 | 2442 |
2443 | 2448 | NULL |
2452 | 2448 | 2446 |
2453 | 2448 | 2456 |
2444 | 2444 | 2440 |
2445 | 2444 | 2442 |
2446 | 2444 | 2446 |
2447 | 2444 | 2440 |
2448 | 2456 | 2448 |
2449 | 2456 | NULL |
2450 | 2456 | 2446 |
2454 | NULL | 2442 |
2455 | NULL | 2448 |
2456 | NULL | 2456 |
(3)
EMP_MNGSEMP_NO | DEPT_MNG | PRO_MNG |
---|
2440 | 2448 | 2440 |
2441 | 2448 | 2446 |
2442 | 2448 | 2442 |
2443 | 2448 | NULL |
2452 | 2448 | 2446 |
2453 | 2448 | 2456 |
2444 | 2444 | 2440 |
2445 | 2444 | 2442 |
2446 | 2444 | 2446 |
2447 | 2444 | 2440 |
2454 | NULL | 2442 |
2455 | NULL | 2448 |
2456 | NULL | 2456 |
Пусть в некоторой транзакции выполняются операции
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
, в мультимножестве M2
– m
дубликатов a
, а в мультимножестве M3
– k
дубликатов. Сколько дубликатов элемента 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)
a1 | a2 | c1 | c2 | b1 | b2 |
---|
5 | 5 | 5 | 5 | 5 | 5 |
5 | 5 | 5 | 5 | 3 | 8 |
5 | 5 | 5 | 5 | 3 | 8 |
5 | 5 | 5 | 5 | 3 | NULL |
5 | 5 | 5 | 5 | 3 | NULL |
5 | 5 | 8 | 6 | NULL | NULL |
5 | 5 | 3 | 7 | NULL | NULL |
2 | 3 | NULL | 7 | NULL | NULL |
4 | NULL | NULL | NULL | NULL | NULL |
(2)
a1 | a2 | c1 | c2 | b1 | b2 |
---|
5 | 5 | 5 | 5 | 5 | 5 |
5 | 5 | 5 | 5 | 3 | 8 |
5 | 5 | 5 | 5 | 3 | 8 |
5 | 5 | 8 | 6 | NULL | NULL |
5 | 5 | 3 | 7 | NULL | NULL |
2 | 3 | NULL | 7 | NULL | NULL |
4 | NULL | NULL | NULL | NULL | NULL |
(3)
a1 | a2 | table1.c1 | table1.c2 | b1 | b2 | table2.c1 | table2.c2 |
---|
5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 |
5 | 5 | 5 | 5 | 3 | 8 | 5 | 5 |
5 | 5 | 5 | 5 | 3 | 8 | 5 | 5 |
5 | 5 | 8 | 6 | NULL | NULL | NULL | NULL |
5 | 5 | 3 | 7 | NULL | NULL | NULL | NULL |
2 | 3 | NULL | 7 | NULL | NULL | NULL | NULL |
4 | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
Какая из показанных ниже таблиц является результатом запроса?
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_BONUS | EMP_DEPT | MIN_DDATE | GBON | GDN |
---|
NULL | NULL | NULL | 1 | 1 |
13000.00 | NULL | 1950 | 0 | 1 |
14000.00 | NULL | NULL | 0 | 1 |
15000.00 | NULL | 1950 | 0 | 1 |
16000.00 | NULL | 1970 | 0 | 1 |
17000.00 | NULL | 1950 | 0 | 1 |
18000.00 | NULL | NULL | 0 | 1 |
20000.00 | NULL | 1960 | 0 | 1 |
NULL | NULL | NULL | 0 | 1 |
13000.00 | 1 | 1950 | 0 | 0 |
14000.00 | 1 | NULL | 0 | 0 |
14000.00 | NULL | 1950 | 0 | 0 |
15000.00 | 2 | 1950 | 0 | 0 |
16000.00 | 2 | 1970 | 0 | 0 |
17000.00 | 3 | 1950 | 0 | 0 |
18000.00 | NULL | NULL | 0 | 0 |
20000.00 | 3 | 1960 | 0 | 0 |
NULL | 1 | NULL | 0 | 0 |
NULL | 2 | 1960 | 0 | 0 |
NULL | NULL | 1950 | 0 | 0 |
(2)
EMP_BONUS | EMP_DEPT | MIN_DDATE | GBON | GDN |
---|
NULL | NULL | NULL | 1 | 1 |
13000.00 | NULL | 1950 | 0 | 1 |
14000.00 | NULL | NULL | 0 | 1 |
15000.00 | NULL | 1950 | 0 | 1 |
16000.00 | NULL | 1970 | 0 | 1 |
17000.00 | NULL | 1950 | 0 | 1 |
18000.00 | NULL | NULL | 0 | 1 |
20000.00 | NULL | 1960 | 0 | 1 |
13000.00 | 1 | 1950 | 0 | 0 |
14000.00 | 1 | NULL | 0 | 0 |
14000.00 | NULL | 1950 | 0 | 0 |
15000.00 | 2 | 1950 | 0 | 0 |
16000.00 | 2 | 1970 | 0 | 0 |
17000.00 | 3 | 1950 | 0 | 0 |
20000.00 | 3 | 1960 | 0 | 0 |
NULL | 1 | NULL | 0 | 0 |
NULL | 2 | 1960 | 0 | 0 |
NULL | NULL | 1950 | 0 | 0 |
(3)
EMP_BONUS | EMP_DEPT | MIN_DDATE | GBON | GDN |
---|
NULL | NULL | NULL | 1 | 1 |
13000.00 | NULL | 1950 | 0 | 1 |
14000.00 | NULL | NULL | 0 | 1 |
15000.00 | NULL | 1950 | 0 | 1 |
16000.00 | NULL | 1970 | 0 | 1 |
17000.00 | NULL | 1950 | 0 | 1 |
18000.00 | NULL | NULL | 0 | 1 |
20000.00 | NULL | 1960 | 0 | 1 |
NULL | NULL | NULL | 0 | 1 |
13000.00 | 1 | 1950 | 0 | 0 |
14000.00 | 1 | NULL | 0 | 0 |
14000.00 | NULL | 1950 | 0 | 0 |
14000.00 | NULL | 1955 | 0 | 0 |
15000.00 | 2 | 1950 | 0 | 0 |
15000.00 | NULL | 1960 | 0 | 0 |
16000.00 | 2 | 1970 | 0 | 0 |
17000.00 | 3 | 1950 | 0 | 0 |
18000.00 | 2 | 1960 | 0 | 0 |
18000.00 | NULL | NULL | 0 | 0 |
20000.00 | 3 | 1960 | 0 | 0 |
NULL | 1 | NULL | 0 | 0 |
NULL | 2 | 1960 | 0 | 0 |
NULL | NULL | 1950 | 0 | 0 |
Пусть имеются следующие два определения представлений:
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_EMPEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2440 | 1 | 177 | 1950 | 15000.00 | 13000.00 |
2442 | 1 | 208 | 1960 | 14000.00 | NULL |
2452 | 1 | 155 | NULL | 15000.00 | 14000.00 |
2444 | 2 | 177 | 1970 | 17000.00 | 16000.00 |
2445 | 2 | 208 | 1950 | 16000.00 | 15000.00 |
2446 | 2 | 155 | 1970 | 17000.00 | 16000.00 |
2448 | 3 | 101 | 1955 | 18000.00 | 17000.00 |
2449 | 3 | NULL | 1950 | 18000.00 | 17000.00 |
LA_LA_EMPEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2442 | 1 | 208 | 1960 | 14000.00 | NULL |
2445 | 2 | 208 | 1950 | 16000.00 | 15000.00 |
Пусть над представлением LA_LA_EMP
выполняется операция
UPDATE LA_LA_EMP SET EMP_SAL = EMP_SAL + 10000.00
Какие из приведенных ниже таблиц соответствуют материализованным представлениям LA_LA_EMP
и LA_EMP
после выполнения этой операции?
(1)
LA_EMPEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2440 | 1 | 177 | 1950 | 15000.00 | 13000.00 |
2442 | 1 | 208 | 1960 | 24000.00 | NULL |
2452 | 1 | 155 | NULL | 15000.00 | 14000.00 |
2444 | 2 | 177 | 1970 | 17000.00 | 16000.00 |
2445 | 2 | 208 | 1950 | 26000.00 | 15000.00 |
2446 | 2 | 155 | 1970 | 17000.00 | 16000.00 |
2448 | 3 | 101 | 1955 | 18000.00 | 17000.00 |
2449 | 3 | NULL | 1950 | 18000.00 | 17000.00 |
LA_LA_EMPEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2442 | 1 | 208 | 1960 | 24000.00 | NULL |
2445 | 2 | 208 | 1950 | 26000.00 | 15000.00 |
(2)
LA_EMPEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2440 | 1 | 177 | 1950 | 15000.00 | 13000.00 |
2441 | 1 | 155 | 1955 | 16000.00 | 14000.00 |
2443 | 1 | NULL | 1960 | 16000.00 | 13000.00 |
2452 | 1 | 155 | NULL | 15000.00 | 14000.00 |
2453 | 1 | 234 | NULL | 17000.00 | NULL |
2444 | 2 | 177 | 1970 | 17000.00 | 16000.00 |
2446 | 2 | 155 | 1970 | 17000.00 | 16000.00 |
2448 | 3 | 101 | 1955 | 18000.00 | 17000.00 |
2449 | 3 | NULL | 1950 | 18000.00 | 17000.00 |
LA_LA_EMPEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2440 | 1 | 177 | 1950 | 15000.00 | 13000.00 |
2452 | 1 | 155 | NULL | 15000.00 | 14000.00 |
(3)
LA_EMPEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2440 | 1 | 177 | 1950 | 15000.00 | 13000.00 |
2442 | 1 | 208 | 1960 | 14000.00 | NULL |
2452 | 1 | 155 | NULL | 15000.00 | 14000.00 |
2444 | 2 | 177 | 1970 | 17000.00 | 16000.00 |
2445 | 2 | 208 | 1950 | 16000.00 | 15000.00 |
2446 | 2 | 155 | 1970 | 17000.00 | 16000.00 |
2448 | 3 | 101 | 1955 | 18000.00 | 17000.00 |
2449 | 3 | NULL | 1950 | 18000.00 | 17000.00 |
LA_LA_EMPEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2442 | 1 | 208 | 1960 | 14000.00 | NULL |
2445 | 2 | 208 | 1950 | 16000.00 | 15000.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;
Пусть имеется следующее дерево:
Какой из следующих обходов этого дерева является обходом в ширину?
(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
a1 | a2 | c1 | c2 |
5 | 5 | 5 | 5 |
5 | 5 | 8 | 6 |
5 | 5 | 3 | 7 |
2 | 3 | NULL | 7 |
4 | NULL | NULL | NULL |
table2
b1 | b2 | c1 | c2 |
5 | 5 | 5 | 5 |
1 | 2 | 5 | 6 |
3 | 8 | 5 | 5 |
3 | 8 | 5 | 5 |
8 | 8 | 8 | 8 |
3 | NULL | NULL | 5 |
3 | NULL | NULL | 5 |
Требуется сформулировать запрос "Найти названия всех издательств, в которых было издано больше пяти книг Дейта". Какие из приведенных ниже формулировок являются правильными?
(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;
Пусть имеется следующее дерево:
Какой из следующих обходов этого дерева является обходом в ширину?
(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)
EMPEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2440 | 1 | 177 | 1950 | 15000.00 | 13000.00 |
2441 | 1 | 155 | 1955 | 16000.00 | 14000.00 |
2442 | 1 | 208 | 1960 | 14000.00 | NULL |
2443 | 1 | NULL | 1960 | 16000.00 | 13000.00 |
2452 | 1 | 155 | NULL | 15000.00 | 14000.00 |
2453 | 1 | 234 | NULL | 17000.00 | NULL |
2444 | 2 | 177 | 1970 | 17000.00 | 16000.00 |
2445 | 2 | 208 | 1950 | 16000.00 | 15000.00 |
2446 | 2 | 155 | 1970 | 17000.00 | 16000.00 |
2447 | 2 | 177 | 1960 | 20000.00 | NULL |
2448 | 3 | 101 | 1955 | 18000.00 | 17000.00 |
2449 | 3 | NULL | 1950 | 18000.00 | 17000.00 |
2450 | 3 | 234 | 1960 | 22000.00 | 20000.00 |
2451 | 3 | 155 | 1960 | 16500.00 | 20000.00 |
2454 | NULL | 208 | 1950 | 13000.00 | 12000.00 |
2455 | NULL | 101 | 1950 | 14000.00 | 22000.00 |
2456 | NULL | 234 | NULL | 19000.00 | 18000.00 |
(2)
EMPEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2440 | 1 | 177 | 1950 | 15000.00 | 13000.00 |
2441 | 1 | 155 | 1955 | 17500.00 | 14000.00 |
2442 | 1 | 208 | 1960 | 14000.00 | NULL |
2443 | 1 | NULL | 1960 | 16000.00 | 13000.00 |
2452 | 1 | 155 | NULL | 17500.00 | 14000.00 |
2453 | 1 | 234 | NULL | 17000.00 | NULL |
2444 | 2 | 177 | 1970 | 17000.00 | 16000.00 |
2445 | 2 | 208 | 1950 | 16000.00 | 15000.00 |
2446 | 2 | 155 | 1970 | 16500.00 | 16000.00 |
2447 | 2 | 177 | 1960 | 20000.00 | NULL |
2448 | 3 | 101 | 1955 | 18000.00 | 17000.00 |
2449 | 3 | NULL | 1950 | 18000.00 | 17000.00 |
2450 | 3 | 234 | 1960 | 22000.00 | 20000.00 |
2451 | 3 | 155 | 1960 | 18500.00 | 20000.00 |
2454 | NULL | 208 | 1950 | 13000.00 | 12000.00 |
2455 | NULL | 101 | 1950 | 14000.00 | 22000.00 |
(3)
EMPEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2451 | 3 | 155 | 1960 | 18500.00 | 20000.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)))
?
Предположим, что в таблице объявлен возможный ключ, состоящий из n
столбцов, для m
из которых (m ≤ n)
при определении столбца отсутствовала спецификация NOT NULL
. В скольких строках таблицы столбцы возможного ключа смогут содержать неопределенные значения?
(1) m + n
(2) m * n
(3) 2m – 1
Пусть имеются три мультимножества M1
, M2
и M3
, содержащие общий элемент a
, причем в мультимножестве M1
содержится n
дубликатов a, в мультимножестве M2
– m
дубликатов a
, а в мультимножестве M3
– k
дубликатов. Сколько дубликатов элемента 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_BONUS | EMP_DEPT | MIN_DDATE | GBON | GDN |
---|
NULL | NULL | NULL | 1 | 1 |
13000.00 | NULL | 1950 | 0 | 1 |
14000.00 | NULL | NULL | 0 | 1 |
15000.00 | NULL | 1950 | 0 | 1 |
16000.00 | NULL | 1970 | 0 | 1 |
17000.00 | NULL | 1950 | 0 | 1 |
18000.00 | NULL | NULL | 0 | 1 |
20000.00 | NULL | 1960 | 0 | 1 |
NULL | NULL | NULL | 0 | 1 |
13000.00 | 1 | 1950 | 0 | 0 |
14000.00 | 1 | NULL | 0 | 0 |
14000.00 | NULL | 1950 | 0 | 0 |
15000.00 | 2 | 1950 | 0 | 0 |
16000.00 | 2 | 1970 | 0 | 0 |
17000.00 | 3 | 1950 | 0 | 0 |
18000.00 | NULL | NULL | 0 | 0 |
20000.00 | 3 | 1960 | 0 | 0 |
NULL | 1 | NULL | 0 | 0 |
NULL | 2 | 1960 | 0 | 0 |
NULL | NULL | 1950 | 0 | 0 |
NULL | 1 | NULL | 1 | 0 |
NULL | 2 | 1950 | 1 | 0 |
NULL | 3 | 1955 | 1 | 0 |
NULL | NULL | NULL | 1 | 0 |
(2)
EMP_BONUS | EMP_DEPT | MIN_DDATE | GBON | GDN |
---|
NULL | NULL | NULL | 1 | 1 |
13000.00 | NULL | 1950 | 0 | 1 |
14000.00 | NULL | NULL | 0 | 1 |
15000.00 | NULL | 1950 | 0 | 1 |
16000.00 | NULL | 1970 | 0 | 1 |
17000.00 | NULL | 1950 | 0 | 1 |
18000.00 | NULL | NULL | 0 | 1 |
20000.00 | NULL | 1960 | 0 | 1 |
13000.00 | 1 | 1950 | 0 | 0 |
14000.00 | 1 | NULL | 0 | 0 |
14000.00 | NULL | 1950 | 0 | 0 |
15000.00 | 2 | 1950 | 0 | 0 |
16000.00 | 2 | 1970 | 0 | 0 |
17000.00 | 3 | 1950 | 0 | 0 |
20000.00 | 3 | 1960 | 0 | 0 |
NULL | 1 | NULL | 0 | 0 |
NULL | 2 | 1960 | 0 | 0 |
NULL | NULL | 1950 | 0 | 0 |
NULL | 2 | 1950 | 1 | 0 |
NULL | 3 | 1955 | 1 | 0 |
(3)
EMP_BONUS | EMP_DEPT | MIN_DDATE | GBON | GDN |
---|
NULL | NULL | NULL | 1 | 1 |
13000.00 | NULL | 1950 | 0 | 1 |
14000.00 | NULL | NULL | 0 | 1 |
15000.00 | NULL | 1950 | 0 | 1 |
16000.00 | NULL | 1970 | 0 | 1 |
17000.00 | NULL | 1950 | 0 | 1 |
18000.00 | NULL | NULL | 0 | 1 |
20000.00 | NULL | 1960 | 0 | 1 |
13000.00 | 1 | 1950 | 0 | 0 |
14000.00 | 1 | NULL | 0 | 0 |
15000.00 | 2 | 1950 | 0 | 0 |
16000.00 | 2 | 1970 | 0 | 0 |
17000.00 | 3 | 1950 | 0 | 0 |
20000.00 | 3 | 1960 | 0 | 0 |
NULL | 2 | 1960 | 0 | 0 |
NULL | 2 | 1950 | 1 | 0 |
NULL | 3 | 1955 | 1 | 0 |
Предположим, что в базе данных поддерживаются две отдельные таблицы 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);
Пусть имеется следующее дерево:
Какой из следующих обходов этого дерева является обходом в глубину?
(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_DEPTEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2442 | 1 | 208 | 1960 | 14000.00 | NULL |
2444 | 2 | 177 | 1970 | 17000.00 | 16000.00 |
2445 | 2 | 208 | 1950 | 16000.00 | 15000.00 |
2447 | 2 | 177 | 1960 | 20000.00 | NULL |
2448 | 3 | 101 | 1955 | 18000.00 | 17000.00 |
2450 | 3 | 234 | 1960 | 22000.00 | 20000.00 |
2451 | 3 | 155 | 1960 | 22000.00 | 20000.00 |
RICH_EMPEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2447 | 2 | 177 | 1960 | 20000.00 | NULL |
2450 | 3 | 234 | 1960 | 22000.00 | 20000.00 |
2451 | 3 | 155 | 1960 | 22000.00 | 20000.00 |
Пусть над представлением RICH_EMP
выполняется операция
UPDATE RICH_EMP SET EMP_SAL = EMP_SAL - 10000.00
Какие из приведенных ниже таблиц соответствуют материализованным представлениям RICH_DEPT
и RICH_EMP
после выполнения этой операции?
(1)
RICH_DEPTEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2440 | 1 | 177 | 1950 | 15000.00 | 13000.00 |
2441 | 1 | 155 | 1955 | 16000.00 | 14000.00 |
2442 | 1 | 208 | 1960 | 14000.00 | NULL |
2452 | 1 | 155 | NULL | 15000.00 | 14000.00 |
2444 | 2 | 177 | 1970 | 17000.00 | 16000.00 |
2445 | 2 | 208 | 1950 | 16000.00 | 15000.00 |
2447 | 2 | 177 | 1960 | 10000.00 | NULL |
2448 | 3 | 101 | 1955 | 18000.00 | 17000.00 |
2450 | 3 | 234 | 1960 | 12000.00 | 20000.00 |
2451 | 3 | 155 | 1960 | 12000.00 | 20000.00 |
RICH_EMPEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2441 | 1 | 155 | 1955 | 16000.00 | 14000.00 |
2442 | 1 | 208 | 1960 | 14000.00 | NULL |
2444 | 2 | 177 | 1970 | 17000.00 | 16000.00 |
2445 | 2 | 208 | 1950 | 16000.00 | 15000.00 |
2448 | 3 | 101 | 1955 | 18000.00 | 17000.00 |
(2)
RICH_DEPTEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2442 | 1 | 208 | 1960 | 14000.00 | NULL |
2444 | 2 | 177 | 1970 | 17000.00 | 16000.00 |
2445 | 2 | 208 | 1950 | 16000.00 | 15000.00 |
2447 | 2 | 177 | 1960 | 10000.00 | NULL |
2448 | 3 | 101 | 1955 | 18000.00 | 17000.00 |
2450 | 3 | 234 | 1960 | 12000.00 | 20000.00 |
2451 | 3 | 155 | 1960 | 12000.00 | 20000.00 |
RICH_EMPEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2447 | 2 | 177 | 1960 | 10000.00 | NULL |
2450 | 3 | 234 | 1960 | 12000.00 | 20000.00 |
2451 | 3 | 155 | 1960 | 12000.00 | 20000.00 |
(3)
RICH_DEPTEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2442 | 1 | 208 | 1960 | 14000.00 | NULL |
2444 | 2 | 177 | 1970 | 17000.00 | 16000.00 |
2445 | 2 | 208 | 1950 | 16000.00 | 15000.00 |
2447 | 2 | 177 | 1960 | 20000.00 | NULL |
2448 | 3 | 101 | 1955 | 18000.00 | 17000.00 |
2450 | 3 | 234 | 1960 | 22000.00 | 20000.00 |
2451 | 3 | 155 | 1960 | 22000.00 | 20000.00 |
RICH_EMPEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2447 | 2 | 177 | 1960 | 20000.00 | NULL |
2450 | 3 | 234 | 1960 | 22000.00 | 20000.00 |
2451 | 3 | 155 | 1960 | 22000.00 | 20000.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)
a1 | a2 | c1 | c2 | b1 | b2 |
---|
5 | 5 | 5 | 5 | 5 | 5 |
NULL | NULL | 5 | 6 | 1 | 2 |
5 | 5 | 5 | 5 | 3 | 8 |
5 | 5 | 5 | 5 | 3 | 8 |
NULL | NULL | 8 | 8 | 8 | 8 |
NULL | NULL | NULL | 5 | 3 | NULL |
NULL | NULL | NULL | 5 | 3 | NULL |
(2)
a1 | a2 | table1.c1 | table1.c2 | b1 | b2 | table2.c1 | table2.c2 |
---|
5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 |
NULL | NULL | 5 | 6 | 1 | 2 | 5 | 6 |
5 | 5 | 5 | 5 | 3 | 8 | 5 | 5 |
5 | 5 | 5 | 5 | 3 | 8 | 5 | 5 |
NULL | NULL | 8 | 8 | 8 | 8 | 8 | 8 |
NULL | NULL | NULL | 5 | 3 | NULL | NULL | 5 |
NULL | NULL | NULL | 5 | 3 | NULL | NULL | 5 |
(3)
a1 | a2 | c1 | c2 | b1 | b2 |
---|
NULL | 3 | NULL | NULL | 5 | NULL |
NULL | 3 | NULL | NULL | 5 | NULL |
5 | 3 | 5 | 5 | 5 | 8 |
NULL | 8 | 8 | NULL | 8 | 8 |
5 | 3 | 5 | 5 | 5 | 8 |
NULL | 1 | 5 | NULL | 6 | 2 |
5 | 5 | 5 | 5 | 5 | 5 |
Какая из следующих последовательностей является монотонной (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)
EMPEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2441 | 1 | 155 | 1955 | 16000.00 | 14000.00 |
2442 | 1 | 208 | 1960 | 14000.00 | NULL |
2443 | 1 | NULL | 1960 | 16000.00 | 13000.00 |
2452 | 1 | 155 | NULL | 15000.00 | 14000.00 |
2453 | 1 | 234 | NULL | 17000.00 | NULL |
2444 | 2 | 177 | 1970 | 17000.00 | 16000.00 |
2445 | 2 | 208 | 1950 | 16000.00 | 15000.00 |
2446 | 2 | 155 | 1970 | 17000.00 | 16000.00 |
2447 | 2 | 177 | 1960 | 20000.00 | NULL |
2449 | 3 | NULL | 1950 | 18000.00 | 17000.00 |
2450 | 3 | 234 | 1960 | 22000.00 | 20000.00 |
2451 | 3 | 155 | 1960 | 22000.00 | 20000.00 |
2454 | NULL | 208 | 1950 | 13000.00 | 12000.00 |
2455 | NULL | 101 | 1950 | 14000.00 | 22000.00 |
2456 | NULL | 234 | NULL | 19000.00 | 18000.00 |
(2)
EMPEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2441 | 1 | 155 | 1955 | 16000.00 | 14000.00 |
2442 | 1 | 208 | 1960 | 14000.00 | NULL |
2443 | 1 | NULL | 1960 | 16000.00 | 13000.00 |
2452 | 1 | 155 | NULL | 15000.00 | 14000.00 |
2453 | 1 | 234 | NULL | 17000.00 | NULL |
2444 | 2 | 177 | 1970 | 17000.00 | 16000.00 |
2445 | 2 | 208 | 1950 | 16000.00 | 15000.00 |
2446 | 2 | 155 | 1970 | 17000.00 | 16000.00 |
2447 | 2 | 177 | 1960 | 20000.00 | NULL |
2449 | 3 | NULL | 1950 | 18000.00 | 17000.00 |
2450 | 3 | 234 | 1960 | 22000.00 | 20000.00 |
2451 | 3 | 155 | 1960 | 22000.00 | 20000.00 |
(3)
EMPEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2441 | 1 | 155 | 1955 | 16000.00 | 14000.00 |
2442 | 1 | 208 | 1960 | 14000.00 | NULL |
2443 | 1 | NULL | 1960 | 16000.00 | 13000.00 |
2452 | 1 | 155 | NULL | 15000.00 | 14000.00 |
2453 | 1 | 234 | NULL | 17000.00 | NULL |
2444 | 2 | 177 | 1970 | 17000.00 | 16000.00 |
2446 | 2 | 155 | 1970 | 17000.00 | 16000.00 |
2447 | 2 | 177 | 1960 | 20000.00 | NULL |
2449 | 3 | NULL | 1950 | 18000.00 | 17000.00 |
2450 | 3 | 234 | 1960 | 22000.00 | 20000.00 |
2451 | 3 | 155 | 1960 | 22000.00 | 20000.00 |
2454 | NULL | 208 | 1950 | 13000.00 | 12000.00 |
2455 | NULL | 101 | 1950 | 14000.00 | 22000.00 |
2456 | NULL | 234 | NULL | 19000.00 | 18000.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
для значения-массива данного столбца в этой строке после занесения в него восьмого элемента массива?
Пусть в базовой таблице 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;
Пусть имеется следующее дерево:
Какой из следующих обходов этого дерева является обходом в глубину?
(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)
? | TRUE | FALSE | UNKNOWN |
---|
TRUE | FALSE | TRUE | UNKNOWN |
---|
FALSE | TRUE | TRUE | TRUE |
---|
UNKNOWN | UNKNOWN | TRUE | UNKNOWN |
---|
(2)
AND | TRUE | FALSE | UNKNOWN |
---|
TRUE | TRUE | FALSE | UNKNOWN |
---|
FALSE | FALSE | FALSE | FALSE |
---|
UNKNOWN | UNKNOWN | FALSE | UNKNOWN |
---|
(3)
AND | TRUE | FALSE | UNKNOWN |
---|
TRUE | TRUE | FALSE | FALSE |
---|
FALSE | FALSE | TRUE | FALSE |
---|
UNKNOWN | FALSE | FALSE | UNKNOWN |
---|
Пусть в базовой таблице 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
a1 | a2 | c1 | c2 |
5 | 5 | 5 | 5 |
5 | 5 | 8 | 6 |
5 | 5 | 3 | 7 |
2 | 3 | NULL | 7 |
4 | NULL | NULL | NULL |
table2
b1 | b2 | c1 | c2 |
5 | 5 | 5 | 5 |
1 | 2 | 5 | 6 |
3 | 8 | 5 | 5 |
3 | 8 | 5 | 5 |
8 | 8 | 8 | 8 |
3 | NULL | NULL | 5 |
3 | NULL | NULL | 5 |
Какая из показанных ниже таблиц является результатом операции table1 LEFT OUTER JOIN table2 ON a2=b1 AND a1<b2
?
(1)
a1 | a2 | c1 | c2 | b1 | b2 |
---|
5 | 5 | 5 | 5 | NULL | NULL |
5 | 5 | 8 | 6 | NULL | NULL |
5 | 5 | 3 | 7 | NULL | NULL |
2 | 3 | NULL | 7 | 3 | 8 |
2 | 3 | NULL | 7 | 3 | 8 |
4 | NULL | NULL | NULL | NULL | NULL |
(2)
a1 | a2 | table1.c1 | table1.c2 | b1 | b2 | table2.c1 | table2.c2 |
---|
5 | 5 | 5 | 5 | NULL | NULL | NULL | NULL |
5 | 5 | 8 | 6 | NULL | NULL | NULL | NULL |
5 | 5 | 3 | 7 | NULL | NULL | NULL | NULL |
2 | 3 | NULL | 7 | 3 | 8 | 5 | 5 |
2 | 3 | NULL | 7 | 3 | 8 | 5 | 5 |
4 | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
(3)
a1 | a2 | table1.c1 | table1.c2 | b1 | b2 | table2.c1 | table2.c2 |
---|
5 | 5 | 5 | 5 | NULL | NULL | NULL | NULL |
5 | 5 | 8 | 6 | NULL | NULL | NULL | NULL |
5 | 5 | 3 | 7 | NULL | NULL | NULL | NULL |
2 | 3 | NULL | 7 | 3 | 8 | 5 | 5 |
2 | 3 | NULL | 7 | 3 | 8 | 5 | 5 |
2 | 3 | NULL | 7 | 3 | NULL | NULL | 5 |
2 | 3 | NULL | 7 | 3 | NULL | NULL | 5 |
4 | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
Какая из показанных ниже таблиц является результатом запроса?
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_BDATE | EMP_BONUS | MIN_SAL | GBD | GBON |
---|
NULL | NULL | 13000.00 | 1 | 1 |
1950 | NULL | 13000.00 | 0 | 1 |
1955 | NULL | 16000.00 | 0 | 1 |
1960 | NULL | 14000.00 | 0 | 1 |
1970 | NULL | 17000.00 | 0 | 1 |
1950 | 13000.00 | 15000.00 | 0 | 0 |
1950 | 15000.00 | 16000.00 | 0 | 0 |
1950 | 17000.00 | 18000.00 | 0 | 0 |
1950 | 12000.00 | 13000.00 | 0 | 0 |
1950 | NULL | 14000.00 | 0 | 0 |
1955 | 14000.00 | 16000.00 | 0 | 0 |
1955 | 17000.00 | 18000.00 | 0 | 0 |
1960 | NULL | 14000.00 | 0 | 0 |
1960 | 13000.00 | 16000.00 | 0 | 0 |
1960 | 20000.00 | 22000.00 | 0 | 0 |
1960 | NULL | 14000.00 | 0 | 0 |
1970 | 16000.00 | 17000.00 | 0 | 0 |
NULL | 14000.00 | 15000.00 | 0 | 0 |
NULL | 18000.00 | 19000.00 | 0 | 0 |
NULL | 13000.00 | 15000.00 | 1 | 0 |
NULL | 14000.00 | 15000.00 | 1 | 0 |
NULL | 15000.00 | 16000.00 | 1 | 0 |
NULL | 16000.00 | 17000.00 | 1 | 0 |
NULL | 17000.00 | 18000.00 | 1 | 0 |
NULL | 18000.00 | 19000.00 | 1 | 0 |
NULL | 20000.00 | 22000.00 | 1 | 0 |
(2)
EMP_BDATE | EMP_BONUS | MIN_SAL | GBD | GBON |
---|
NULL | NULL | 13000.00 | 1 | 1 |
1950 | NULL | 13000.00 | 0 | 1 |
1955 | NULL | 16000.00 | 0 | 1 |
1960 | NULL | 14000.00 | 0 | 1 |
1970 | NULL | 17000.00 | 0 | 1 |
NULL | NULL | 15000.00 | 0 | 1 |
1950 | 13000.00 | 15000.00 | 0 | 0 |
1950 | 15000.00 | 16000.00 | 0 | 0 |
1950 | 17000.00 | 18000.00 | 0 | 0 |
1950 | 12000.00 | 13000.00 | 0 | 0 |
1950 | NULL | 14000.00 | 0 | 0 |
1955 | 14000.00 | 16000.00 | 0 | 0 |
1955 | 17000.00 | 18000.00 | 0 | 0 |
1960 | NULL | 14000.00 | 0 | 0 |
1960 | 13000.00 | 16000.00 | 0 | 0 |
1960 | 20000.00 | 22000.00 | 0 | 0 |
1960 | NULL | 14000.00 | 0 | 0 |
1970 | 16000.00 | 17000.00 | 0 | 0 |
NULL | 14000.00 | 15000.00 | 0 | 0 |
NULL | 18000.00 | 19000.00 | 0 | 0 |
NULL | NULL | 17000.00 | 0 | 0 |
NULL | 13000.00 | 15000.00 | 1 | 0 |
NULL | 14000.00 | 15000.00 | 1 | 0 |
NULL | 15000.00 | 16000.00 | 1 | 0 |
NULL | 16000.00 | 17000.00 | 1 | 0 |
NULL | 17000.00 | 18000.00 | 1 | 0 |
NULL | 18000.00 | 19000.00 | 1 | 0 |
NULL | 20000.00 | 22000.00 | 1 | 0 |
NULL | NULL | 14000.00 | 1 | 0 |
(3)
EMP_BDATE | EMP_BONUS | MIN_SAL | GBD | GBON |
---|
NULL | NULL | 13000.00 | 1 | 1 |
1950 | NULL | 13000.00 | 0 | 1 |
1955 | NULL | 16000.00 | 0 | 1 |
1960 | NULL | 14000.00 | 0 | 1 |
1970 | NULL | 17000.00 | 0 | 1 |
1950 | 13000.00 | 15000.00 | 0 | 0 |
1950 | 15000.00 | 16000.00 | 0 | 0 |
1950 | 17000.00 | 18000.00 | 0 | 0 |
1950 | 12000.00 | 13000.00 | 0 | 0 |
1955 | 14000.00 | 16000.00 | 0 | 0 |
1955 | 17000.00 | 18000.00 | 0 | 0 |
1960 | 13000.00 | 16000.00 | 0 | 0 |
1960 | 20000.00 | 22000.00 | 0 | 0 |
1970 | 16000.00 | 17000.00 | 0 | 0 |
NULL | 14000.00 | 15000.00 | 0 | 0 |
NULL | 18000.00 | 19000.00 | 0 | 0 |
NULL | 13000.00 | 15000.00 | 1 | 0 |
NULL | 14000.00 | 15000.00 | 1 | 0 |
NULL | 15000.00 | 16000.00 | 1 | 0 |
NULL | 16000.00 | 17000.00 | 1 | 0 |
NULL | 17000.00 | 18000.00 | 1 | 0 |
NULL | 18000.00 | 19000.00 | 1 | 0 |
NULL | 20000.00 | 22000.00 | 1 | 0 |
Чему соответствует имя псевдонима, вводимого в разделе 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);
Пусть на этом домене определен столбец некоторой таблицы. Какие из перечисленных значений не могут появиться в качестве значений этого столбца ни в одной строке таблицы?
Предположим, что проекты финансируются отделами. Каждый отдел финансирует не более одного проекта, один проект может финансироваться несколькими отделами, и общая сумма финансирования проекта не должна составлять менее 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)
a1 | a2 | c1 | c2 | b1 | b2 |
---|
5 | 5 | 5 | 5 | 5 | 5 |
5 | 5 | 5 | 5 | 3 | 8 |
5 | 5 | 5 | 5 | 3 | 8 |
5 | 5 | 8 | 6 | NULL | NULL |
5 | 5 | 3 | 7 | NULL | NULL |
2 | 3 | NULL | 7 | NULL | NULL |
4 | NULL | NULL |
NULL | NULL | NULL |
NULL | NULL | 5 | 6 | 1 | 2 |
NULL | NULL | 8 | 8 | 8 | 8 |
NULL | NULL | NULL | 5 | 3 | NULL |
NULL | NULL | NULL | 5 | 3 | NULL |
(2)
a1 | a2 | table1.c1 | table1.c2 | b1 | b2 | table2.c1 | table2.c2 |
---|
5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 |
5 | 5 | 5 | 5 | 3 | 8 | 5 | 5 |
5 | 5 | 5 | 5 | 3 | 8 | 5 | 5 |
5 | 5 | 8 | 6 | NULL | NULL | NULL | NULL |
5 | 5 | 3 | 7 | NULL | NULL | NULL | NULL |
2 | 3 | NULL | 7 | NULL | NULL | NULL | NULL |
4 | NULL | NULL | 6 | NULL | NULL | NULL | NULL |
NULL | NULL | 5 | 6 | 1 | 2 | 5 | 6 |
NULL | NULL | 8 | 8 | 8 | 8 | 8 | 8 |
NULL | NULL | NULL | 5 | 3 | NULL | NULL | 5 |
NULL | NULL | NULL | 5 | 3 | NULL | NULL | 5 |
(3)
a1 | a2 | c1 | c2 | b1 | b2 |
---|
5 | 5 | 5 | 5 | 5 | 5 |
5 | 5 | 5 | 5 | 3 | 8 |
5 | 5 | 5 | 5 | 3 | 8 |
5 | 5 | 8 | 6 | NULL | NULL |
5 | 5 | 3 | 7 | NULL | NULL |
2 | 3 | NULL | 7 | NULL | NULL |
4 | NULL | NULL | 6 | NULL | NULL |
NULL | NULL | 5 | 6 | 1 | 2 |
NULL | NULL | 8 | 8 | 8 | 8 |
5 | 5 | NULL | 5 | 3 | NULL |
5 | 5 | NULL | 5 | 3 | NULL |
Какая из приведенных ниже таблиц является результатом рекурсивного запроса?
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)
Major | Minor | Qty |
---|
P1 | P2 | 2 |
P1 | P3 | 3 |
P1 | P4 | 2 |
P1 | P3 | 6 |
P1 | P5 | 4 |
P1 | P5 | 24 |
P1 | P6 | 12 |
P1 | P5 | 12 |
P1 | P6 | 6 |
P1 | P3 | 10 |
P1 | P6 | 4 |
P1 | P5 | 40 |
P1 | P6 | 20 |
(2)
Major | Minor | Qty |
---|
P1 | P2 | 2 |
P1 | P3 | 3 |
P1 | P4 | 2 |
P1 | P5 | 4 |
P1 | P5 | 24 |
P1 | P6 | 12 |
P1 | P5 | 12 |
P1 | P6 | 6 |
P1 | P6 | 4 |
P1 | P5 | 40 |
P1 | P6 | 20 |
(3)
Major | Minor | Qty |
---|
P1 | P2 | 2 |
P1 | P3 | 3 |
P1 | P4 | 2 |
P1 | P5 | 80 |
P1 | P6 | 42 |
Пусть имеются следующие два определения представлений:
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_EMPEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2441 | 1 | 155 | 1955 | 16000.00 | 14000.00 |
2452 | 1 | 155 | NULL | 15000.00 | 14000.00 |
2453 | 1 | 234 | NULL | 17000.00 | NULL |
2444 | 2 | 177 | 1970 | 17000.00 | 16000.00 |
2446 | 2 | 155 | 1970 | 17000.00 | 16000.00 |
2447 | 2 | 177 | 1960 | 20000.00 | NULL |
2450 | 3 | 234 | 1960 | 22000.00 | 20000.00 |
2451 | 3 | 155 | 1960 | 22000.00 | 20000.00 |
LESS_RICH_EMPEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2452 | 1 | 155 | NULL | 15000.00 | 14000.00 |
2444 | 2 | 177 | 1970 | 17000.00 | 16000.00 |
2446 | 2 | 155 | 1970 | 17000.00 | 16000.00 |
2450 | 3 | 234 | 1960 | 22000.00 | 20000.00 |
2451 | 3 | 155 | 1960 | 22000.00 | 20000.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_EMPEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2441 | 1 | 155 | 1955 | 16000.00 | 14000.00 |
2452 | 1 | 155 | NULL | 15000.00 | 14000.00 |
2453 | 1 | 234 | NULL | 17000.00 | NULL |
2444 | 2 | 177 | 1970 | 17000.00 | 16000.00 |
2446 | 2 | 155 | 1970 | 17000.00 | 16000.00 |
2447 | 2 | 177 | 1960 | 20000.00 | NULL |
2450 | 3 | 234 | 1960 | 22000.00 | 20000.00 |
2451 | 3 | 155 | 1960 | 22000.00 | 20000.00 |
LESS_RICH_EMPEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2452 | 1 | 155 | NULL | 15000.00 | 14000.00 |
2444 | 2 | 177 | 1970 | 17000.00 | 16000.00 |
2446 | 2 | 155 | 1970 | 17000.00 | 16000.00 |
2450 | 3 | 234 | 1960 | 22000.00 | 20000.00 |
2451 | 3 | 155 | 1960 | 22000.00 | 20000.00 |
(2)
RICH_EMPEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2441 | 1 | 155 | 1955 | 16000.00 | 14000.00 |
2452 | 1 | 155 | NULL | 25000.00 | 4000.00 |
2453 | 1 | 234 | NULL | 17000.00 | NULL |
2444 | 2 | 177 | 1970 | 27000.00 | 6000.00 |
2446 | 2 | 155 | 1970 | 27000.00 | 6000.00 |
2447 | 2 | 177 | 1960 | 20000.00 | NULL |
2450 | 3 | 234 | 1960 | 32000.00 | 10000.00 |
2451 | 3 | 155 | 1960 | 32000.00 | 10000.00 |
LESS_RICH_EMPEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2452 | 1 | 155 | NULL | 25000.00 | 4000.00 |
2444 | 2 | 177 | 1970 | 27000.00 | 6000.00 |
2446 | 2 | 155 | 1970 | 27000.00 | 6000.00 |
2450 | 3 | 234 | 1960 | 32000.00 | 10000.00 |
2451 | 3 | 155 | 1960 | 32000.00 | 10000.00 |
(3)
RICH_EMPEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2441 | 1 | 155 | 1955 | 16000.00 | 14000.00 |
2452 | 1 | 155 | NULL | 25000.00 | 4000.00 |
2444 | 2 | 177 | 1970 | 27000.00 | 6000.00 |
2445 | 2 | 208 | 1950 | 16000.00 | 15000.00 |
2446 | 2 | 155 | 1970 | 27000.00 | 6000.00 |
2448 | 3 | 101 | 1955 | 18000.00 | 17000.00 |
2449 | 3 | NULL | 1950 | 18000.00 | 17000.00 |
2450 | 3 | 234 | 1960 | 32000.00 | 10000.00 |
2451 | 3 | 155 | 1960 | 32000.00 | 10000.00 |
LESS_RICH_EMPEMP_NO | DEPT_NO | PRO_NO | EMP_BDATE | EMP_SAL | EMP_BONUS |
---|
2452 | 1 | 155 | NULL | 25000.00 | 4000.00 |
2445 | 2 | 208 | 1950 | 16000.00 | 15000.00 |
2448 | 3 | 101 | 1955 | 18000.00 | 17000.00 |
2449 | 3 | NULL | 1950 | 18000.00 | 17000.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)
a1 | a2 | table1.c1 | table1.c2 | b1 | b2 | table2.c1 | table2.c2 |
---|
5 | 5 | 5 | 5 | NULL | NULL | NULL | NULL |
NULL | NULL | NULL | NULL | 3 | NULL | NULL | 5 |
5 | 5 | 8 | 6 | NULL | NULL | NULL | NULL |
NULL | NULL | NULL | NULL | 3 | NULL | NULL | 5 |
5 | 5 | 3 | 7 | NULL | NULL | NULL | NULL |
NULL | NULL | NULL | NULL | 8 | 8 | 8 | 8 |
2 | 3 | NULL | 7 | 3 | 8 | 5 | 5 |
NULL | NULL | NULL | NULL | 1 | 2 | 5 | 6 |
2 | 3 | NULL | 7 | 3 | 8 | 5 | 5 |
NULL | NULL | NULL | NULL | 5 | 5 | 5 | 5 |
4 | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
(2)
a1 | a2 | table1.c1 | table1.c2 | b1 | b2 | table2.c1 | table2.c2 |
---|
5 | 5 | 5 | 5 | NULL | NULL | NULL | NULL |
5 | 5 | 8 | 6 | NULL | NULL | NULL | NULL |
5 | 5 | 3 | 7 | NULL | NULL | NULL | NULL |
2 | 3 | NULL | 7 | 3 | 8 | 5 | 5 |
2 | 3 | NULL | 7 | 3 | 8 | 5 | 5 |
4 | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
NULL | NULL | NULL | NULL | 5 | 5 | 5 | 5 |
NULL | NULL | NULL | NULL | 1 | 2 | 5 | 6 |
NULL | NULL | NULL | NULL | 8 | 8 | 8 | 8 |
NULL | NULL | NULL | NULL | 3 | NULL | NULL | 5 |
NULL | NULL | NULL | NULL | 3 | NULL | NULL | 5 |
(3)
a1 | a2 | c1 | c2 | b1 | b2 |
---|
5 | 5 | 5 | 5 | NULL | NULL |
5 | 5 | 8 | 6 | NULL | NULL |
5 | 5 | 3 | 7 | NULL | NULL |
2 | 3 | NULL | 7 | 3 | 8 |
2 | 3 | NULL | 7 | 3 | 8 |
4 | NULL | NULL | NULL | NULL | NULL |
NULL | NULL | NULL | NULL | 5 | 5 |
NULL | NULL | NULL | NULL | 1 | 2 |
NULL | NULL | NULL | NULL | 8 | 8 |
NULL | NULL | NULL | NULL | 3 | NULL |
NULL | NULL | NULL | NULL | 3 | NULL |
Какая из приведенных ниже таблиц является результатом рекурсивного запроса?
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)
Major | Minor | Qty |
---|
P1 | P2 | 2 |
P1 | P3 | 3 |
P1 | P3 | 6 |
P1 | P3 | 10 |
P1 | P4 | 2 |
P1 | P5 | 4 |
P1 | P5 | 24 |
P1 | P5 | 12 |
P1 | P5 | 40 |
P1 | P6 | 12 |
P1 | P6 | 6 |
P1 | P6 | 4 |
P1 | P6 | 20 |
(2)
Major | Minor | Qty |
---|
P1 | P2 | 2 |
P1 | P3 | 10 |
P1 | P3 | 6 |
P1 | P3 | 3 |
P1 | P4 | 2 |
P1 | P5 | 40 |
P1 | P5 | 12 |
P1 | P5 | 24 |
P1 | P5 | 4 |
P1 | P6 | 20 |
P1 | P6 | 4 |
P1 | P6 | 6 |
P1 | P6 | 12 |
(3)
Major | Minor | Qty |
---|
P1 | P2 | 2 |
P1 | P3 | 3 |
P1 | P4 | 2 |
P1 | P3 | 6 |
P1 | P5 | 4 |
P1 | P5 | 24 |
P1 | P6 | 12 |
P1 | P5 | 12 |
P1 | P6 | 6 |
P1 | P3 | 10 |
P1 | P6 | 4 |
P1 | P5 | 40 |
P1 | P6 | 20 |
Пусть 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)
a1 | a2 | table1.c1 | table1.c2 | b1 | b2 | table2.c1 | table2.c2 |
---|
NULL | NULL | NULL | NULL | 5 | 5 | 5 | 5 |
NULL | NULL | NULL | NULL | 1 | 2 | 5 | 6 |
2 | 3 | NULL | 7 | 3 | 8 | 5 | 5 |
2 | 3 | NULL | 7 | 3 | 8 | 5 | 5 |
NULL | NULL | NULL | NULL | 8 | 8 | 8 | 8 |
2 | 3 | NULL | 7 | 3 | NULL | NULL | 5 |
2 | 3 | NULL | 7 | 3 | NULL | NULL | 5 |
(2)
a1 | a2 | b1 | b2 | c1 | c2 |
---|
NULL | NULL | 5 | 5 | 5 | 5 |
NULL | NULL | 1 | 2 | 5 | 6 |
2 | 3 | 3 | 8 | 5 | 5 |
2 | 3 | 3 | 8 | 5 | 5 |
NULL | NULL | 8 | 8 | 8 | 8 |
NULL | NULL | 3 | NULL | NULL | 5 |
NULL | NULL | 3 | NULL | NULL | 5 |
(3)
a1 | a2 | table1.c1 | table1.c2 | b1 | b2 | table2.c1 | table2.c2 |
---|
NULL | NULL | NULL | NULL | 5 | 5 | 5 | 5 |
NULL | NULL | NULL | NULL | 1 | 2 | 5 | 6 |
2 | 3 | NULL | 7 | 3 | 8 | 5 | 5 |
2 | 3 | NULL | 7 | 3 | 8 | 5 | 5 |
NULL | NULL | NULL | NULL | 8 | 8 | 8 | 8 |
NULL | NULL | NULL | NULL | 3 | NULL | NULL | 5 |
NULL | NULL | NULL | NULL | 3 | NULL | NULL | 5 |
Какая из приведенных ниже таблиц является результатом рекурсивного запроса?
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)
Major | Minor | Qty |
---|
P1 | P2 | 2 |
P1 | P3 | 3 |
P1 | P3 | 6 |
P1 | P3 | 10 |
P1 | P4 | 2 |
P1 | P5 | 24 |
P1 | P5 | 4 |
P1 | P5 | 12 |
P1 | P5 | 40 |
P1 | P6 | 12 |
P1 | P6 | 6 |
P1 | P6 | 20 |
P1 | P6 | 4 |
(2)
Major | Minor | Qty |
---|
P1 | P2 | 2 |
P1 | P3 | 10 |
P1 | P3 | 6 |
P1 | P3 | 3 |
P1 | P4 | 2 |
P1 | P5 | 40 |
P1 | P5 | 12 |
P1 | P5 | 4 |
P1 | P5 | 24 |
P1 | P6 | 4 |
P1 | P6 | 20 |
P1 | P6 | 6 |
P1 | P6 | 12 |
(3)
Major | Minor | Qty |
---|
P1 | P2 | 2 |
P1 | P3 | 3 |
P1 | P3 | 6 |
P1 | P3 | 10 |
P1 | P4 | 2 |
P1 | P5 | 4 |
P1 | P5 | 24 |
P1 | P5 | 12 |
P1 | P5 | 40 |
P1 | P6 | 12 |
P1 | P6 | 6 |
P1 | P6 | 4 |
P1 | P6 | 20 |
Чему соответствует имя псевдонима, вводимого в разделе 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