M2 - Bases de dades / Exercicis UF2: Llenguatges SQL / Solucions T8

De wikiserver
Dreceres ràpides: navegació, cerca

Determina quina de les següents sentències són certes o falses:

1. Una variable d'ampersand simple només es demana una vegada?

Cert.
Cal tenir en compte però, que si la variable ampersand està definida, la variable d'ampersand simple no es demana en absolut. De fet, agafarà el valor en la variable predefinida.

2. L'ordre ACCEPT és de SQL.

Fals.
L'ordre ACCEPT és una ordre de SQL*Plus. Sorgeix del prompt de SQL.

Les següents preguntes utilitzen les taules EMP, CUSTOMER i PRODUCT.

3. Escriu un arxiu d'ordres que mostri el nom de l'empleat concatenat amb l'ofici i la data d'ingrés per als empleats contractats en un rang de dates específiques. Demana a l'usuari el rang utilitzant l'ordre ACCEPT. Utilitzeu el format MM/DD/YY. Salva la sentència en un fitxer anomenat p8q3.sql. El resultat s'ha de veure com a continuació:

EDIT p8q3.sql

SET ECHO OFF
SET VERIFY OFF
ACCEPT low_date DATE FORMAT 'MM/DD/YY' -
PROMPT 'Please enter the low date range ("MM/DD/YY"):'
ACCEPT high_date DATE FORMAT 'MM/DD/YY' -
PROMPT 'Please enter the high date range ("MM/DD/YY"):'
COLUMN EMPLOYEES FORMAT A25
SELECT ename || ', ' || job EMPLOYEES, hiredate
FROM emp
WHERE hiredate BETWEEN '&low_date' AND '&high_date'
/
UNDEFINE low_date
UNDEFINE high_date
COLUMN EMPLOYEES CLEAR
SET VERIFY ON
SET ECHO ON

START p8q3.sql

4. Fes un script que mostri el nom, ofici i nom del departament. La condició de cerca no serà sensible a majúscules/minúscules. Salva el script com p8q4.sql.

EDIT p8q4.sql

SET ECHO OFF
SET VERIFY OFF
ACCEPT p_location -
PROMPT 'Please enter the location name:'
COLUMN ename HEADING "EMPLOYEE NAME" FORMAT A15
COLUMN dname HEADING "DEPARTMENT NAME" FORMAT A15
SELECT e.ename, e.job, d.dname
FROM emp e, dept d
WHERE e.deptno = d.deptno AND LOWER(d.loc) LIKE LOWER('%&p_location%')
/
UNDEFINE p_location
COLUMN ename CLEAR
COLUMN dname CLEAR
SET VERIFY ON
SET ECHO ON

START p8q4.sql

5. Modifica el fitxer p8q4.sql per crear un informe amb el nom del departament, nom, data d'alta i salari anual, per a tots els empleats de determinada localitat. Pregunta a l'usuari per la localitat. Etiqueta les columnes segons el model. Salva el fitxer com p8q5.sql.

EDIT p8q5.sql

SET ECHO OFF
SET FEEDBACK OFF
SET VERIFY OFF
BREAK ON dname
ACCEPT p_location -
PROMPT 'Please enter the location name:'
COLUMN dname HEADING "DEPARTMENT|NAME" FORMAT A15
COLUMN ename HEADING "EMPLOYEE|NAME" FORMAT A15
COLUMN hiredate HEADING "START|DATE" FORMAT A15
COLUMN sal HEADING "SALARY" FORMAT $99,990.00
COLUMN asal HEADING "ANNUAL|SALARY" FORMAT $99,990.00
SELECT d.dname, e.ename, e.hiredate, e.sal, e.sal * 12 asal
FROM emp e, dept d
WHERE e.deptno = d.deptno AND LOWER(d.loc) LIKE LOWER('%&p_location%')
ORDER BY dname
/
UNDEFINE p_location
COLUMN ename CLEAR
COLUMN dname CLEAR
COLUMN hiredate CLEAR
COLUMN sal CLEAR
COLUMN asal CLEAR
CLEAR BREAK
SET VERIFY ON
SET FEEDBACK ON
SET ECHO ON

START p8q5.sql

Fes els següents informes utilitzant l'ordre BREAK.

6.

SET PAGES 20
BREAK ON dname
COLUMN dname HEADING "DEPARTMENT|NAME" FORMAT A15
COLUMN ename HEADING "EMPLOYEE|NAME" FORMAT A15
select dname, ename
from dept, emp
where dept.deptno = emp.deptno
order by dept.dname
/

7.

SET PAGES 25
BREAK ON dname skip 2
COLUMN dname HEADING "DEPARTMENT|NAME" FORMAT A15
COLUMN ename HEADING "EMPLOYEE|NAME" FORMAT A15
select dname, ename
from dept, emp
where dept.deptno = emp.deptno
order by dept.dname
/

8.

SET PAGES 50
BREAK ON dname SKIP 3 ON job SKIP 2
COLUMN dname HEADING "DEPARTMENT|NAME" FORMAT A15
COLUMN job HEADING "EMPLOYEE|JOB" FORMAT A15
COLUMN ename HEADING "EMPLOYEE|NAME" FORMAT A15
select dept.dname, emp.job, emp.ename
from dept, emp
where dept.deptno = emp.deptno
order by dept.dname, emp.job
/