игра брюс 2048
Главная / Базы данных / Введение в Oracle SQL / Тест 8

Введение в Oracle SQL - тест 8

Упражнение 1:
Номер 1
Даны таблицы: 
 
ANIMALS
FAMILYNAME
mammaldog
mammallion
fishguppy
birdeagle
fishbass
birdpelican
insectbeetle
BLOOD_TYPES
FAMILYBLOOD_TYPE
mammalwarm_blooded
fishcold_blooded
birdcold_blooded
Запрос SQL:SELECT a.family, a.name FROM animals a INNER JOIN blood_types t ON (a.family = t.family) WHERE a.family NOT IN ('fish', 'bird'); Количество строк, возвращенных запросом, = ...

Ответ:

 (1)

 (2)

 (3)

 (4)

 (5)


Номер 2
Дана таблица: 
ANIMALS
IDFAMILYANIMALCOLOR
1mammaldogbrown
2mammalzebrablack,white
3fishsharkgray
4birdgullwhite
5birdpelicanwhite
6fishtroutgray
Запрос SQL: SELECT a1.animal, a2.animal, a1.color FROM animals a1, animals a2 WHERE a1.color = a2.color AND a1.animal <> a2.animal; Количество строк, возвращенных запросом, = ...

Ответ:

 (1)

 (2)

 (3)

 (4)

 (5)


Номер 3
Даны таблицы: 
 
ANIMALS
FAMILYNAME
mammaldog
mammallion
fishguppy
birdeagle
fishguppy
birdpelican
reptilesnake
BLOOD_TYPES
FAMILYBLOOD_TYPE
mammalwarm_blooded
fishcold_blooded
birdcold_blooded
Запрос SQL:SELECT DISTINCT a.name FROM animals a, blood_types t WHERE a.family = t.family; Количество строк, возвращенных запросом, = ...

Ответ:

 (1)

 (2)

 (3)

 (4)

 (5)


Упражнение 2:
Номер 1
В базе данных существуют таблицы AUTHORS (авторы) и EMPLOYEES (сотрудники). Запросы SQL, возвращающие список фамилий (столбец NAME) всех авторов и сотрудников:

Ответ:

 (1) Select distinct NAME From AUTHORS, EMPLOYEES; 

 (2) Select NAME From AUTHORS union Select NAME From EMPLOYEES 

 (3) Select NAME From AUTHORS inner join EMPLOYEES 

 (4) Select NAME From AUTHORS Where NAME in (Select NAME From EMPLOYEES) 


Номер 2
Запрос SQL: SELECT a.lname, a.fname FROM a, b 
WHERE a.lname = b.lname AND b.sex = 'male';Выборку, эквивалентную результату запроса, возвращает команда:

Ответ:

 (1) SELECT a.lname, a.fname FROM a, b WHERE b.sex = 'male'; 

 (2) SELECT lname, fname FROM a WHERE lname IN (SELECT lname FROM b); 

 (3) SELECT lname, fname FROM a WHERE lname IN (SELECT lname FROM b WHERE b.sex = 'male'); 

 (4) SELECT lname, fname FROM a; 


Номер 3
Ситуация, в которых логично использовать соединение таблицы EMPLOYEE и REGION с собой:

Ответ:

 (1) таблицы EMPLOYEE и REGION имеют соответствующие друг другу столбцы 

 (2) таблицы EMPLOYEE и REGION не имеют соответствующих друг другу столбцов 

 (3) таблица EMPLOYEE имеет 2 столбца, соответствующих друг другу 

 (4) столбец таблицы EMPLOYEE, соответствующий стобцу таблицы REGION, содержит пустые значения в строках, которые должны войти в результат выборки 


Упражнение 3:
Номер 1
Синтаксически корректные запросы SQL:

Ответ:

 (1) SELECT i.product, i.qty FROM inventory i JOIN RIGHT sales s ON i.id = s.prod_id WHERE s.sales > 10000; 

 (2) SELECT g.description, AVG(b.price) FROM books b WHERE b.book_id = genre.id AND b.author_id = 5 GROUP BY g.description; 

 (3) SELECT e.last_name, e.first_name FROM employees e, payroll p WHERE e.salary_id(+) = p.id AND last_name like 'A%'; 

 (4) SELECT s.title, MIN(start_time) FROM shows s, networks n WHERE s.net_id = n.id AND n.name = 'NBC' GROUP BY s.title; 

 (5) SELECT s.id, SUM(credit_hrs) FROM students s, classes c WHERE s.id(+) = c.student_id(+) AND c.active = 'Y' GROUP BY s.id; 


Номер 2
Запрос SQL:SELECT t.city, t.name 
FROM teams t, payroll p 
WHERE t.id = p.team_id 
AND   p.total_amt > 5000000 
AND   t.country = 'Canada';
 Выборку, эквивалентную результату запроса, возвращает команда:

Ответ:

 (1) SELECT city, name FROM payroll WHERE total_amt > (SELECT SUM(amount) FROM teams WHERE t.country = 'Canada' GROUP BY 1 HAVING SUM(amount) > 5000000); 

 (2) SELECT city, name FROM teams WHERE total_amt > 5000000 AND country IN (SELECT * FROM payroll WHERE country = 'Canada'); 

 (3) SELECT t.city, t.name FROM teams t, payroll p WHERE t.id = p.id AND p.total_amt = 5000000 AND country = 'Canada'); 

 (4) SELECT t.city, t.name FROM teams t, payroll p WHERE t.id = p.team_id AND p.total_amt > 5000000 AND country <> 'Canada'); 

 (5) SELECT city, name FROM teams WHERE country = 'Canada' AND EXISTS (SELECT * FROM payroll WHERE team_id = teams.id AND total_amt > 5000000); 


Номер 3
Даны таблицы: 
PEOPLE
NAMEPERSON_ID
Bill1
Ted2
Al3
JOBS
JOB_IDDESCRIPTION
100Assistant
200Developer
300Team Leader
EMPLOYEES
PERSON_IDEMP_IDJOB_ID
110100
220200
330300
Начало запроса SQL:SELECT p.name, e.emp_id, j.description Необходимо выполнить эквисоединение между таблицами PEOPLE, EMPLOYEES и JOBS. Корректными вариантами продолжения запроса являются:

Ответ:

 (1) FROM employees e, people p, jobs j WHERE e.person_id = p.person_id AND e.job_id = j.job_id 

 (2) FROM employees e WHERE e.person_id = p.person_id AND e.job_id = j.job_id 

 (3) FROM employees e, people p, jobs j WHERE e.person_id(+) = p.person_id AND e.job_id = j.job_id(+) 

 (4) FROM employees e JOIN ON people p AS e.person_id = p.person_id JOIN ON jobs AS e.job_id = j.job_id 

 (5) FROM employees, people, jobs WHERE e.person_id = p.person_id AND e.job_id = j.job_id 


Упражнение 4:
Номер 1
Минимальное количество условий соединения, необходимых для избежания декартова произведения в запросе с соединением таблиц, составляет ...

Ответ:

 (1) ни одного 

 (2) количество таблиц + 1 

 (3) количество таблиц - 1 

 (4) количество столбцов + 1 

 (5) количество столбцов - 1 


Номер 2
Запрос SQL: SELECT a.ln, b.zip, c.city 
FROM a, b, c 
WHERE a.ln = b.ln;
Каждая из таблиц «a», «b» и «c» содержит по 100 строк; первичным ключом для таблиц «a» и «b» является столбец «ln». Максимальное количество строк, которое может возвратить данный запрос, = ...

Ответ:

 (1)

 (2) 100 

 (3) 10000 

 (4) 100000 

 (5) 1000000 


Номер 3
Необходимо выполнить запрос к базе данных, состоящей из 4 таблиц - A, B, C и D; таблица D связана с таблицей А, таблица В связана с таблицей С, таблица D связана с таблицей В. Кроме того, требуется задать условия: значения в столбце, общем для таблиц B и С, должно быть равным 'SESSION'; значения в столбце, общем для таблиц B и D, должно быть равным 981301. Количество условий в предложении WHERE (включая условия соединения) для корректного выполнения запроса к описанной базе данных, должно быть равно...

Ответ:

 (1)

 (2)

 (3)

 (4)

 (5) Выполнение требуемой выборки невозможно 


Упражнение 5:
Номер 1
Необходимо написать запрос SQL с использованием правого внешнего соединения (RIGHT OUTER JOIN). При отсутствии соответствий между значениями в таблицах ...

Ответ:

 (1) будут возвращены все строки правой таблицы 

 (2) будут возвращены все строки левой таблицы 

 (3) вместо значений левой таблицы будут возвращены пустые значения 

 (4) вместо значений правой таблицы будут возвращены пустые значения 

 (5) вместо значений обеих таблиц будут возвращены пустые значения 


Номер 2
Необходимо создать запрос SQL для выборки всех строк из левой таблицы вне зависимости от того, есть ли соответствующие значения в правой таблице. Выполнить поставленную задачу позволит оператор ...

Ответ:

 (1) NATURAL JOIN 

 (2) RIGHT OUTER JOIN 

 (3) LEFT OUTER JOIN 

 (4) FULL OUTER JOIN 

 (5) CROSS JOIN 


Номер 3
Имеются 3 подготовленных предложения SELECT с одинаковыми столбцами в списке выборки; Вам необходимо написать запрос, возвращающий результат, тождественный комбинации результатов имеющихся запросов. Тип соединения, необходимый для получения требуемого результата:

Ответ:

 (1) INNER JOIN 

 (2) UNION ALL 

 (3) CROSS JOIN 

 (4) FULL JOIN 

 (5) OUTER JOIN 


Упражнение 6:
Номер 1
Эквисоединениями таблиц являются команды:

Ответ:

 (1) SELECT region.region_name, employees FROM region, employees WHERE region.id = employee.region_no; 

 (2) SELECT region.region_name, employees FROM region, employees WHERE region.id = employee.region_no(+); 

 (3) SELECT region.region_name, employees FROM region, employees WHERE employee.salary BETWEEN region.avg_salary AND region.max_salary; 

 (4) SELECT region.region_name, employees FROM region FULL OUTER JOIN employees ON region.id = employee.region_no; 


Номер 2
Открытыми соединениями таблиц являются команды:

Ответ:

 (1) SELECT region.region_name, employee.salary FROM region, employees WHERE region.id = employee.region_no; 

 (2) SELECT region.region_name, employee.salary FROM region, employees WHERE region.id = employee.region_no(+); 

 (3) SELECT region.region_name, employee.salary FROM region, employees WHERE employee.salary BETWEEN region.avg_salary AND region.max_salary; 

 (4) SELECT region.region_name, employee.salary FROM region FULL OUTER JOIN employees ON region.id = employee.region_no; 


Номер 3
Тетасоединениями таблиц являются команды:

Ответ:

 (1) SELECT region.region_name, employee.salary FROM region, employees WHERE region.id = employee.region_no; 

 (2) SELECT region.region_name, employee.salary FROM region, employees WHERE region.id = employee.region_no(+); 

 (3) SELECT region.region_name, employee.salary FROM region, employees WHERE employee.salary BETWEEN region.avg_salary AND region.max_salary; 

 (4) SELECT region.region_name, employee.salary FROM region FULL OUTER JOIN employees ON region.id = employee.region_no; 


Упражнение 7:
Номер 1
Запрос SQL:SELECT name, salary, dept_no 
FROM employee
WHERE salary > (SELECT AVG(salary)
		FROM employee;
		WHERE dept_no = (SELECT dept_no
				 FROM employee
				 WHERE last_name = (SELECT last_name
						    FROM employee
				    		    WHERE salary > 50000)));Команда, результат действия которой будет вычислен в последнюю очередь:

Ответ:

 (1) SELECT name, salary, dept_no ... 

 (2) SELECT AVG(salary) ... 

 (3) SELECT dept_no ... 

 (4) SELECT last_name ... 


Номер 2
Запрос SQL:SELECT name, salary, dept_no 
FROM employee
WHERE salary > (SELECT AVG(salary)
		FROM employee;
		WHERE dept_no = (SELECT dept_no
				 FROM employee
				 WHERE last_name = (SELECT last_name
						    FROM employee
				    		    WHERE salary > 50000)));Команда, результат действия которой будет вычислен в первую очередь:

Ответ:

 (1) SELECT name, salary, dept_no ... 

 (2) SELECT AVG(salary) ... 

 (3) SELECT dept_no ... 

 (4) SELECT last_name ... 


Номер 3
Запрос SQL:SELECT name, salary, dept_no 
FROM employee
WHERE salary > (SELECT AVG(salary)
		FROM employee;
		WHERE last_name = (SELECT last_name
				   FROM employee
				   WHERE dept_no IN (SELECT dept_no
						     FROM employee
				    		     WHERE salary > 50000)));Команда, результат действия которой будет вычислен в первую очередь:

Ответ:

 (1) SELECT name, salary, dept_no ... 

 (2) SELECT AVG(salary) ... 

 (3) SELECT dept_no ... 

 (4) SELECT last_name ... 


Упражнение 8:
Номер 1
Дана таблица S_EMP, в которой содержится информация о сотрудниках компании:
 
IDНомер сотрудникаPRIMARY KEY
LAST_NAMEФамилияNOT NULL
TITLEДолжностьNOT NULL
MANAGER_IDНомер начальника
SALARYЗарплатаNOT NULL
START_DATEДата начала работыNOT NULL
Рекурсивные запросы SQL Oracle 11g:

Ответ:

 (1) SELECT LEVEL, RPAD(last_name, LEVEL,'_') "Level of subordination" FROM s_emp CONNECT BY PRIOR id = manager_id START WITH manager_id IS NULL ORDER SIBLINGS BY last_name; 

 (2) SELECT w.last_name||', '||w.title||' works for '||m.last_name||', '||m.title "Level of subordination" FROM s_emp w INNER JOIN s_emp m ON m.id = w.manager_id ORDER m.title; 

 (3) WITH subordination (id, job) AS (SELECT id, title FROM s_emp WHERE title = 'President' UNION ALL SELECT s.job||' -> '||e.title FROM s_emp e INNER JOIN subordination s ON s.id = e.manager_id) SELECT job FROM subordination; 

 (4) DECLARE v_title s_emp.title%TYPE; v_id s_emp.id%TYPE; v_job VARCHAR2(200) BEGIN SELECT id, title INTO v_id, v_title FROM s_emp WHERE title = 'President'; FOR i IN (SELECT * FROM s_emp WHERE manager_id = v_id) LOOP v_job := v_job||' -> '||i.title; DBMS_OUTPUT.PUT_LINE(v_job); END LOOP; END; 


Номер 2
Дана таблица S_EMP, в которой содержится информация о сотрудниках компании:
 
IDНомер сотрудникаPRIMARY KEY
LAST_NAMEФамилияNOT NULL
TITLEДолжностьNOT NULL
MANAGER_IDНомер начальника
SALARYЗарплатаNOT NULL
START_DATEДата начала работыNOT NULL
Запросы SQL Oracle 11g, НЕ выполняющие РЕКУРСИВНОЕ построение структуры подчиненности сотрудников компании:

Ответ:

 (1) SELECT LEVEL, RPAD(last_name, LEVEL,'_') "Level of subordination" FROM s_emp CONNECT BY PRIOR id = manager_id START WITH manager_id IS NULL ORDER SIBLINGS BY last_name; 

 (2) SELECT w.last_name||', '||w.title||' works for '||m.last_name||', '||m.title "Level of subordination" FROM s_emp w INNER JOIN s_emp m ON m.id = w.manager_id ORDER m.title; 

 (3) WITH subordination (id, job) AS (SELECT id, title FROM s_emp WHERE title = 'President' UNION ALL SELECT s.job||' -> '||e.title FROM s_emp e INNER JOIN subordination s ON s.id = e.manager_id) SELECT job FROM subordination; 

 (4) DECLARE v_title s_emp.title%TYPE; v_id s_emp.id%TYPE; v_job VARCHAR2(200) BEGIN SELECT id, title INTO v_id, v_title FROM s_emp WHERE title = 'President'; FOR i IN (SELECT * FROM s_emp WHERE manager_id = v_id) LOOP v_job := v_job||' -> '||i.title; DBMS_OUTPUT.PUT_LINE(v_job); END LOOP; END; 


Номер 3
Дана таблица S_EMP, в которой содержится информация о сотрудниках компании:
 
IDНомер сотрудникаPRIMARY KEY
LAST_NAMEФамилияNOT NULL
TITLEДолжностьNOT NULL
MANAGER_IDНомер начальника
SALARYЗарплатаNOT NULL
START_DATEДата начала работыNOT NULL
Запросы SQL Oracle 11g, выполняющие построение иерархической структуры подчиненности сотрудников компании, но не являющиеся рекурсивными:

Ответ:

 (1) SELECT LEVEL, RPAD(last_name, LEVEL,'_') "Level of subordination" FROM s_emp CONNECT BY PRIOR id = manager_id START WITH manager_id IS NULL ORDER SIBLINGS BY last_name; 

 (2) SELECT w.last_name||', '||w.title||' works for '||m.last_name||', '||m.title "Level of subordination" FROM s_emp w INNER JOIN s_emp m ON m.id = w.manager_id ORDER m.title; 

 (3) WITH subordination (id, job) AS (SELECT id, title FROM s_emp WHERE title = 'President' UNION ALL SELECT s.job||' -> '||e.title FROM s_emp e INNER JOIN subordination s ON s.id = e.manager_id) SELECT job FROM subordination; 

 (4) DECLARE v_title s_emp.title%TYPE; v_id s_emp.id%TYPE; v_job VARCHAR2(200) BEGIN SELECT id, title INTO v_id, v_title FROM s_emp WHERE title = 'President'; FOR i IN (SELECT * FROM s_emp WHERE manager_id = v_id) LOOP v_job := v_job||' -> '||i.title; DBMS_OUTPUT.PUT_LINE(v_job); END LOOP; END; 


Упражнение 9:
Номер 1
Запрос SQL: WITH subordination (id, job) AS 
(SELECT id, title FROM s_emp 
WHERE title = 'President'
UNION ALL
SELECT s.job||' -> '||e.title
FROM s_emp e INNER JOIN subordination s
             ON s.id = e.manager_id)
SELECT job FROM subordination;Рекурсивным членом запроса является выражение:

Ответ:

 (1) WITH subordination (id, job) 

 (2) SELECT id, title FROM s_emp WHERE title = 'President' 

 (3) SELECT s.job||' -> '||e.title FROM s_emp e INNER JOIN subordination s ON s.id = e.manager_id 

 (4) SELECT job FROM subordination 


Номер 2
Запрос SQL: WITH subordination (id, job) AS 
(SELECT id, title FROM s_emp 
WHERE title = 'President'
UNION ALL
SELECT s.job||' -> '||e.title
FROM s_emp e INNER JOIN subordination s
             ON s.id = e.manager_id)
SELECT job FROM subordination;Опорным членом запроса является выражение:

Ответ:

 (1) WITH subordination (id, job) 

 (2) SELECT id, title FROM s_emp WHERE title = 'President' 

 (3) SELECT s.job||' -> '||e.title FROM s_emp e INNER JOIN subordination s ON s.id = e.manager_id 

 (4) SELECT job FROM subordination 


Номер 3
Запрос SQL: WITH subordination (id, job) AS 
(SELECT id, title FROM s_emp 
WHERE title = 'President'
UNION ALL
SELECT s.job||' -> '||e.title
FROM s_emp e INNER JOIN subordination s
             ON s.id = e.manager_id)
SELECT job FROM subordination;Основным запросом является выражение:

Ответ:

 (1) WITH subordination (id, job) 

 (2) SELECT id, title FROM s_emp WHERE title = 'President' 

 (3) SELECT s.job||' -> '||e.title FROM s_emp e INNER JOIN subordination s ON s.id = e.manager_id 

 (4) SELECT job FROM subordination 


Упражнение 10:
Номер 1
Предложение CYCLE в рекурсивном запросе SQL Oracle 11g предназначено для ...

Ответ:

 (1) создания циклов  

 (2) предупреждения зацикливания  

 (3) предотвращения бесконечного выполнения  

 (4) создания добавочного множества  


Номер 2
Для получения добавочного множества строк рекурсивного запроса в SQL Oracle 11g используются ...

Ответ:

 (1) соединения (JOIN) 

 (2) иерархические запросы 

 (3) подзапросы 

 (4) операторы множеств 


Номер 3
Предложение SEARCH в рекурсивном запросе SQL Oracle 11g предназначено для ...

Ответ:

 (1) определения порядка сортировки выборки, возвращенной запросом 

 (2) задания критерия соответствия для строк итоговой выборки  

 (3) объединения опорного и добавочного множеств  

 (4) задания критерия определения опорного множества 


Упражнение 11:
Номер 1
Запрос SQL:filesОбласть видимости запроса SELECT name, salary, dept_id ...:

Ответ:

 (1)

 (2)

 (3)

 (4)


Номер 2
Запрос SQL:filesОбласть видимости запроса SELECT last_name FROM employee ...:

Ответ:

 (1)

 (2)

 (3)

 (4)


Номер 3
Запрос SQL:filesОбласть видимости запроса SELECT AVG(salary) FROM employee ...:

Ответ:

 (1)

 (2)

 (3)

 (4)


Упражнение 12:
Номер 1
Дана таблица: 
ANIMALS
IDFAMILYANIMALCOLOR
1mammaldogbrown
2mammalzebrablack,white
3fishsharkgray
4birdgullwhite
5birdpelicanwhite
6fishtroutgray
Запрос SQL: SELECT a1.animal, a2.animal, a1.color FROM animals a1, animals a2 WHERE a1.color = a2.color AND a1.animal <> a2.animal;Выборки, эквивалентные результату запроса, возвращают команды:

Ответ:

 (1) SELECT a1.animal, a2.animal, a1.color FROM animals a1 NATURAL INNER JOIN animals a2 WHERE a1.animal <> a2.animal;  

 (2) SELECT a1.animal, a2.animal, a1.color FROM animals a1 INNER JOIN animals a2 ON a1.color = a2.color WHERE a1.animal <> a2.animal;  

 (3) SELECT a1.animal, a2.animal, a1.color FROM animals a1 FULL JOIN animals a2 USING (color) WHERE a1.animal <> a2.animal;  

 (4) SELECT a1.animal, a2.animal, a1.color FROM animals a1 CROSS JOIN animals a2 WHERE a1.animal <> a2.animal;  


Номер 2
Даны таблицы: 
 
ANIMALS
FAMILYNAME
mammaldog
mammallion
fishguppy
birdeagle
fishbass
birdpelican
insectbeetle
BLOOD_TYPES
FAMILYBLOOD_TYPE
mammalwarm_blooded
fishcold_blooded
birdcold_blooded
Запрос SQL:SELECT a.family, a.name FROM animals a, blood_types t WHERE a.family(+) = t.family AND a.family NOT IN ('fish', 'bird');Выборки, эквивалентные результату запроса, возвращают команды:

Ответ:

 (1) SELECT a.family, a.name FROM animals a LEFT OUTER JOIN blood_types t ON (a.family = t.family) WHERE a.family NOT IN ('fish', 'bird'); 

 (2) SELECT a.family, a.name FROM animals a RIGHT OUTER JOIN blood_types t ON (a.family = t.family) WHERE a.family NOT IN ('fish', 'bird'); 

 (3) SELECT a.family, a.name FROM animals a FULL OUTER JOIN blood_types t ON (a.family = t.family) WHERE a.family NOT IN ('fish', 'bird'); 

 (4) SELECT family, name FROM animals NATURAL LEFT OUTER JOIN blood_types WHERE family NOT IN ('fish', 'bird'); 


Номер 3
Даны таблицы: 
 
ANIMALS
FAMILYNAME
mammaldog
mammallion
fishguppy
birdeagle
fishbass
birdpelican
insectbeetle
BLOOD_TYPES
FAMILYBLOOD_TYPE
mammalwarm_blooded
fishcold_blooded
birdcold_blooded
Запрос SQL:SELECT a.family, a.name FROM animals a, blood_types t WHERE a.family = t.family AND a.family NOT IN ('fish', 'bird');Выборки, эквивалентные результату запроса, возвращают команды:

Ответ:

 (1) SELECT family, name FROM animals CROSS JOIN blood_types WHERE family NOT IN ('fish', 'bird'); 

 (2) SELECT family, name FROM animals WHERE family NOT IN ('fish', 'bird') AND family IN (SELECT family FROM blood_types); 

 (3) SELECT family, name FROM animals WHERE family NOT IN ('fish', 'bird') AND EXISTS (SELECT family FROM blood_types WHERE family = animals.family); 

 (4) SELECT family, name FROM animals NATURAL INNER JOIN blood_types WHERE family NOT IN ('fish', 'bird'); 




Главная / Базы данных / Введение в Oracle SQL / Тест 8