Сертификат "Введение в модель данных SQL"
  • Сертификат "Введение в модель данных SQL"
  • Сертификат "Введение в модель данных SQL"
Сертификат "Введение в модель данных SQL"
  • Сертификат "Введение в модель данных SQL"
  • Сертификат "Введение в модель данных SQL"

Введение в модель данных SQL

700,00 руб.
В течение часа!
Экзамен "Введение в модель данных SQL" для пользователей и системных администраторов.
Количество
Есть в наличии!

Форма сдачи теста: Экстерн
Количество вопросов: 30
Проходной балл: 90% и выше
Срок действия сертификата: неограничен

Сертификат появляется в профиле ресурса INTUIT, и Вы можете заказать его бумажную версию на сайте INTUIT.
10412 шт.
Внимание !
Вопросы к тесту выложены исключительно в ознакомительных целях: количество вопросов может не совпадать с действительным, актуальность не поддерживается,- за решением теста Welcome to the cashier!

Что представляют собой значения типа NUMERIC (10, 2)?

приближенные числа из 12 десятичных цифр с двумя цифрами после десятичной точки
точные числа из 12 десятичных цифр с двумя цифрами после десятичной точки
точные числа из 10 десятичных цифр, две из которых составляют дробную часть



Пусть в некоторой таблице определен столбец типа CHARACTER (7). Какая символьная строка будет реально храниться в этом столбце некоторой строки таблицы, если при вставке строки в качестве значения этого была указана литеральная константа ‘test’?

"test___", где "_" – символ пробела
"test_’000000"
"test"




Какая из приведенных ниже таблиц является таблицей истинности для логической функции “штрих Шеффера” в трехзначной логике?


AND         TRUE     FALSE     UNKNOWN
TRUE         TRUE     FALSE     FALSE
FALSE               FALSE     TRUE     FALSE
UNKNOWN     FALSE     FALSE     UNKNOWN

?         TRUE         FALSE     UNKNOWN
TRUE         FALSE         TRUE     UNKNOWN
FALSE         TRUE         TRUE     TRUE
UNKNOWN     UNKNOWN     TRUE     UNKNOWN

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

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


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

NULL
100
151



Какова степень анонимного строчного типа ROW (a INTEGER, b ROW (C INTEGER, C CHARACTER (7)))?

3
4
2



Пусть имеется литерал точного числового типа 22519. При выполнении какого из следующих операторов CAST будет зафиксирована ошибка?

CAST 22519 AS CHARACTER (4)
CAST 22519 AS NUMERIC (8)
CAST 22519 AS FLOAT (8)



Какова максимальная кардинальность типа INTEGER ARRAY [10] ARRAY [10]?

20
10
100



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

CREATE DOMAIN TEST AS INTEGER
          DEFAULT 100
          CHECK (VALUE > 10 AND
                 VALUE != 150 AND
                 VALUE != 190 AND
                 VALUE < 200);

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

ALTER DOMAIN TEST SET DEFAULT 180
        ADD CHECK (VALUE IS NOT NULL);

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

оператор будет отвергнут
имеющиеся значения столбца не изменятся
значение 100 изменится на значение 180



Пусть имеется литерал 123E12. При выполнении какого из следующих операторов CAST будет зафиксирована ошибка?

CAST 123E12 AS FLOAT (8)
CAST 123E12 AS NUMERIC (8)
CAST 123E12 AS CHARACTER (4)



Пусть имеется литерал типа символьных строк ‘12251999’. При выполнении какого из следующих операторов CAST будет зафиксирована ошибка?

CAST ‘12251999’ AS VARCHAR (8)
CAST ‘12251999’ AS NUMERIC (8)
CAST ‘12251999’ AS DATE (8)



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

"test___", где "_" – символ пробела
"test"
"testX'000000"



Пусть в некоторой таблице определен столбец типа INTEGER ARRAY [10]. Пусть при вставке в эту таблицу некоторой строки в данный столбец заносится значение-массив, в котором задан только десятый элемент. Будет ли выполнена эта операция, какая память будет отведена для хранения этого массива, и что реально в ней будет содержаться?

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



Пусть в некоторой таблице определен столбец типа INTEGER ARRAY [10]. Пусть при вставке в эту таблицу некоторой строки в данный столбец заносится значение-массив (12, 14, 18, 22). Чему будет равно значение cs для значения-массива данного столбца в этой строке после занесения в него восьмого элемента массива?

10
5
8



Пусть в базовой таблице S определен внешний ключ (a, b, c), где a, b и c – имена столбцов определяемой таблицы. Будем считать, что все столбцы целого типа и могут содержать неопределенное значение. Предположим, что внешний ключ ссылается на первичный ключ таблицы T, состоящий из столбцов с такими же именами. При какой спецификации способа соответствия значение внешнего ключа <NULL, 1, 10> соответствует значению первичного ключа <25, 1, 10>?

PARTIAL
FULL
SIMPLE



Пусть при определении базовой таблицы указано ограничение UNIQUE (a, b, c), где a, b и c – составляют полный список имен столбцов определяемой таблицы. Будем считать, что все столбцы целого типа и могут содержать неопределенное значение. Какие из показанных ниже пар строк смогут находиться в теле таблицы?

<NULL, NULL, 5>, <5, NULL, NULL>
<NULL, NULL, 5>, <NULL, NULL, 5>
<NULL, NULL, NULL>, <5, NULL, NULL>



Предположим, что проекты финансируются отделами. Каждый отдел финансирует не более одного проекта, один проект может финансироваться несколькими отделами, и общая сумма финансирования проекта не должна составлять менее 1000000.00 руб. Выполнение каких из приведенных ниже операторов изменит определения таблиц DEPT и PRO требуемым образом?

ALTER TABLE DEPT
ADD DEPT_PRO_INVEST NUMERIC (10, 2)
  DEFAULT NULL;

ALTER TABLE DEPT
ADD DEPT_PRO PRO_NO DEFAULT NULL;
       REFERENCES PRO ON DELETE SET NULL;

ALTER TABLE DEPT ADD
  CONSTRAINT PRO_INVEST_VALUE
       CHECK (IF (DEPT_PRO IS NOT NULL) THEN
                (SELECT SUM (D.DEPT_PRO_INVEST)
                  FROM DEPT D
                  WHERE DEPT_PRO =
                    D.DEPT_PRO) >= 1000000.00);

ALTER TABLE PRO
ADD PRO_DEPT_INVEST NUMERIC (10, 2)
 DEFAULT NULL;

ALTER TABLE PRO
ADD PRO_DEPT DEPT_NO NO NULL;
       REFERENCES PRO
         ON DELETE CASCADES;
       CHECK (SELECT SUM (PRO_DEPT_INVEST)
         FROM PRO
              WHERE PRO_DEPT =
                VALUE) >= 1000000.00);

ALTER TABLE DEPT
ADD DEPT_PRO_INVEST NUMERIC (10, 2)
 DEFAULT NULL;

ALTER TABLE PRO
ADD PRO_DEPT DEPT_NO NO NULL;
       REFERENCES DEPT
         ON DELETE CASCADES;
       CHECK (SELECT SUM (DEPT_PRO_INVEST)
         FROM DEPT
              WHERE DEPT_NO =
                VALUE) >= 1000000.00);


               
Пусть в базовой таблице S определен внешний ключ (a, b, c), где a, b и c – имена столбцов определяемой таблицы. Пусть для этого внешнего ключа специфицирован способ соответствия SIMPLE. Будем считать, что все столбцы целого типа и могут содержать неопределенное значение. Предположим, что внешний ключ ссылается на первичный ключ таблицы T, состоящий из столбцов с такими же именами. Пусть в таблице S присутствуют строки s1, s2 и s3 со значениями внешнего ключа <NULL, NULL, 5>, <25, 1, NULL> и <25, 1, 5> соответственно. Что произойдет при удалении строки из таблицы T со значением первичного ключа <25, 1, 5>, если при определении внешнего ключа (a, b, c) таблицы S указано ссылочное действие ON DELETE SET NULL?

строка из таблицы T будет удалена, а значением внешнего ключа в строках s1, s2 и s3 таблицы S станет <NULL, NULL, NULL>
строка из таблицы T будет удалена, а значениями внешнего ключа в строках s1, s2 и s3 таблицы S станут <NULL, NULL, 5>, <25, 1, NULL> и <NULL, NULL, NULL> соответственно
операция удаления строки из таблицы T не выполнится



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

2m – 1
m * n
m + n



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

ALTER TABLE EMP
ADD EMP_ADVISER EMP_NO
  DEFAULT NULL REFERENCES EMP
    ON DELETE SET NULL
      CHECK (VALUE < 6);

ALTER TABLE EMP
ADD EMP_ADVISER EMP_NO NO NULL
  REFERENCES EMP ON DELETE CASCADE;

ALTER TABLE EMP
ADD EMP_ADVISER EMP_NO DEFAULT NULL
  REFERENCES EMP ON DELETE SET NULL;
      CHECK (IF (VALUE IS NOT NULL) THEN
                (SELECT COUNT (*) FROM EMP E
                 WHERE E.EMP_ADVISER =
                   VALUE) < 6);

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

INITIALLY IMMEDIATE DEFERRABLE
INITIALLY DEFERRED
INITIALLY IMMEDIATE NOT DEFERRABLE



Пусть в базовой таблице S определен внешний ключ (a, b, c), где a, b и c – имена столбцов определяемой таблицы. Пусть для этого внешнего ключа специфицирован способ соответствия PARTIAL. Будем считать, что все столбцы целого типа и могут содержать неопределенное значение. Предположим, что внешний ключ ссылается на первичный ключ таблицы T, состоящий из столбцов с такими же именами. Пусть в таблице S присутствуют строки s1, s2 и s3 со значениями внешнего ключа <NULL, NULL, 5>, <25, 1, NULL> и <25, 1, 5> соответственно. Пусть в таблице T присутствуют строки t1, t2 со значениями первичного ключа <25, 1, 5> и <25, 2, 5> соответственно. Что произойдет при удалении из таблицы T строки t1, если при определении внешнего ключа (a, b, c) таблицы S указано ссылочное действие ON DELETE SET NULL?

строка из таблицы T будет удалена, а значением внешнего ключа в строках s1, s2 и s3 таблицы S станет <NULL, NULL, NULL>
строка из таблицы T будет удалена, а значениями внешнего ключа в строках s1, s2 и s3 таблицы S станут <NULL, NULL, 5>, <NULL, NULL, NULL> и <NULL, NULL, NULL> соответственно
операция удаления строки из таблицы T не выполнится



Каким будет значение по умолчанию столбца, определенного без указания собственного значения по умолчанию и без ограничения NOT NULL, после отмены определения домена, на котором данный столбец был определен, если у домена было задано значение по умолчанию?

у столбца не будет значения по умолчанию
NULL
останется значение по умолчанию домена



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

INITIALLY DEFERRED
INITIALLY IMMEDIATE NOT DEFERRABLE
INITIALLY IMMEDIATE DEFERRABLE




Предположим, что служащие, участвующие в проектах, могут получать дополнительную премию, равную средней основной заработной плате участников соответствующего проекта. Выполнение каких из приведенных ниже операторов изменит определение таблицы EMP требуемым образом?

ALTER TABLE EMP
ADD EMP_PRO_BONUS SALARY DEFAULT NULL;

ALTER TABLE EMP ADD CONSTRAINT PRO_BONUS
       CHECK (IF (EMP_PRO_BONUS IS
         NOT NULL) THEN
                  PRO_NO IS NOT NULL)

ALTER TABLE DEPT ADD
  CONSTRAINT MORE_TOTAL_INCOME
CHECK (DEPT_TOTAL_SAL >=
       (SELECT SUM(EMP_SAL +
         COALESCE(EMP_BONUS,0) +
                 COALESCE(EMP_PRO_BONUS,0))
          FROM EMP
          WHERE EMP.DEPT_NO = DEPT_NO));

ALTER TABLE EMP
ADD EMP_PRO_BONUS SALARY DEFAULT NULL;

ALTER TABLE EMP ADD
  CONSTRAINT PRO_BONUS_VALUE
       CHECK (IF (EMP_PRO_BONUS IS
         NOT NULL) THEN
               EMP_PRO_BONUS =
                 (SELECT AVG (E.EMP_SAL)
                          FROM EMP E
                          WHERE PRO_NO =
                            E.PRO_NO));

ALTER TABLE EMP ADD CONSTRAINT PRO_BONUS
       CHECK (IF (EMP_PRO_BONUS IS
         NOT NULL) THEN
                  PRO_NO IS NOT NULL)

ALTER TABLE DEPT ADD
  CONSTRAINT MORE_TOTAL_INCOME
CHECK (DEPT_TOTAL_SAL >=
       (SELECT SUM(EMP_SAL +
         COALESCE(EMP_BONUS,0) +
                 COALESCE(EMP_PRO_BONUS,0))
          FROM EMP
          WHERE EMP.DEPT_NO = DEPT_NO));

ALTER TABLE EMP
ADD EMP_PRO_BONUS SALARY DEFAULT NULL;

ALTER TABLE EMP
DROP CONSTRAINT TOTAL_INCOME;

ALTER TABLE DEPT ADD
  CONSTRAINT TOTAL_INCOME
CHECK (DEPT_TOTAL_SAL >=
       (SELECT SUM(EMP_SAL +
         COALESCE(EMP_BONUS,0) +
                 COALESCE(EMP_PRO_BONUS,0))
          FROM EMP
          WHERE EMP.DEPT_NO = DEPT_NO));


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

INITIALLY DEFERRED
INITIALLY IMMEDIATE NOT DEFERRABLE
INITIALLY IMMEDIATE DEFERRABLE



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

m + n
m * n
2m



В каких из перечисленных ниже случаях значением столбца по умолчанию является NULL?

(Ответ считается верным, если отмечены все правильные варианты ответов.)
в определении столбца отсутствует раздел DEFAULT, и столбец определяется на базовом типе данных или на домене, в определении которого отсутствует раздел DEFAULT
в определении столбца отсутствует раздел DEFAULT, но столбец определяется на домене, в определении которого присутствует раздел DEFAULT NULL
в разделе DEFAULT определения столбца указано NULL



Пусть A является столбцом таблицы T типа INTEGER, B – столбцом таблицы T типа CHARACTER (5), а C – столбцом таблицы T типа CHARACTER VARYING (8). Какого типа будет результат выражения следующего выражения с переключателем?

CASE WHEN A = 5 THEN B
    WHEN A > 6 THEN C
    ELSE B || C
END


CHARACTER (13)
CHARACTER VARYING (8)
CHARACTER VARYING (13)



Можно ли выразить булевскую функцию SQL IS через функцию “стрелка Пирса”? Каков из представленных ниже ответов является правильным?

Да. x IS y ≡ pi (pi (pi (pi (A, A), pi (B, B)), pi (A, B)))
Булевская функция SQL IS не выражается через функцию “стрелка Пирса”, потому что в трехзначной логике SQL NOT UNKNOWN = UNKNOWN
Да. x IS y ≡ pi (pi (pi (pi (A, A), pi (B, B)), pi (A, B)), pi (pi (pi (A, A), pi (B, B)), pi (A, B)))




Пусть A и B являются столбцами таблицы T типа CHARACTER (5), и пусть в при вставке в строку s этой таблицы в столбец A было занесено значение ‘ONE’, а в столбец B – ‘TIME’. Каким будет значение выражения A || B при его вычислении для значений строки s? (Здесь “_” обозначает символ пробела.)

“ONE_TIME”
“ONE__TIME_”
“ONE__TIME”


   
Какое из приведенных ниже выражений с переключателем эквивалентно выражению NULLIF (COALESCE (V1, V2), COALESCE (V3, V4))? (“<>” обозначает сравнение на неравенство.)

CASE WHEN V1 = V3
     OR (V1 IS NULL AND
       V3 NOT NULL AND V2 = V3)
     OR (V1 NOT NULL AND
       V3 IS NULL AND V1 = V4)
     OR (V1 IS NULL AND
       V3 IS NULL AND V2 = V4)
       THEN NULL
     WHEN V1 NOT NULL
     AND (V1 <> V3 OR V3 IS NULL)
     AND (V3 IS NULL OR V2 IS NULL OR
       V2 <> V3)
     AND (V3 NOT NULL OR V4 IS NULL OR
       V1 <> V4)
     AND (V3 NOT NULL OR V2 IS NULL OR V4
       IS NULL OR V2 <> V4) THEN V1
     ELSE V2
END


CASE WHEN V1 = V3
       OR (V1 NOT NULL AND
         V3 NOT NULL OR V2 = V3)
       OR (V1 IS NULL OR
         V3 IS NULL AND V1 = V4)
       OR (V1 IS NULL AND
         V3 NOT NULL OR V2 = V4) THEN NULL
     WHEN V1 NOT NULL
       AND V1 <> V3
       AND V3 NOT NULL
       AND V2 <> V3
       AND (V3 IS NULL OR V1 <> V4)
       AND (V3 NOT NULL
       AND V2 <> V4 THEN V1
     ELSE V2
END


CASE WHEN V1 = V3
       OR (V1 NOT NULL AND
         V3 NOT NULL AND V2 = V3)
       OR (V1 IS NULL AND
         V3 IS NULL AND V1 = V4)
       OR (V1 IS NULL AND
         V3 NOT NULL AND V2 = V4) THEN NULL
     WHEN V1 NOT NULL
       AND V1 <> V3
       AND (V3 NOT NULL OR
         V2 <> V3)
       AND (V3 IS NULL OR
         V1 <> V4)
       AND (V3 NOT NULL OR
         V2 <> V4) THEN V1
     ELSE V2
END




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

SELECT A FROM T
GROUP BY A
HAVING A = const;
если столбец A является возможным ключом таблицы T?

столько, сколько строк в таблице T
0
не больше одной



Пусть имеются три мультимножества M1, M2 и M3, содержащие общий элемент a, причем в мультимножестве M1 содержится n дубликатов a, в мультимножестве M2 – m дубликатов a, а в мультимножестве M3 – k дубликатов. Сколько дубликатов элемента a будет содержаться в результате операции (M1 MINUS M2) INTERSECT M3?

min (max ((m-n),0), k)
n - m - k
max (n, min (m, k))



Пусть имеется таблица T со столбцами A, B и C. Какие из приведенных ниже конструкторов строки являются синтаксическими неверными?

SELECT * FROM T WHERE B = const
ROW (5, NULL, SELECT * FROM T WHERE B = const)
SELECT A FROM T WHERE B = const




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

SELECT A FROM T
GROUP BY A;

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

1
0
столько, сколько строк в таблице T



Пусть имеется таблица T со столбцами A, B и C. При каких условиях можно гарантировать, что в результате запроса SELECT * FROM T WHERE B = const всегда будет содержаться не более чем одна строка?

(Ответ считается верным, если отмечены все правильные варианты ответов.)
при определении таблицы T столбец B был специфицирован как возможный ключ
таблица T содержит всего одну строку
при определении таблицы T столбец B был специфицирован как первичный ключ



Какое из приведенных ниже выражений с переключателем эквивалентно выражению COALESCE (NULLIF (V1, V2), NULLIF (V3, V4))? (“<>” обозначает сравнение на неравенство.)

CASE WHEN V1 <> V2 THEN V1
     WHEN V1 = V2 AND V3 = V4
       THEN NULL
     ELSE V3
END


CASE WHEN V1 NOT NULL THEN V2
     WHEN V1 = V2 AND
       V3 <> V4 THEN V4
     ELSE V3
END


CASE WHEN V1 = V2 AND
  V1 NOT NULL THEN V1
     WHEN V1 <> V2 AND
       V3 <> V4 THEN V3
     ELSE NULL
END



Пусть имеется таблица T со столбцами A, B и C. Какие из приведенных ниже конструкторов таблицы являются синтаксически неверными?

VALUES ROW (SELECT A FROM T
  WHERE B = const,
         SELECT B FROM T
           WHERE C = const,
         SELECT A FROM T
           WHERE B = const),
      ROW (15, 25, NULL)

VALUES ROW (SELECT * FROM T
  WHERE B = const, NULL),
            (15, 25, NULL)

            VALUES  SELECT * FROM T
  WHERE B = const,
        ROW (5, NULL, SELECT
          A FROM T WHERE B = const),
        (DEFAULT, NULL, NULL)

       
       
Пусть имеются четыре мультимножества M1, M2, M3 и M4, содержащие общий элемента a, причем в мультимножестве M1 содержится n дубликатов a, в мультимножестве M2 – m дубликатов a, в мультимножестве M3 – k дубликатов, а в мультимножестве M4– p дубликатов Сколько дубликатов элемента a будет содержаться в результате операции (M1 INTERSECT M2) MINUS (M3 UNION M4)?

n - m - k – p
min (max((n-m), 0), (k+p))
max (min ((m-n), (k+p)), 0)



Пусть имеются три мультимножества M1, M2 и M3, содержащие общий элемента a, причем в мультимножестве M1 содержится n дубликатов a, в мультимножестве M2 – m дубликатов a, а в мультимножестве M3 – k дубликатов. Сколько дубликатов элемента a будет содержаться в результате операции (M1 UNIOIN M2) INTERSECT M3?

min ((m+n), k)
n + m - k
min (n, (m+k))



Пусть A является столбцом таблицы T типа CHARACTER (5), а B – столбцом таблицы T типа CHARACTER VARYING (8). Пусть при вставке в строку s этой таблицы в столбец A было занесено значение ‘LET’, а в столбец B – ‘IT’. В столбце какого из перечисленных ниже типов могло бы быть сохранено значение выражения A || B || ‘BE’, вычисленное для значений строки s? (Здесь “_” обозначает символ пробела.)

CHARACTER (15)
CHARACTER (4)
CHARACTER (9)



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

SELECT A FROM S
GROUP BY A

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

столько, сколько строк в таблице T, или на одну строку больше
столько, сколько строк в таблице S
столько, сколько строк в таблице T



База данных АВТОРЫ-КНИГИ-ИЗДАТЕЛЬСТВА (AUTHORS-BOOKS-PUBLISHERS) состоит из следующих таблиц:

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 книг, включая разные издания книги с одним и тем же названием". Какие из приведенных ниже формулировок являются правильными?

SELECT AUTHOR_NAME
FROM AUTHORS
WHERE (SELECT COUNT (*)
       FROM AUTHORS-BOOKS
       WHERE AUTHORS.AUTHOR_ID =
         AUTHORS-BOOKS.AUTHOR_ID) > 10;

SELECT DISTINCT AUTHOR_NAME
FROM AUTHORS, AUTHORS-BOOKS
WHERE AUTHORS.AUTHOR_ID =
  AUTHORS-BOOKS.AUTHOR_ID
  AND COUNT (ISBN) > 10;

SELECT AUTHOR_NAME
FROM AUTHORS
WHERE (SELECT COUNT (*)
       FROM AUTHORS-BOOKS, BOOKS
       WHERE AUTHORS.AUTHOR_ID =
         AUTHORS-BOOKS.AUTHOR_ID
         AND AUTHORS-BOOKS.ISBN =
           BOOKS.ISBN) > 10;

          
          
          
База данных АВТОРЫ-КНИГИ-ИЗДАТЕЛЬСТВА (AUTHORS-BOOKS-PUBLISHERS) состоит из следующих таблиц:

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?

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

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

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



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

SELECT PUB_NAME
FROM PUBLISHERS
WHERE (SELECT MAX (PRICE)
       FROM BOOKS
       WHERE PUBLISHERS.PUB_ID = BOOKS.PUB_ID) = SOME
      (SELECT AVG (PRICE)
       FROM PUBLISHERS PUBLISHERS1, BOOKS
       WHERE PUBLISHERS1.PUB_ID <>
         PUBLISHERS.PUB_ID
       GROUP BY PUBLISHERS1.PUB_ID);

SELECT PUB_NAME
FROM PUBLISHERS, BOOKS
WHERE PUBLISHERS.PUB_ID = BOOKS.PUB_ID
GROUP BY PUBLISHERS.PUB_ID
HAVING MAX (PRICE) IN (SELECT AVG (PRICE)
    FROM PUBLISHERS PUBLISHERS1, BOOKS
    WHERE PUBLISHERS1.PUB_ID <>
      PUBLISHERS.PUB_ID
    GROUP BY PUBLISHERS1.PUB_ID);

SELECT PUB_NAME
FROM PUBLISHERS, BOOKS
WHERE EXISTS (SELECT PUBLISHERS1.PUB_ID
    FROM PUBLISHERS PUBLISHERS1, BOOKS BOOKS1
    WHERE PUBLISHERS1.PUB_ID <>
      PUBLISHERS.PUB_ID
    GROUP BY PUBLISHERS1.PUB_ID
    HAVING AVG (BOOKS1.PRICE) =
      AVG (BOOKS.PRICE))
GROUP BY PUBLISHERS.PUB_ID;



База данных АВТОРЫ-КНИГИ-ИЗДАТЕЛЬСТВА (AUTHORS-BOOKS-PUBLISHERS) состоит из следующих таблиц:

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 и имена авторов книг, в название которых входит хотя бы одна цифра". Какие из приведенных ниже формулировок являются правильными?

SELECT BOOKS.ISBN, AUTHOR_NAME
FROM AUTHORS, AUTHORS-BOOKS, BOOKS
WHERE AUTHORS.AUTHOR_ID =
  AUTHORS-BOOKS.AUTHOR_ID
  AND AUTHORS-BOOKS.ISBN =
    BOOKS.ISBN
  AND TITLE SIMILAR ‘%[:DIGIT:]%’;

SELECT BOOKS.ISBN, AUTHOR_NAME
FROM AUTHORS, AUTHORS-BOOKS, BOOKS
WHERE AUTHORS.AUTHOR_ID =
  AUTHORS-BOOKS.AUTHOR_ID
  AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN
  AND TITLE SIMILAR
   ‘(%0%)|(%1%)|(%2%)|(%3%)|(%4%)|
    (%5%)|(%6%)|(%7%)|(%8%)|(%9%)’;

SELECT BOOKS.ISBN, AUTHOR_NAME
FROM AUTHORS, AUTHORS-BOOKS, BOOKS
WHERE AUTHORS.AUTHOR_ID =
  AUTHORS-BOOKS.AUTHOR_ID
  AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN
  AND TITLE SIMILAR ‘%[:ALNUM:][^A-Z]*%’;

 
 
База данных АВТОРЫ-КНИГИ-ИЗДАТЕЛЬСТВА (AUTHORS-BOOKS-PUBLISHERS) состоит из следующих таблиц:

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)". Какие из приведенных ниже формулировок являются правильными?

SELECT DISTINCT PUB_NAME
FROM PUBLISHERS, BOOKS,
     AUTHORS_BOOKS, AUTHORS
WHERE AUTHOR_NAME = ‘Chris Date’
  AND PUBLISHERS.PUB_ID =
    BOOKS.PUB_ID
  AND BOOKS.ISBN =
    AUTHORS_BOOKS.ISBN
  AND BOOKS.AUTHOR_ID =
    AUTHORS.AUTHOR_ID;

SELECT PUB_NAME
FROM PUBLISHERS, AUTHORS
WHERE AUTHOR_NAME = ‘Chris Date’;

SELECT DISTINCT PUB_NAME
FROM PUBLISHERS, BOOKS,
     AUTHORS_BOOKS, AUTHORS
WHERE AUTHOR_NAME = ‘Chris Date’
  AND PUBLISHERS.PUB_ID =
    BOOKS.PUB_ID
  AND BOOKS_ISBN =
    AUTHORS_BOOKS.ISBN;
   
   
   
Требуется сформулировать запрос “Найти имена авторов, книги которых издавались в издательствах Addison-Wesley, Morgan Kauffman и O’Reilly”. Какие из приведенных ниже формулировок являются правильными?

SELECT DISTINCT AUTHOR_NAME
FROM AUTHORS, AUTHORS-BOOKS,
     BOOKS, PUBLISHERS
WHERE AUTHORS.AUTHOR_ID =
  AUTHORS-BOOKS.AUTHOR_ID
  AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN
  AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID
  AND PUB_NAME = ‘Addison-Wesley’
  AND PUB_NAME = ‘Morgan Kauffman’
  AND PUB_NAME = “O’Reilly”;

SELECT AUTHOR_NAME
FROM AUTHORS, AUTHORS-BOOKS,
     BOOKS, PUBLISHERS
WHERE AUTHORS.AUTHOR_ID =
  AUTHORS-BOOKS.AUTHOR_ID
  AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN
  AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID
  AND (PUB_NAME = ‘Addison-Wesley’ OR
       PUB_NAME = ‘Morgan Kauffman’ OR
       PUB_NAME = ‘O’Reilly’);

SELECT DISTINCT AUTHORS.AUTHOR_NAME
FROM AUTHORS, AUTHORS-BOOKS,
     BOOKS, PUBLISHERS
WHERE AUTHORS.AUTHOR_ID =
  AUTHORS-BOOKS.AUTHOR_ID
  AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN
  AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID
  AND PUB.PUB_NAME
              IN (“Addison-Wesley”,
                  “Morgan Kauffman”,
                  “O’Reilly”);

Внимание !
Вопросы к тесту выложены исключительно в ознакомительных целях: количество вопросов может не совпадать с действительным, актуальность не поддерживается,- за решением теста Welcome to the cashier!

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

SELECT DISTINCT AUTHOR_NAME
FROM AUTHORS, AUTHORS AUTHORS1,
     AUTHORS-BOOKS AUTHORS-BOOKS1,
     BOOKS, BOOKS BOOKS1,
     PUBLISHERS PUBLISHERS1
WHERE AUTHORS.AUTHOR_ID =
  AUTHORS-BOOKS.AUTHOR_ID
  AND AUTHORS.AUTHOR_ID =
    AUTHORS-BOOKS.AUTHOR_ID
  AND AUTHORS-BOOKS.ISBN =
    BOOKS.ISBN
  AND BOOKS.PUB_ID =
    PUBLISHERS.PUB_ID
  AND PUBLISHERS.PUB_ID <>
    PUBLISHERS1.PUB_ID
  AND AUTHORS1.AUTHOR_NAME =
    ‘Chris Date’
  AND AUTHORS1.AUTHOR_ID =
    AUTHORS-BOOKS1.AUTHOR_ID
  AND AUTHORS-BOOKS1.ISBN =
    BOOKS1.ISBN
  AND BOOKS1.PUB_ID =
    PUBLISHERS1.PUB_ID);

SELECT DISTINCT AUTHOR_NAME
FROM AUTHORS, AUTHORS-BOOKS,
     BOOKS, PUBLISHERS
WHERE AUTHORS.AUTHOR_ID =
  AUTHORS-BOOKS.AUTHOR_ID
  AND AUTHORS.AUTHOR_ID =
    AUTHORS-BOOKS.AUTHOR_ID
  AND AUTHORS-BOOKS.ISBN =
    BOOKS.ISBN
  AND BOOKS.PUB_ID =
    PUBLISHERS.PUB_ID
  AND PUBLISHERS.PUB_ID NOT IN
                (SELECT PUBLISHERS.PUB_ID
                  FROM AUTHORS, AUTHORS-BOOKS,
                       BOOKS, PUBLISHERS)
                  WHERE AUTHORS.AUTHOR_NAME =
                    ‘Chris Date’
                    AND AUTHORS.AUTHOR_ID =
                      AUTHORS-BOOKS.AUTHOR_ID
                    AND AUTHORS-BOOKS.ISBN =
                      BOOKS.ISBN
                    AND BOOKS.PUB_ID =
                      PUBLISHERS.PUB_ID);

SELECT AUTHOR_NAME
FROM AUTHORS
WHERE AUTHOR_ID NOT IN
     (SELECT AUTHOR_ID
       FROM AUTHORS-BOOKS,
            BOOKS, PUBLISHERS
       WHERE AUTHORS-BOOKS.ISBN =
         BOOKS.ISBN
         AND BOOKS.PUB_ID =
           PUBLISHERS.PUB_ID
         AND PUBLISHERS.PUB_ID IN
             (SELECT PUBLISHERS.PUB_ID
               FROM AUTHORS, AUTHORS-BOOKS,
                    BOOKS, PUBLISHERS)
               WHERE AUTHORS.AUTHOR_NAME =
                 ‘Chris Date’
                 AND AUTHORS.AUTHOR_ID =
                   AUTHORS-BOOKS.AUTHOR_ID
                 AND AUTHORS-BOOKS.ISBN =
                   BOOKS.ISBN
                 AND BOOKS.PUB_ID =
                   PUBLISHERS.PUB_ID));

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

SELECT COUNT (DISTINCT BOOKS.ISBN)
FROM BOOKS, PUBLISHERS, AUTHORS, AUTHORS-BOOKS
WHERE BOOKS.PUB_ID = PUBLISHERS.PUB_ID
  AND EXTRACT (YEAR FROM BOORS.DATE_OF_PUB) =
    2002
  AND AUTHORS.AUTHOR_NAME = ‘Chris Date’
  AND AUTHORS.AUTHOR_ID =
    AUTHORS-BOOKS.AUTHOR_ID
  AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN
  AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID;

SELECT COUNT (BOOKS.ISBN)
FROM BOOKS, PUBLISHERS
WHERE BOOKS.PUB_ID = PUBLISHERS.PUB_ID
  AND EXTRACT (YEAR FROM BOOKS.DATE_OF_PUB) =
    2002
  AND PUBLISHERS.PUB_ID IN
                (SELECT PUB_ID
                  FROM AUTHORS, AUTHORS-BOOKS,
                       BOOKS, PUBLISHERS
                  WHERE AUTHORS.AUTHOR_NAME =
                    ‘Chris Date’
                    AND AUTHORS.AUTHOR_ID =
                      AUTHORS-BOOKS.AUTHOR_ID
                    AND AUTHORS-BOOKS.ISBN =
                      BOOKS.ISBN
                    AND BOOKS.PUB_ID =
                      PUBLISHERS.PUB_ID);

SELECT COUNT (DISTINCT BOOKS.ISBN)
FROM BOOKS, BOOKS BOOKS1, PUBLISHERS,
     PUBLISHERS PUBLISHERS1,
     AUTHORS, AUTHORS-BOOKS
WHERE BOOKS.PUB_ID = PUBLISHERS.PUB_ID
  AND EXTRACT (YEAR FROM BOORS.DATE_OF_PUB) =
    2002
  AND PUBLISHERS.PUB_ID = PUBLISHERS1.PUB_ID
  AND AUTHORS.AUTHOR_NAME = ‘Chris Date’
  AND AUTHORS.AUTHOR_ID =
    AUTHORS-BOOKS.AUTHOR_ID
  AND AUTHORS-BOOKS.ISBN = BOOKS1.ISBN
  AND BOOKS1.PUB_ID = PUBLISHERS1.PUB_ID;

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

SELECT PUBLISHERS.PUB_NAME, AUTHOR_NAME
FROM AUTHORS, AUTHORS-BOOKS,
     BOOKS, BOOKS BOOKS1, PUBLISHERS,
     PUBLISHERS PUBLISHERS1
WHERE AUTHORS.AUTHOR_ID =
  AUTHORS-BOOKS.AUTHOR_ID
  AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN
  AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID
  AND BOOKS.PRICE > BOOKS1.PRICE
  AND BOOKS1.PUB_ID = PUBLISHERS.PUB_ID
  AND BOOKS1.PUB_ID = PUBLISHERS1.PUB_ID

SELECT PUBLISHERS.PUB_NAME, AUTHOR_NAME
FROM AUTHORS, AUTHORS-BOOKS, BOOKS, PUBLISHERS
WHERE AUTHORS.AUTHOR_ID =
  AUTHORS-BOOKS.AUTHOR_ID
  AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN
  AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID
  AND NOT EXISTS (SELECT *
                   FROM BOOKS BOOKS1,
                      PUBLISHERS PUBLISHERS1
                   WHERE BOOKS1.PUB_ID =
                     PUBLISHERS1.PUB_ID
                     AND PUBLISHERS1.PUB_ID =
                       PUBLISHERS.PUB_ID
                     AND BOOKS1.PRICE >
                       BOOKS.PRICE);

SELECT PUBLISHERS.PUB_NAME, AUTHOR_NAME
FROM AUTHORS, AUTHORS-BOOKS,
     BOOKS, PUBLISHERS
WHERE AUTHORS.AUTHOR_ID =
  AUTHORS-BOOKS.AUTHOR_ID
  AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN
  AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID
  AND BOOKS.PRICE = (SELECT MAX (BOOKS1.PRICE)
                      FROM BOOKS BOOKS1,
                          PUBLISHERS PUBLISHERS1
                      WHERE BOOKS1.PUB_ID =
                        PUBLISHERS1.PUB_ID
                        AND PUBLISHERS1.PUB_ID =
                          PUBLISHERS.PUB_ID);

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


SELECT DISTINCT AUTHOR_NAME
FROM AUTHORS, AUTHORS-BOOKS,
     BOOKS, PUBLISHERS
WHERE AUTHORS.AUTHOR_ID =
  AUTHORS-BOOKS.AUTHOR_ID
  AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN
  AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID
  AND BOOKS.TITLE LIKE ‘%’ ||
    PUBLISHERS.PUB_NAME || ‘%’;

SELECT DISTINCT AUTHOR_NAME
FROM AUTHORS, AUTHORS-BOOKS,
     BOOKS, PUBLISHERS
WHERE AUTHORS.AUTHOR_ID =
  AUTHORS-BOOKS.AUTHOR_ID
  AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN
  AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID
  AND BOOKS.TITLE LIKE ‘_’ ||
    PUBLISHERS.PUB_NAME || ‘_’;

SELECT AUTHOR_NAME
FROM AUTHORS, AUTHORS-BOOKS,
     BOOKS, PUBLISHERS
WHERE AUTHORS.AUTHOR_ID =
  AUTHORS-BOOKS.AUTHOR_ID
  AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN
  AND BOOKS.PUB_ID =
    PUBLISHERS.PUB_ID
  AND BOOKS.TITLE LIKE ‘%PUBLISHERS.PUB_NAME%’;

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

SELECT AUTHOR_NAME
FROM AUTHORS, AUTHORS-BOOKS
WHERE AUTHORS.AUTHOR_ID =
  AUTHORS-BOOKS.AUTHOR_ID
  AND COUNT (ISBN)
BETWEEN (SELECT COUNT (ISBN)
    FROM AUTHORS, AUTHORS-BOOKS
    WHERE AUTHORS.AUTHOR_NAME = ‘Brown’)
AND     (SELECT COUNT (ISBN)
    FROM AUTHORS, AUTHORS-BOOKS
    WHERE AUTHORS.AUTHOR_NAME = ‘Smith’);

SELECT AUTHOR_NAME
FROM AUTHORS
WHERE (SELECT COUNT (ISBN)
     FROM AUTHORS-BOOKS
     WHERE AUTHORS.AUTHOR_ID =
       AUTHORS-BOOKS.AUTHOR_ID)
BETWEEN (SELECT COUNT (ISBN)
    FROM AUTHORS, AUTHORS-BOOKS
    WHERE AUTHORS.AUTHOR_NAME = ‘Brown’)
AND     (SELECT COUNT (ISBN)
    FROM AUTHORS, AUTHORS-BOOKS
    WHERE AUTHORS.AUTHOR_NAME = ‘Smith’);

SELECT AUTHOR_NAME
FROM AUTHORS
WHERE (SELECT COUNT (ISBN)
     FROM AUTHORS-BOOKS
     WHERE AUTHORS.AUTHOR_ID =
       AUTHORS-BOOKS.AUTHOR_ID)
BETWEEN (SELECT COUNT (ISBN)
    FROM AUTHORS, AUTHORS-BOOKS
    WHERE AUTHORS.AUTHOR_NAME =
      ‘Brown’
             AND AUTHORS.AUTHOR_ID =
               AUTHORS-BOOKS.AUTHOR_ID)
AND     (SELECT COUNT (ISBN)
    FROM AUTHORS, AUTHORS-BOOKS
    WHERE AUTHORS.AUTHOR_NAME = ‘Smith’
             AND AUTHORS.AUTHOR_ID =
               AUTHORS-BOOKS.AUTHOR_ID); 

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

SELECT BOOKS.ISBN, AUTHOR_NAME
FROM AUTHORS, AUTHORS-BOOKS, BOOKS
WHERE AUTHORS.AUTHOR_ID =
  AUTHORS-BOOKS.AUTHOR_ID
  AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN
  AND BOOKS.TITLE LIKE ‘%DBMS%’
  AND BOOKS.TITLE NOT LIKE ‘%database%’
  AND BOOKS.TITLE NOT LIKE ‘%data base%’;

SELECT DISTINCT BOOKS.ISBN, AUTHOR_NAME
FROM AUTHORS, AUTHORS-BOOKS, BOOKS
WHERE AUTHORS.AUTHOR_ID =
  AUTHORS-BOOKS.AUTHOR_ID
  AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN
  AND BOOKS.TITLE LIKE ‘%DBMS%’
  AND BOOKS.TITLE NOT LIKE ‘%data%base%’;

SELECT ISBN, AUTHOR_NAME
FROM AUTHORS, AUTHORS-BOOKS
WHERE ISBN IN (SELECT ISBN
      FROM BOOKS
WHERE TITLE LIKE ‘%DBMS%’
  AND TITLE NOT LIKE ‘%database%’
  AND TITLE NOT LIKE ‘%data base%’);

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

SELECT DISTINCT BOOKS.ISBN
FROM AUTHORS, AUTHORS-BOOKS, BOOKS
WHERE AUTHORS.AUTHOR_NAME <> ‘Chris Date’
  AND AUTHOR.AUTHOR_ID =
    AUTHORS-BOOKS.AUTHOR_ID
  AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN
  AND BOOKS.TITLE = SOME
              (SELECT BOOKS.TITLE
                FROM AUTHORS, AUTHORS-BOOKS,
                     BOOKS
                WHERE AUTHORS.AUTHOR_ID =
                  AUTHORS-BOOKS.AUTHOR_ID
                  AND AUTHORS-BOOKS.ISBN =
                    BOOKS.ISBN
                  AND AUTHORS.AUTHOR_NAME =
                    ‘Chris Date’);

SELECT DISTINCT BOOKS.ISBN
FROM AUTHORS, AUTHORS AUTHORS1,
     BOOKS, BOOKS BOOKS1,
     AUTHORS-BOOKS, AUTHORS-BOOKS1
WHERE AUTHORS.AUTHOR_NAME <>
  ‘Chris Date’
  AND AUTHORS1.AUTHOR_NAME =
    ‘Chris Date’
  AND AUTHOR.AUTHOR_ID =
    AUTHORS-BOOKS.AUTHOR_ID
  AND AUTHOR1.AUTHOR_ID =
    AUTHORS-BOOKS1.AUTHOR_ID
  AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN
  AND AUTHORS-BOOKS1.ISBN = BOOKS1.ISBN
  AND BOOKS.TITLE = BOOKS1.TITLE;

SELECT ISBN
FROM BOOKS
WHERE ISBN IN (SELECT BOOKS.ISBN
                FROM AUTHORS, AUTHORS-BOOKS,
                     BOOKS
                WHERE AUTHORS.AUTHOR_NAME <>
                  ‘Chris Date’
                  AND AUTHOR.AUTHOR_ID =
                    AUTHORS-BOOKS.AUTHOR_ID
                  AND AUTHORS-BOOKS.ISBN =
                    BOOKS.ISBN)
  AND TITLE IN (SELECT BOOKS.TITLE
                 FROM AUTHORS, AUTHORS-BOOKS,
                      BOOKS
                 WHERE AUTHORS.AUTHOR_NAME =
                   ‘Chris Date’
                   AND AUTHOR.AUTHOR_ID =
                     AUTHORS-BOOKS.AUTHOR_ID
                   AND AUTHORS-BOOKS.ISBN =
                     BOOKS.ISBN);
                     
                     
                     
Требуется сформулировать запрос “Найти названия издательств, издававших книги хотя бы одного автора из Москвы”. Какие из приведенных ниже формулировок являются правильными?

SELECT PUBLISHERS.PUB_NAME
FROM AUTHORS, AUTHORS-BOOKS,
     BOOKS, PUBLISHERS
WHERE AUTHORS.AUTHOR_ID =
  AUTHORS-BOOKS.AUTHOR_ID
  AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN
  AND AUTHORS.ADDRESS LIKE ‘%Moscow%’;

SELECT PUB_NAME
FROM PUBLISHERS,
WHERE (SELECT COUNT (AUTHOR.AUTHOR_ID)
        FROM AUTHORS, AUTHORS-BOOKS,
             BOOKS, PUBLISHERS PUBLISHERS1
        WHERE AUTHORS.AUTHOR_ID =
          AUTHORS-BOOKS.AUTHOR_ID
          AND AUTHORS-BOOKS.ISBN =
            BOOKS.ISBN
          AND BOOKS.PUB_ID =
            PUBLISHERS.PUB_ID
          AND PUBLISHERS1.PUB_ID =
            PUBLISHERS.PUB_ID
          AND AUTHORS.ADDRESS LIKE
            ‘%Moscow%’) >= 1;

SELECT PUB_NAME
FROM PUBLISHERS,
WHERE EXISTS (SELECT *
               FROM AUTHORS, AUTHORS-BOOKS,
                 BOOKS, PUBLISHERS PUBLISHERS1
               WHERE AUTHORS.AUTHOR_ID =
                 AUTHORS-BOOKS.AUTHOR_ID
                 AND AUTHORS-BOOKS.ISBN =
                   BOOKS.ISBN
                 AND BOOKS.PUB_ID =
                   PUBLISHERS.PUB_ID
                 AND PUBLISHERS1.PUB_ID =
                   PUBLISHERS.PUB_ID
                 AND AUTHOR.ADDRESS LIKE
                   ‘%Moscow%’);
                  
                  
                  
Требуется сформулировать запрос “Найти названия издательств, в которых Кристофер Дейт издал хотя бы одну книгу объемом меньше 300 страниц”. Какие из приведенных ниже формулировок являются правильными?

SELECT PUB_NAME
FROM PUBLISHERS, AUTHORS, AUTHORS-BOOKS, BOOKS
WHERE BOOKS.PUB_ID = PUBLISHERS.PUB_ID
  AND BOOKS.ISBN = AUTHORS-BOOKS.ISBN
  AND AUTHORS-BOOKS.AUTHOR_ID =
    AUTHORS.AUTHOR_ID
  AND AUTHORS.AUTHOR_NAME = ‘Chris Date’
  AND BOOKS.NUMBER_OF_PAGES < 300);

SELECT PUB_NAME
FROM PUBLISHERS
WHERE EXISTS (SELECT *
              FROM AUTHORS, AUTHORS-BOOKS,
                   BOOKS
              WHERE BOOKS.PUB_ID =
                PUBLISHERS.PUB_ID
                AND BOOKS.ISBN =
                  AUTHORS-BOOKS.ISBN
                AND AUTHORS-BOOKS.AUTHOR_ID =
                  AUTHORS.AUTHOR_ID
                AND AUTHORS.AUTHOR_NAME =
                  ‘Chris Date’
                AND BOOKS.NUMBER_OF_PAGES <
                  300);

SELECT PUB_NAME
FROM PUBLISHERS
WHERE (SELECT MIN (NUMBER_OF_PAGES)
       FROM AUTHORS, AUTHORS-BOOKS, BOOKS
       WHERE BOOKS.PUB_ID = PUBLISHERS.PUB_ID
         AND BOOKS.ISBN = AUTHORS-BOOKS.ISBN
         AND AUTHORS-BOOKS.AUTHOR_ID =
           AUTHORS.AUTHOR_ID
         AND AUTHORS.AUTHOR_NAME =
           ‘Chris Date’) < 300;

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

SELECT DISTINCT AUTHOR_NAME
FROM AUTHORS, AUTHORS-BOOKS
WHERE AUTHOR_NAME <> ‘Chris Date’
  AND AUTHORS.AUTHOR_ID =
    AUTHORS-BOOKS.AUTHOR_ID
  AND EXISTS (SELECT *
              FROM AUTHORS,
                   AUTHORS-BOOKS AUTHORS-BOOKS1
              WHERE AUTHORS-BOOKS1.ISBN =
                AUTHORS-BOOKS.ISBN
                AND AUTHORS-BOOKS1.AUTHOR_ID =
                  AUTHORS.AUTHOR_ID
                AND AUTHOR_NAME = ‘Chris Date’);

SELECT AUTHOR_NAME
FROM AUTHORS, AUTHORS-BOOKS
WHERE AUTHORS.AUTHOR_ID =
  AUTHORS-BOOKS.AUTHOR_ID
  AND EXISTS (SELECT *
              FROM AUTHORS,
                   AUTHORS-BOOKS AUTHORS-BOOKS1
              WHERE AUTHORS-BOOKS1.ISBN =
                AUTHORS-BOOKS.ISBN
                AND AUTHORS-BOOKS1.AUTHOR_ID =
                  AUTHORS.AUTHOR_ID
                AND AUTHOR_NAME = ‘Chris Date’);

SELECT DISTINCT AUTHOR_NAME
FROM AUTHORS, AUTHORS-BOOKS
WHERE AUTHOR_NAME = ‘Chris Date’
  AND AUTHORS.AUTHOR_ID =
    AUTHORS-BOOKS.AUTHOR_ID
  AND EXISTS (SELECT *
              FROM AUTHORS,
                   AUTHORS-BOOKS AUTHORS-BOOKS1
              WHERE AUTHORS-BOOKS1.ISBN =
                AUTHORS-BOOKS.ISBN
                AND AUTHORS-BOOKS1.AUTHOR_ID =
                  AUTHORS.AUTHOR_ID
                AND AUTHOR_NAME <>
                  ‘Chris Date’);
                 
                 
                 
Требуется сформулировать запрос “Найти названия книг, опубликованных Кристофером Дейтом в издательствах, которые в течение последнего года выпустили книги, суммарная цена которых превышает 100000.00”. Какие из приведенных ниже формулировок являются правильными?

SELECT TITLE
FROM AUTHORS, AUTHORS-BOOKS, BOOKS, PUBLISHERS
WHERE AUTHOR_NAME = ‘Chris Date’
  AND AUTHORS.AUTHOR_ID =
    AUTHORS-BOOKS.AUTHOR_ID
  AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN
  AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID
  AND PUBLISHERS.PUB_ID =
      (SELECT PUBLISHERS1.PUB_ID
       FROM PUBLISHERS PUBLISHERS1
       WHERE PUBLISHERS1.PUB_ID =
         PUBLISHERS.PUB_ID
         AND (SELECT SUM (PRICE)
              FROM BOOKS
              WHERE BOOKS.PUB_ID =
                PUBLISHERS1.PUB_ID
                AND DATE_OF_PUB –
                  CURRENT_DATE <=
                       INTERVAL ‘1’ YEAR) >=
                         100000.00);

SELECT TITLE
FROM AUTHORS, AUTHORS-BOOKS, BOOKS, PUBLISHERS
WHERE AUTHOR_NAME = ‘Chris Date’
  AND AUTHORS.AUTHOR_ID =
    AUTHORS-BOOKS.AUTHOR_ID
  AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN
  AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID
  AND EXISTS
      (SELECT PUBLISHERS1.PUB_ID
       FROM PUBLISHERS PUBLISHERS1
       WHERE (SELECT SUM (PRICE)
              FROM BOOKS
              WHERE BOOKS.PUB_ID =
                PUBLISHERS1.PUB_ID
                AND DATE_OF_PUB –
                  CURRENT_DATE <=
                       INTERVAL ‘1’ YEAR) >=
                         100000.00);

SELECT TITLE
FROM AUTHORS, AUTHORS-BOOKS, BOOKS,
     PUBLISHERS
WHERE AUTHOR_NAME = ‘Chris Date’
  AND AUTHORS.AUTHOR_ID =
    AUTHORS-BOOKS.AUTHOR_ID
  AND AUTHORS-BOOKS.ISBN = BOOKS.ISBN
  AND BOOKS.PUB_ID = PUBLISHERS.PUB_ID
  AND PUBLISHERS.PUB_ID IN
      (SELECT PUBLISHERS1.PUB_ID
       FROM PUBLISHERS PUBLISHERS1
       WHERE (SELECT SUM (PRICE)
              FROM BOOKS
              WHERE BOOKS.PUB_ID =
                PUBLISHERS1.PUB_ID
                AND DATE_OF_PUB –
                  CURRENT_DATE <=
                       INTERVAL ‘1’ YEAR) >=
                         100000.00);
                         
                         
                         
База данных АВТОРЫ-КНИГИ-ИЗДАТЕЛЬСТВА (AUTHORS-BOOKS-PUBLISHERS) состоит из следующих таблиц:

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




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

SELECT PUB_NAME, PUB_ADDRESS,
       AVG (PRICE), MAX (PRICE),
       COUNT (DISTINCT AUTHOR_ID)
FROM AUTHORS-BOOKS, BOOKS, PUBLISHERS
WHERE PUBLISHERS.PUB_ID = BOOKS.PUB_ID
  AND BOOKS.ISBN = AUTHORS-BOOKS.ISBN
GROUP BY PUBLISHERS.PUB_ID;


SELECT PUB_NAME, PUB_ADDRESS,
       AVG (PRICE), MAX (PRICE),
       COUNT (DISTINCT AUTHOR_ID)
FROM AUTHORS-BOOKS, BOOKS, PUBLISHERS
GROUP BY PUBLISHERS.PUB_ID
HAVING PUBLISHERS.PUB_ID = BOOKS.PUB_ID
   AND BOOKS.ISBN = AUTHORS-BOOKS.ISBN;


SELECT DISTINCT PUB_NAME, PUB_ADDRESS,
    (SELECT AVG (PRICE)
        FROM BOOKS
        WHERE PUBLISHERS.PUB_ID = BOOKS.PUB_ID),
    (SELECT MAX (PRICE)
        FROM BOOKS
        WHERE PUBLISHERS.PUB_ID = BOOKS.PUB_ID),
    (SELECT COUNT (DISTINCT AUTHOR_ID)
        FROM BOOKS, AUTHORS-BOOKS
        WHERE BOOKS.PUB_ID = PUBLISHERS.PUB_ID
        AND BOOKS.ISBN = AUTHORS-BOOKS.ISBN)
FROM PUBLISHERS;

Вы можете обратится к нам напрямую, через:

skype По Skype: molodoyberkut
telegram По Telegram: @MolodoyBerkut
icq По ICQ: 657089516

Или через форму обратной связи на нашем сайте
Пока сочиняется...
4.png