Главная / Базы данных /
SQL и процедурно-ориентированные языки / Тест 5
SQL и процедурно-ориентированные языки - тест 5
Упражнение 1:
Номер 1
Какие из следующих подзапросов можно отнести к табличному подзапросу:
Ответ:
 (1)
SELECT f1,f2,f3 from tbl1 WHERE EXISTS
(SELECT * FROM tbl2); 
 (2)
SELECT f1,f2,f3 from tbl1
WHERE f3 = ANY (SELECT f3 FROM tbl2); 
 (3)
SELECT f1, COUNT(*), SUM(f2) from tbl1 t1
GROUP BY f1 HAVING SUM(f2)> (
SELECT MIN(f2)*4 FROM tbl1 t1_in
WHERE t1.f1=t1_in.f1); 
 (4)
SELECT * from tbl1 WHERE f2=(
SELECT f2 FROM tbl2 WHERE f1=1); 
Номер 2
Какие из следующих подзапросов можно отнести к скалярному подзапросу:
Ответ:
 (1)
SELECT f1,f2,f3 from tbl1
WHERE f3 = ANY (SELECT f3 FROM tbl2); 
 (2)
SELECT * from tbl1 WHERE f2 IN
(SELECT f2 FROM tbl2 WHERE f3>100); 
 (3)
SELECT f1, COUNT(*), SUM(f2) from tbl1 t1
GROUP BY f1 HAVING SUM(f2) > (
SELECT MIN(f2)*4 FROM tbl1 t1_in
WHERE t1.f1=t1_in.f1); 
 (4)
SELECT * from tbl1 WHERE f2=(
SELECT f2 FROM tbl2 WHERE f1=1); 
Номер 3
Какие из следующих подзапросов можно отнести к подзапросу строки, если в поле f1
таблицы tbl1
содержатся уникальные данные:
Ответ:
 (1)
SELECT f1,f2,f3 from tbl1 WHERE EXISTS
(SELECT * FROM tbl1); 
 (2)
INSERT INTO tbl2(f1,f2,f3) (SELECT f1,f2,f3
FROM tbl1 WHERE f1=1); 
 (3)
SELECT f1,f2,f3 from tbl1
WHERE f3 = ANY (SELECT f3 FROM tbl2); 
 (4)
SELECT * from tbl2
WHERE f2 IN (SELECT f2 FROM tbl1); 
 (5)
SELECT * from tbl1
WHERE f2=(SELECT f2 FROM tbl2 WHERE f1=1); 
Упражнение 2:
Номер 1
Отметьте SQL-оператор, определяющий коррелированный подзапрос, имеющий правильный синтаксис:
Ответ:
 (1)
SELECT f1, COUNT(*), SUM(f2)
from tbl1 t1 GROUP BY f1 HAVING SUM(f2)> (
SELECT MIN(f2)*4 FROM tbl1 t1_in
WHERE t1.f1=t1_in.f1); 
 (2)
SELECT f1, COUNT(*), SUM(f2)
from tbl1 t1 GROUP BY f1 HAVING f2> (
SELECT MIN(f2)*4 FROM tbl1 t1_in
WHERE t1.f1=t1_in.f1); 
Номер 2
Отметьте SQL-операторы, определяющие коррелированный подзапрос и имеющие правильный синтаксис:
Ответ:
 (1)
SELECT * from tbl1 t1 WHERE f2 IN (
SELECT f2 FROM tbl2 t2
WHERE t1.f3=t2.f3); 
 (2)
SELECT * from tbl1 t1 WHERE f2 IN (
SELECT f2 FROM tbl2 WHERE t1.f3=f3); 
Номер 3
Отметьте SQL-операторы, определяющие коррелированный подзапрос и имеющие правильный синтаксис:
Ответ:
 (1)
SELECT f1.f2.f3 FROM tbl1 WHERE f2> (
SELECT AVG(f2) FROM tbl1); 
 (2)
SELECT * from tbl1 t1 WHERE f2 IN (
SELECT f2 FROM tbl2 t2 WHERE t1.f3=t2.f3); 
Упражнение 3:
Номер 1
Отметьте пары значений, которые будут вставлены в таблицу tbl1
оператором
INSERT INTO tbl1(f1,f2)
VALUES (1+ COALESCE (
SELECT MAX(f1) FROM tbl1, 0 ), 100);, если эта таблица не содержит ни одной строки:
Ответ:
 (1) 0 10 
 (2) 1 10 
 (3) 1 100 
 (4) NULL
100 
Упражнение 4:
Номер 1
Какие из следующих подзапросов можно отнести к табличному подзапросу:
Ответ:
 (1)
SELECT f1,f2,f3 from tbl1
WHERE f3 = ANY (SELECT f3 FROM tbl2); 
 (2)
SELECT f1, COUNT(*), MIN(f2) from tbl1 t1
GROUP BY f1 HAVING MAX(f2)> (
SELECT AVG(f2)*8 FROM tbl1 t11
WHERE t1.f1=t11.f1); 
 (3)
SELECT f1,f2 from tbl1 WHERE f2=(
SELECT f2 FROM tbl2 WHERE f1=1); 
Номер 2
Отметьте SQL-операторы, определяющие коррелированный подзапрос и имеющие правильный синтаксис:
Ответ:
 (1)
SELECT f1.f2.f3 FROM tbl1 WHERE f2> (
SELECT AVG(f2) FROM tbl1); 
 (2)
SELECT * from tbl1 t1 WHERE f2 IN (
SELECT f2 FROM tbl2 t2 WHERE t1.f3=t2.f3); 
 (3)
SELECT f1, COUNT(*), SUM(f2)
from tbl1 t1 GROUP BY f1 HAVING f2> (
SELECT MIN(f2)*4 FROM tbl1 t1_in
WHERE t1.f1=t1_in.f1); 
Номер 3
Отметьте пары значений, которые будут вставлены в таблицу tbl1
оператором
INSERT INTO tbl1(f1,f2)
VALUES (10+ COALESCE (
SELECT MAX(f1) FROM tbl1, 0 ), 50);, если эта таблица не содержит ни одной строки:
Ответ:
 (1) 0 50 
 (2) 1 50 
 (3) 10 50 
 (4) NULL
50 
Упражнение 5:
Номер 1
Какие из следующих подзапросов можно отнести к скалярному подзапросу:
Ответ:
 (1)
SELECT f1,f2,f3 from tbl1
WHERE f2 = IN (SELECT f2 FROM tbl2); 
 (2)
SELECT * from tbl1
WHERE f2 ANY (SELECT f2 FROM tbl2
WHERE f3>50); 
 (3)
SELECT f1,f2,f3 from tbl1
WHERE f2=(SELECT f2 FROM tbl2
WHERE f1=1010); 
Номер 2
Отметьте SQL-операторы, определяющие коррелированный подзапрос и имеющие правильный синтаксис:
Ответ:
 (1)
SELECT f1,f2,f3 from tbl1 t1
WHERE f2 ANY (SELECT f2 FROM tbl2 t2
WHERE t1.f3=t2.f3); 
 (2)
SELECT * from tbl1 t1 WHERE f2 IN (
SELECT f2 FROM tbl2 WHERE f3>100); 
 (3)
SELECT f1, MIN(f2)
from tbl1 t1 GROUP BY f1 HAVING MAX(f2)> (
SELECT AVG(f2)*8 FROM tbl1 t11
WHERE t1.f1=t11.f1);  
Номер 3
Отметьте все пары значений, которые будут занесены в результирующий набор оператором
SELECT f1, CASE f2 WHEN 'aaa' THEN 'AAA' ELSE f2 END FROM tbl1;, если таблица tbl1
содержит следующие строки:
поле f1 : | поле f2 : |
---|
1 | 'aaa' |
2 | 'bbb' |
3 | 'ccc' |
4 | 'ddd' |
Ответ:
 (1) 1 'aaa' 
 (2) 1 'AAA' 
 (3) 2 'bbb' 
 (4) 3 'ccc' 
 (5) 4 'ddd'