Главная / Базы данных /
Модели и смыслы данных в Cache и Oracle / Тест 9
Модели и смыслы данных в Cache и Oracle - тест 9
Упражнение 1:
Номер 1
Выберите SQL-запрос эквивалентный простому запросу QBE
Dept | deptno | dname | lock |
---|
| 10 P. | P.I. | DALLAS |
или объясните, какие ошибки в запросе QBE допущены
Ответ:
 (1) SELECT deptno, dname FROM dept WHERE lock='DALLAS'
 
 (2) команда I.
употреблена неправильно
 
 (3) одна из команд P.
употреблена неправильно
 
 (4)
SELECT deptno, dname
FROM dept
WHERE lock='DALLAS' AND deptno=10
 
Номер 2
Выберите SQL-запрос эквивалентный простому запросу QBE
dept | deptno | dname | lock |
---|
| P. >10 | P. | P.D_X_ |
или объясните, какие ошибки в запросе QBE допущены
Ответ:
 (1)
SELECT deptno, dname, lock
FROM dept
WHERE deptno>10 AND lock LIKE 'D%'
 
 (2) одна из команд P.
записана неправильно
 
 (3)
SELECT deptno, dname, lock FROM dept WHERE deptno>10 AND
lock NOT LIKE 'D%'
 
 (4) фраза P.D_X_
записана неправильно
 
Номер 3
Выберите SQL-запрос эквивалентный простому запросу QBE
emp | empno | ename | sal | mgr | comm | deptno |
---|
| U. | P. | P. _X_ | | P. <0.1*_X_ | |
или объясните, какие ошибки в запросе QBE допущены
Ответ:
 (1)
SELECT ename, sal, comm FROM emp WHERE comm < 0.1*sal
 
 (2) если убрать команду U.
то эквивалентный запрос на SQL выглядит так:
SELECT ename, sal, comm FROM emp WHERE comm < 0.1*sal
 
 
(3) Вторую строку следовало писать так:
 
 (4) имя _X_
не допустимо
 
Упражнение 2:
Номер 1
Выберите SQL-запрос эквивалентный запросу QBE с соединением таблиц; укажите, какие таблицы соединяются или какие ошибки имеются в синтаксисе запроса
emp | empno | ename | sal | mgr | comm | deptno |
---|
| | P. | P._X_ | | | 10 |
| | SCOTT | <_X_ | | | |
Ответ:
 (1)
SELECT ename, sal FROM emp e1, emp e2
WHEREe1.deptno = 10 AND e2.ename ='SCOTT' AND e2.sal < e1.sal
 
 (2)
SELECT e1.ename, e1.sal FROM emp e1, emp e2
WHERE e1.deptno = 10 AND e2.ename ='SCOTT' AND e2.sal < e1.sal
 
 (3)
SELECT e2.ename, e2.sal FROM emp e2, emp e1
WHERE e1.deptno = 10 AND e2.ename ='SCOTT' AND e2.sal < e1.sal
 
 (4) cоединяются по столбцам sal
два экземпляра таблицы emp
 
Номер 2
Выберите SQL-запрос эквивалентный запросу QBE с соединением таблиц; укажите, какие таблицы соединяются или какие ошибки имеются в синтаксисе запроса
emp | empno | ename | sal | mgr | comm | deptno |
---|
| | P. | P._X_ | | | _RESEARCH_ |
| | SCOTT | <_X_ | | | |
dept | deptno | dname | lock |
---|
| _RESEARCH_ | P. SALES | |
Ответ:
 (1) имена переменных не должны совпадать со значениями в столбцах таблиц
 
 (2)
SELECT e1.ename, e1.sal, dname FROM emp e1, emp e2, dept d
WHERE e1.deptno = d.deptno AND e1.ename ='SCOTT' AND e2.sal < e1.sal AND dname = 'SALES'
 
 (3)
SELECT ename, sal, dname FROM emp e1, emp e2, dept d
WHERE e1.deptno = d.deptno AND e1.ename ='SCOTT'
AND e2.sal < e1.sal
AND dname = 'SALES'
 
 (4)
SELECT e1.ename, e1.sal, d.dname FROM emp e1, emp e2, dept d
WHERE e1.deptno = d.deptno AND e2.ename ='SCOTT' AND e2.sal < e1.sal OR dname = 'SALES'
 
Номер 3
Выберите SQL-запрос эквивалентный запросу QBE с соединением таблиц; укажите, какие таблицы соединяются или какие ошибки имеются в синтаксисе запроса
emp | empno | ename | sal | mgr | comm | deptno |
---|
| | P. | | _СВЯЗКА_ | | 10 |
| _СВЯЗКА_ | P. | | _СВЯЗКА2_ | | |
| _СВЯЗКА2_ | P. | | | | |
Ответ:
 (1)
SELECT e1.ename, e2.ename, e3.ename FROM emp e1, emp e2, emp e3
WHERE e1.mgr=e2.empno, e2.mgr=e3.empno AND e1.deptno=10
 
 (2)
SELECT e1.ename “Сотр”, e2.ename “Непосред.нач.”, e3.ename “Нач.начальника”
FROM emp e1, emp e2, emp e3
WHERE e1.mgr=e2.empno, e2.mgr=e3.empno AND e1.deptno=10
 
 (3)
SELECT e1.ename, e1.ename, e1.ename FROM emp e1, emp e2, emp e3
WHERE e1.mgr=e2.empno, e2.mgr=e3.empno AND e1.deptno=10
 
 (4) в запросах QBE нельзя использовать кириллицу
 
Упражнение 3:
Номер 1
Какие данные возвращает запрос QBE? Можно ли упростить запрос?
emp | empno | ename | sal | mgr | comm | deptno |
---|
| | | P.SUM. | | P.CNT. | P.G.AO. |
Ответ:
 (1) возвращаются значения sal, comm, deptno
сгруппированные по номерам отделов, а запрос упростить можно
 
 (2) возвращаются суммарная зарплата и комиссионные по номерам отделов, а запрос упростить можно
 
 (3) возвращаются суммарная зарплат и количество людей получающих комиссионные в каждом отделе
 
 (4) возвращаются суммарная зарплата, количество людей получающих комиссионные в каждом отделе и номера отделов, причём номера отделов располагаются по возрастанию; запрос упростить нельзя
 
Номер 2
Какие данные возвращает запрос QBE? Можно ли упростить запрос?
emp | empno | ename | sal | mgr | comm | deptno |
---|
| | P.CNT. | P.G.DO. | | P.CNT. | !<10 |
Ответ:
 (1) из-за ошибок этот запрос работать не будет
 
 (2) возвращаются все зарплаты в порядке убывания и количество людей получающих каждую зарплату и количество людей с данной зарплатой, которым положены комиссионные, в отделах с номером больше 10-ти; запрос упростить нельзя
 
 (3) возвращаются все зарплаты в порядке убывания и количество людей получающих каждую зарплату и количество людей с данной зарплатой, которые получают комиссионные, в отделах с номером больше 10-ти; запрос упростить можно
 
 (4) данные таблицы группируются по столбцу sal в порядке убывания,
в столбце ename выдаётся количество людей с каждой зарплатой, а в столбце comm выдаётся количество людей с одинаковой зарплатой которым положены комиссионные; запрос упростить нельзя
 
Номер 3
Какие данные возвращает запрос QBE? Можно ли упростить запрос?
emp | empno | ename | sal | mgr | comm | deptno |
---|
| | P.__X_ | P.>150 | | | P. |
| | _X_ | | <3500 | | |
| | _X_ | | | | 30 |
Ответ:
 (1) в SQL ему соответствует запрос
SELECT e1.ename, e1.sal, e1.deptno FROM emp e1, emp e2, emp e3
WHERE e1.ename=e2.ename AND e1.ename=e3.ename
AND e1.sal>150 AND e2.sal<3500 AND e3.deptno=30
возвращающий фамилии, зарплаты и номера отделов для сотрудников отдела 30 с зарплатой от 150 до 3500; можно обойтись без соединений
 
 (2) можно убрать условие >150 т.к. все реальные зарплаты больше 150
 
 (3) возвращает ename, sal
и deptno
из таблицы emp
; соединения 1:1 только добавляют условия отбора; соединения можно убрать, перенеся их условия в запрос к единственной таблице emp
 
 (4) возвращает ename, sal
и deptno
из таблицы emp
для сотрудников отдела 30 с зарплатой от 150 до 3500; упростить запрос нельзя
 
Упражнение 4:
Номер 1
Какие действия производит команда
emp | empno | ename | sal | mgr | comm | deptno |
---|
| | P. | P._X_ | | | P.20 |
| | KING | _Y_ | | | |
Ответ:
 (1) выбрать всех сотрудников отдела 20, показав для них фамилию, зарплату номер отдела 20, а для King только фамилию и зарплату
 
 (2) показать фамилию, зарплату и номер отдела для сотрудников отдела 20, у которых зарплата, по крайней мере, вдвое меньше зарплаты Кинга
 
 (3) выбрать пустое множество сотрудников
 
 (4) выбрать сведения о сотрудниках отдела 20, у которых зарплата, по крайней мере, вдвое меньше зарплаты Кинга
 
Номер 2
Какие действия производит команда
I. test1 I. | id | name | price | amount |
TYPE I. | %Integer | | %Integer | %Integer |
LENGTH I. | 5 | 30 | 7 | 4 |
KEY | K | NK | NK | NK |
Ответ:
 (1) добавляет в таблицу test1 четыре столбца, определяет типы данных, длину и задаёт первичный ключ
 
 (2) дополняет определение таблицы test1 с четырьмя столбцами свойствами этих столбцов
 
 (3) создаёт таблицу test1 с четырьмя столбцами, определяет типы данных, длину и задаёт первичный ключ
 
 (4) команда содержит ошибки и потому никаких действий не производит
 
Номер 3
Какие действия производит команда
emp | ename | sal | mgr | deptno |
---|
D. | | > 1000 | | _X_ |
dept | depno | dname | loc |
---|
| _X_ | SALES | |
Ответ:
 (1) удаляет содержимое таблицы emp и строки таблицы dept соответствующие строкам таблицы emp
со значениями зарплаты более 1000
 
 (2) удаляет сотрудников отдела продаж, имеющих зарплату больше 1000
 
 (3) удаляет всех сотрудников отдела продаж
 
 (4) удаляет сотрудников отдела продаж, имеющих зарплату больше 1000 и отдел продаж в dept