Practice 1 Soluciones

I. lnicie una sesion SQL "Plus usando el usuario y password que le ha sido asi gnado,

2. Los comandos SQL*Plu5 acccdcn a 13 B.O.

Falso

3. i.Se ejecutara correctamerue Ta seruencia SELECT?

Verdadero

SQL> SELECT ename, joh, sal Salary

2 PROM emp;

4. (;Se ejecutara correctarnerne I~ sentencia SELECT?

Verdadero

SQL> SELECT 2 FROM

*

sal.grade;

5_ Hay [res errures en el codigo de esta sentenci a. /,I'uede idcntificarlos?

SQL> SELECT 2

3 FROM

empno, enamEl

sal.ary x 12 ANNUAL SALARY ern.P1

La tabla EMF "" conttcne una columna lIamndn "salary" (Ia columna se llama "snl"), EI operador de multiplicad6n es "*", n" "x" (en 13 Iinea2).

EI alfas "ANNUAL SALARY" IlU puede iuclulr espaclos, a 110 ser que 10 encierre entre dubles comillas 0 utllice el uuderseore ANNUAL SALARY.

6. Muestre la estructura de la tabla DEPT Seleccione todos IGS datos de la labia DEPT

SQL> DESCRIBE dept SQL> SELECT *

2 FROM dept;

7. Muestre la estructura de 1'1 tabla EMP, Cree una consulta que visualice cl uombrc, oficio,

fccha de alta y n" de empleado (preseruar en la pri rnera posicion) para cada ernpleado, Salve I" sentencia a un ficnero llamado phI7 .. <ql,

SQL> DESCRIBE amp

Introduccion a OracleBi - Ap£mdice A-2

\

Practica 1 So.luc.iones (conlinuacion)

SQL> SELECT' ell\pno, ename, job. hire date

2 FROM elllPl

SQL> SAVE p~q7.6q~ Wrote file plq7.sg1

8.

EjEcul~ la consutta alrnacenada en [,1'ITs'll.

SQL> START p~q7.6ql

9. Cree una consulra que visualice los diferentes oficios de In tabla EMP.

SQL> SELECT DISTINCT joh

2 FROM

emp;

Si tiene tiernpo, haga los si guierues ejercicius.

10. Cargue cl tichcro pi 'I 7, Sill al burer de SQL. Nombrc las cabeceras de I!II; colurnnas: N"Emp, Empleado, Categoria y Fecha Alw, respecuvamente, Vuclva a ciccutar la consulta.

SQL> GETp~q7.sql

1 SELECT emprio , erierne , job, h i r edat.e

2' FROM emp

SQL> l. SELECT ern.pno "N"Emp", e,name "I!:mpl.eado".

SQL> i

2i job "Categoria", hiredate ":Pecha Al.taM 3i

SQL> SAVE p~q'l. sql REPLAC.E Wrote file plq7.sg1

SQL> START plq'l.sql;

11. Visualice el nornbre concatenado "on el oficio, scparudo por una coma y espacio, y etiq uctc la columna "Empleado y Categorla"

SQL> S.ELECT ename II " 'II joh "I!:mpleado y C"tegoria"

2 FROM empi

Introducclrin a OracleBi - Apendice A·3

Practica 1 Soluciones [ccntinuacion] Ejercicio Adicional:

12, Cree una consu I ta 'lue visualice rodos los datos dela labia EMP. Separc carla columna por una coma. Etiquete Ia columna "Resultado",

SQL> SELECT 2

3

ampno II • II ename II '.' II job II ',' II mgr II ',' II hiradate II '.' II sal II , II conun II ',' II deptno THE OUTPUT

4. FROM emp;

lntroducclon a OracleSi: - Apendice A-4

Practica 2 Soluciones

I. Cree una consu lta para visualizar cl nombre y salario de tus ernpleados que ganan mas de 2850$.

Salve I" sen Lencia SQL a un fichero llamado 1'211 1.11'11. Ejeculc la consulta,

ename, sal

SQL> SELECT 2 FROM

3 WHEfIE

amp

sal > 2650;

SQL> SAVE p2ql,. &q~ Created file p2ql.sql;

2.

Cree una consulta para visualizar el nombre de! ernpleado y n" de departamento del empleado 7566,

SQL> SELECT 2 FROM

3 WHERE

enamEl, deptno emp

empno .. 1566;

3. Modifique p2q t.sq! p~ra visualizar el nornbre y salario de todos los crnplcados cuyo salario no

CSI:! en cl ran go: 1500$ y 2850$, Vuel va a salvar la senrencia SQL a un fichero llarnado p2q3.sq/ y vuel va a ejecurar In consulta,

SQL> EDIT p:lql.&ql

SELECT

aname, sal

FROM emp

WHEfIE I

sa~ NOT BETWEEN 1500 AND 2850

SQL> START p2q3.sql;

4, V isualice el nornbre del cmplcado, oflcio y fccha de al ta, de los crnpleados que fucron contratados

entre cl 2(1- feh-R 1 y el 0 l-rnay-S 1. Ordene la consuita en orden ascendiente de fecha de contratacion.

SQL> SELECT ename, job, hireda.te
2 FROM emp
3 WHERE hiredate BETWEEN
4. TO _DATE ( '20-Feb-1981.' , 'DD-MON-YYYY' ) AND
5 TO _DATE ( • 01-May-1981', 'DD-MON-YY'YY' )
-, 6 ORDER BY hiredate; Introducc:ion a OracleSi - Apendice A-5

Pn:ictica 2 $oluciones (continuacl6n)

5. Visualizar cl nom bre de empleado y ruirnero de departamento de todos los ernpleados en los

departamcntos JOy 30 pOI' nom bre en ord en al fa bet i co.

SQL> SELECT 2 FROM

3 WHERE

4 ORDER BY

ename, deptno emp

dept no IN (10, 30) enamel

6. Modi ficar p2q3.sq/ para sacar un listado de el nnmbre y el salario de Ins cmplcados que ganan

mas de $1500 y que estan en cI departamento I () 0 30. Etiquetar las colurnnas Employee y

Monthly Salary, respecuvamente. Volver a guardar la sentencia SQL en lin fichero llarnado 1)2q6.sql. Volvcr a ejecutar la consulta.

SQL> EDIT p2q3.sql

SELECT enaIne "EmployeeU,

FROM WHERE AND

/

sal "Monthly Sala,ry·

emp

sal > 1500 deptno IN (10, 30)

SQL> START p2q6.sql;

7. Visual izar el Hombre y la fecha de contratacion de cada cmpleado que file contratado en 19~2.

SQL> SELECT 2 FROM

3 WHERE

ename, hireda.te em;p

hiredata LIKE '%82';

8. Visualizar el nombre y el utulo de todos los empleados que no rienen un jefc.

SQL> SELECT 2 FROM

3 WHERE

enama, job emp

ml1r rs NULL;

9.

Vlsualizarel nom bre, salario y cornision de todos los empleados que gnnan comisioncs. Ordenarlos por salario y comisioncs ell orden descendicnte,

SQL> SELECT 2 FROM

3 WHERE

4 ORDER,SY

en~e, sal, camm amp

conan IS NOT NULL sa.l DESC, comm DESC;

Introducci6n a Oracle8i - Apendice A-6

Pracfica 2 Soluciones (continuaci6n)

Si tiene ticmpo, rcalizar los siguicntcs cjcrcicios:

10. Visualizar los nombrcs de todos los erupleados que tengan una A en la tercera tetra de su nombre.

Nota: hay dos underscores L) ames de la A en fa clausula WHERE.

SQL> SELECT 2 FROM

3 WHERE

ename emp

ename LrKE ' __ A%';

II. Visualizar cl Hombre de todos los cmpleados que tengan des Len xu nnrnbre y que sean del departarneruo 3D 0 q ue su jcfc sea cI 7782.

SQL> SELECT ename
2 FROM amp
3 WHERE ename LrKE I %L.%L% I
4 AND deptno c 30
5 OR mgr " 7782; Eicrcicios Adicionales:

12. Visualizar el nornbre, titulo y salario de tooos los ernpleados cuyo tnulo sea Clerk 0 Analyst y

5U salario no sea igual n $1000, $3000 0 $5000.

SQL> SELECT enatn8, job, sal
2 FROM emp
3 WHERE job IN ('CLERK' , 'ANALYST' )
4 AND sal NOT IN (1000, 3000, 5000 ); I). Modificar p2q6 . sq! para visualizar el nornbre, salario y comision de todos los cmplcados cuyo

importe de In cornision sea mayor que su salario incrcmcruado en un 10%. Ejecular la consuha. Volver a guardar 13 Cllilsulta como 1l2'1] 1..",,-

SQL> EDrT p2q6.sql

SELECT FROM WHERE /

SQL> START p2q13.sql;

ename "Employee" ... sal UHonthl.y Salary",. comm

amp

comm > sal * 1.1

Introducci6n a Oracle8i - Apendice A.7

Practica 3 Soluciones

1. Escribir una consulta para visualizar la fecha actual. Eliquel3r la columna Dale.

I SQL> SELECT

. 2 FROM

lIysdate "Date" dual;

2. Visualizar el numcro del ernplcado, nornbre, salnrio e incremento de salario del 15% expresudo como lin numero entero. Etiquelar la columna New Salary. Guardar In semencia SQL en un ficheru llamado p3q2.sql.

SQL> SELECT 2

3 FROM

empno, aname, sal,

ROUND( .. al • 1.15, 0) "Naw Salary"

amp;

SQL> SAVE p3q2.sql Created file p3q2.sql;

3.

Ejecutar la consulia en cl fichero p3q2.sql.

SQL> START p3q2.sql;

4. Modificar In consulta p3q2 . sql para anadir u 113 columna adicional Ijue restc el antiguo salario del

nuevo. Etiquetar la columna Increase. Volver a ejccutar la consulta,

SQL> EDIT pJq2.sql

SELECT empno, ename, sal,

ROUND(sal • 1.15, 0) "New Salary", ROUND(aal • 1.15, () - sal "Increase"

FROM I

SQL> START pJq2.sq~;

5. Visualizar el nornbre del empleado, techa de contratacion y fecha lie revision del salario, [a cual es cl primer Lunes dcspues de seis moses de servicio. Eti'luelar la columna REVIEW. Formatcnr las lechns para que aparezcan sirnilares a "Sunday, the Seventh of September, 1981."

SQL> SELECT
2
3
..
5 FROM ename, hiredate, TO_CHAR(NEXT_DAY(ADO_MONTHS(hiredate, 6), 'MONDAY' i.

'fmDay. "the" Ddspth "of" Month, YYYY' ) REVIEW

emp1

InlroduC'cion a Oracte8i - Apendice A·8

rr

Practica 3 Soluciones (conttnuaclon)

6. Para cada ernpleado visuali zar el nombre del ernpleado y calcular el mimero de meses entre hoy y

la fecha de contratacion. Etiquelar In columna MONTHS_ WORKED. Ordenar los resultados pm el nurnero de meses cmpleados. Redondear el niimeru de meses hacia arriba al pr6ximo nilmero enlt:fO.

SQL> SELECT 2

3

ename, ROUND.(MONTHS_BETWEEN (SYSDATE, hiredate» MONTHS_WORKED

4

FROM amp

ORDER BY MONTHS_BETWEEN(SYSDATE, hiredate);

7.

Escribir una consulta que produzca 10 siguiente para cada empleado:

<numbre del empleado» earns -csalario» monthly but wants <3 veces mas>. Etiquelar Ia columna

Dream Salaries.

SELECT

ename II . earns'

I TO_CHAR(sal, 'fm.$99,999.00')

I I I

j-.. SQL>
u. 2
3
4
5
6 11

If

, monthly but wants ' TO_CHAR(sa1 * 3, 'fm$99,999.()()')

"Dream Salaries"

FROM

Si dispone de tiempo, complete los siguicntcs ejercicios.

8. Crear una consulta para visualizar el nombrc y cl salario de todos los ernpleados. Formarear el salario para Que ienga una longitud de 15 caracteres y rellenando a la izquierda con $. Enquetar la columna SA LAR Y.

ename,

LPAD(sal. 15, '$') SALARY amp;

SQL> SELECT 2

3 FROM

9. Escribir Lilla consulta que visualice el nornbre del empleado con la primera lctra en rnayusculas y

lad a, las dernas letras ell mimisculus y la longitud de sus nom brcs, para tocos los ernpleados cuyo nornbre empie(:(; por J, A 0 M_ Dar a cada columna lIna etiqllela apropiada_

SQL> SELECT INITCAP ( ename) "Namen,
2 LENGTH (ename) II Lengthll
3 FROM emp
" WHERE enamEl LIKE 'J%'
5 OR ename LIKE IM%'
6 OR ename LIKE 'A%' ; lntroduccicn a Oracle8i • Apendtce A-9

Puictica 3 Soluciones (continuacion)

10. Visualizar el nornbre, fecha de contratacion y <ira de la sernana que empezo el ernpleado, Etiqueiar

la columna DAY. Ordcnar los resultados por el dta de In scmana ernpezando por Lunes.

SQL> SELECT ename, hiredate,
2 TO_CHAR(hiredate, 'DAY' ) DAY
3 FRO.M ell\P
4 ORDER BY TO_CHAR(hiredate - 1, Id'); Ejercicios Adicionales:

I I. Crear una consuha que visualicc cl nombre del ernpleado e importc de la comision. Si el cmpleado

no gan" cornision, poner "NO Comrnision". Etiqueiar la columna COMM.

SQL> SELECT 2

3 FROM

enam,e,

NVL(TO_CHAR(camm), 'No commission') COMM emp;

t 2. Crear una consulia q lIC muesrre los nombres de los empleados y indique su .. alario a [raves de aster; seas. Carla asterisco signi fica 100$. Ordene los datos descendcntcmente par salario. Eliquete la col umna EMPLO Y EE_AND_ THEIR_SALARIES.

rpad(ename, 8) II' '11 rpad(' , EMPLOYEE_AND_THEIR_SALARIES

SQL> SELECT 2

sa~/l00+;t, '*')

3 4

FRO.M emp

ORDER BY sal DESC;

lntroducclen a Oracle8i • ApEmdice A·10

Practica 4 Soluciones

I. Escribir Lilla consulta para visualizer el nombre, numero de departamento y nombre de

departamento de iodos los emplcados.

SQL> SELECT 2 PROM

3 WHERE

e.ename, e.dep~no, d.dname emp e, dept d

e.deptno " d.deptn.o;

2.

Crear un listado unico de iodos los rftulos que hay en el departamento 30

SQL> SEL.ECT DISTINCT e.job, d.loe
2 FROM ell\P e, dept d
3 WHERE e.deptno d.deptno
4 AND e.deptno " 30; 3. Escribir una consulta para visualizar et nombrc del empleado, nornbrc del departamento y

localidad de todos los cmpleados que ganan comision .

SQL> SELECT e~ename, d.dname, d.~oc
2 FaOM emp e, dept d
3 WHERE e.deptno " d.deptno
4 AND e.comm IS NOT NULL; 4. Visualizer el nornbre del cmpleado y nornbre del departamento de todos los empleados que tienen

una A en su nombre, Guardar la scnrcucia SQL en un fichero llarnado p4q4 .. j·'11.

II' SQL> SELECT e~ename~ d.dname
2 FROM e!IIP e, dept d
3 WHE.RE e.deptno " d.deptno
4 AND e.ename LIKE '%A%'; [ f

[II

ill

5. Escrihir una consulta pam visualizar el nombrc, tilU 10, nurnero del departamento y nombre del

d cpartament 0 de t odos los em p I eados q u G trabaj an en DALLA S.

SQL> SELECT 2 FROM

3 WHERE

4 AND

e.ename, e.job, e.deptno, d.dname emp e , dept d

e.dept~o ~ d.deptno

d.loc = 'DALLAS'j

Introducci6n a Oracle8i· Apendice A-l1

Practice 4 Soluciones (continuaci6n)

6. Visualizar clnombre del empleado y el nurnero del ernpleado junto con el nombre de sus jefes y numero de jcfc, Etiquetar 13 columna Employee, Emp#, Manager, y Mgr#, respectivamente. Guardar 13 sentencia SQL en lin fie hero llamado (J4q6 .. tql.

SQL> SELECT 2

3 FROM

e • e_name II Em,ployee "I e . empno nEmpIIl,

It'L. ena.me .1 Mana.ger" I m. emp-no IIMgr#1I emp e, amp m

4 WHERE e.mgr = m.empnoj

SQL> SAVE p4q6.sql.

Created file p4q6.sql;

7.

Modificar p4q6.sql para visualizar todos los empleados incluycndo 3 King, quien no tiene jere. Volver a guardar como p4q7.sql. Ejecutar p4q7sql.

SQL> EDIT p4q6.sql

SELECT

e.ename "'Employee", e~empno uEmp#"

m~e:nEUl'Le rrManager"r :m.empno IIMgrin F'ROM eltlP e, emp m

WHERE e.mgr = m.empno(+)

I

SQL> START p4q7.sql;

Si dispone de tiempo, cornpletar los siguientes ejercicios,

8. Crear una consulta que visualice el nombre del ernpleado, ruimero de departamento y todos los ernpleados que trabajan en el rnismo departamento como un cmplcado dado, Dar a cada columna una etiqueta apropiada,

SQL> SELECT
2
3 FROM
4 WHERE
5 AND
6 ORDER BY e ,deptno departm.ent, e . ename employee, c: • enam.e c:o.lleague

emp e, emp c:

e,dept.no = c.deptno

e.empno <> c.empDO

e.deptno, e~e~e, c.en~ei

Introducci6n a Oracle8i - Apendice A-12

Practlca 4 Soluciones [eontlnuaclon]

9. Mostrar la estructura de la tabla SALGRAOE, Crear una consulta que visual ice el nornbre, titulo,

nornbre del departamento, salario y grado de todos los ernpleados.

SQL> SELECT
2 FROM
3 WH:ERE
4 AND SQL> DESCRIBE salgrade

e.ename, e.job, d.dname, e.sal, B,grade emp e, dept d. salgrade s

e.deptno = d.deptno

e.sal BETWEEN S,losal AND a.hisal;

Si quiere un dcsaffo extra, cornplctar los siguientes ejercicios.

10. Crear una consulta para visualizer el uomnre y fccha de coruratacion de cualquicr empleado contratado despucs de Blake.

SQL> SELECT
2 FROM
3 WHERE
, AND emp.ename, emp.hiredate emp, amp blake

blake. e.name ,. 'BLAKE' blake.hiredate < emp,hiredatel

II. Visualizar iodos los nornbrcs de los ernplcados y fechas de contratacion junto can sus nombres de

jefes y feeha de comraiacion de rodos los empleados que fueron contraiados antes que sus jefes. l-:Ii'luelar las columna.> Employee, Eillp Hircd,ne, Manager, y Mgr Hircdate, respeclivamente. e.ename l'Employeell, e.hiredate IIEmp HiredateU., m.ename "Mauagerll, m.hiredate MMgr Hiredate"

emp e. emp m

e.mgr = m.empno

e.hiredate < m.hiredate;

SQL> SELECT
2
3 .. ROM
4 WHERE
5 AND Introducci6n a Oracle8i - Apendice A·13

Priictica 5

Determine In validez de las siguientes sentencias. Suhraye si "verdadero" 0 "falso":

I, Las funciones de grupo trabajan COil muchos rcgistros para producir un resultado.

Verdadero

2. Las lunciones de grupo incluyennulos en los calculos

I' a lso, Las 111 nclo Des de grll po i gn oran los v 91 OrCS n ul os, Si desea In efulr valores uulos, IL~e 13 fundon NVL.

3. La clausula WHERE restringe registros antes de I~ inclusion en un calculo de grupo, Verdadcro

4. Visualice sobre el salario: maximo, rnfnimo, suma y media ari trneuca, para todos los empleados. Redondee los resultados a la posicion dccnnal. Salve In sentencia SQL a un fichero (p5q4.sqh

SQL> SELECT 2

3

4

5 PROM

ROUND (MAX (sal) ,0) WMax imum " , ROUND (MIN ( sa 1) , ° ) "MinimWII". ROUND (SUM (sal) ,0) ~Sum", ROUND(AVG(sal) ,0) WAverage" e_mp;

SQL> SAVE p5q4.sql Created file p5q4.sql;

5. Modifique p5q4,sql para visual izar: maximo, mfnimo, suma y medi a arltmerica de salaries para

cada oficio. Salve la scntcncia SQL a un fichero (p5q5.sqIJ. Ejewte I~ consu ILa.

SQL> EDIT p5q6.sq1

SELECT

job, ROUND(KAX(sal.j,O) °M .. ximumo, ROUND (MIN (sal.) , OJ "Minimwn", ROUND (SUM (sal) ,0) "Sum",

ROUND (AVG (Bal.) ,0) FROM .. mp

GROUP BY job

/

SQL> START p5q5.sql;

"Average"

lntroducclon a Oracle6i - Apendice A·14

r

t

I

t

Practlca 5 Soluciones (Continuacion)

6, t3seri ba una COIlSU lta que visualice el ruimero de personas que rieneel mismo oficio.

SQL> SELECT 2 FROM

j;ob, COO'NT (*) ell\P

3 GROUP BY job;

7,

Determine el ruunero 1000al de dircctores, Etiquete la columna "n" de directores".

SQL> SELECT 2 FROM

COUNT (DISTINCT mgr) "Number of Managers" amp;

8, Escriba una consulta que visualice la difcrcncia entre el salario mas alto y el mas hajo de la

cmprcsa Etiquel<, la columna "difcfencia",

SQL> SELECT 2 FROM

KAX(sal) - MIN(" .. l) DIFFERENCE ell\P;

Ejercid", adicionales:

9, Visualicc cl numero de director y salario del einpleado con mellor salario COil dependencia de ere

director. Excluya a cualquicr empleado cuyo director no se idenrifique. Excluya cualquicr grupo cuyo rninirno salario sea rnenor que 1000$. Clasifique el resultado en orden descendierue de salario •.

SQL> SELECT mgrl MIN{sa1)
2 FROM emp
3 WHERE mgr IS NOT NULL
4 GROUP BY mgr
[ 5 HAVING MIN{.sa1) > 1000
6 ORDEll BY MINI.sa1) DESC; 10. Escriba una consulta q ue visualice el nombre del dpto, localidad, numero de empleados y la media de salaries, para iodos los empleados de cada departamento. Etiqucte las column as, segiin el ejernplo:

SQL> SELECT
2
3 FROM
4 WHERE
5 GllOUP .BY d. dname , d. 10e, COUNT (.,) "Number of People", ROUND (AVG (sal. j ,2) ·Sa1ary"

emp e, dept d

e.deptno ~ d.deptno

d.dname, d.1oc;

Introducc.ion a Oracle8i • Apendice A-15

Pnktica 5 Soluciones [continuaeten) Ejercicios avanzados:

II. Cree una consulta que visualice eI mirnero total de empleados y de ese total el rnimero de los que

fueron contratados en 1980. 1981, 1982, y 19KI. Eliquete las columnas segiin el modele:

SQL> SELECT 2

3

4

5

6

7

8

9

COUNT(·) total,

SUM (DECODE (TO_CHAlI. (hiredate , 'YYYY') , 1980,1,0)1"1980-, SUM (DECODE (TO_CHAR(hiredate, 'YYYY') , 1981,1,0»"1981-, SUM (DECODE (TO_CHAR{hiredate, 'YYYY') , 1982,1,0)"1992-, SUM (DECODE (TO_CHAR(hiredata, 'YYYY'), 1993,1,0»)"1993·

10 FROM amp:

12.

Cree una matriz que visualice el oficio, salario corrcspondiente segiin departamento y el salario total pam ese nficio de todos los departarnentos, segtin el modelo, a continuacion:

SQL> SELECT 2

3

4

5

6 FROM

7 GROUP BY

job "Job",

SUM (DECODE (deptno, 10, sal) "Dept 10·, SUM {DECODE (deptno, 20, sal») ffDept 20n. SUM {DECODE (deptno" 30, sal)) "Dept 30n, SUM(sal) "Total"

amp

job;

Introduccion a OracleBi - Apendice A-16

Practice 6 Soluciones

I.

Escriba una consulra que visualice nombre y fecha de alta de rodos los ernpleados que trabajan en el rnismo departamento que Blake (Excluir a Blake).

SQL> SELECT ename, hiredate
2 FROM emp
3 WHERE deptno IN (SELECT deptno
4 FROM emp
5 WHERE ename - 'BLAKE' )
6 AND ename I~ 'BLAKE'I 2. Cree una SUhCOI1S11lw que visualicc cl nurnero y nombre de todos los empleados que ganall mas que

Ia media de salnrios. Clasifiqllt: el resuhado en orden descendienle de salarios.

SQL> SELECT empno, en"-1llEl
2 FROM emp
3 WHERE sal > (SE!oECT AVG(sal)
4 FROM emp)
5 ORDER BY sal DESC, 3. Escriba una eonsulta que v isual ice el numero y nornbre de todos los empleados que trabajan en un

departamento COil cualqu ier ernpleado cuyo nombre contenga una "1"'. Sal ve la sentencia SQL a uu fichcro Hamad 0 p6q 3 sq I

SQL> SELECT ampno. ename
2 FROM amp
3 WHERE deptno IN (SELECT
4 PROM
5 WHERE
SQL> SAVE p6q3. sql deptno emp

ename LIKE '%T%');

Created file p6q3.sql

4. Visualice el noruhre, ruimero de departamento y oficio de todos los cmplcados cuyo departamento se encuenrre en Dallas.

SQL> SELECT ename, deptno, job
2 FROM amp
3 WHERE dept no IN (SEW:CT
4 FROM
5 WHERE deptno dept

1oc .. 'DALLAS');

lntroducclon a Oracle6i - Apendice A-17

Practica 6 Soluciones (continuacion)

5, VisLLalice el nombre y salruio de lolios los emplcados que depend an de "King"

SQL> SELECT enam,e, lIal. 2 FROM emp

3 WHEREmgr IN (SELECT

4 FROM emp

empno

5

WHERE

ename = 'KING');

6,

Visualice el ntimero, Hombre y uficio de todos los cmpleados del departamcmo "Sales".

SQL> SELECT deptno, ename, job 2 FROM amp

3 WH,EREdeptno IN (SELECT dept no

4 FROM dept

5 WHERE dnarne = 'SALES' I 1

Ejercicio Adicional:

7. Modifique el fichero p6q3sqll1ara que visualice el numero, nombre y salario de todos los

ernpleados que galien mas que fa media de salaries y que trabajen en un departamento en el que cualquier ernpleado comcnga una "T" en St) apcllido Re-sal ve el frchero, como p6q7 .sq f

SQL> EDIT p6q3. sql

SELECT empno, ename, sal FROM emp

WHERE sal> (SELECTAVG{sal)

FROM amp)

AND dept no IN (SELECT deptno

FROM emp

WHERE ename LIKE '%'1'%')

I

SQL> START p6q7.sql;

Introducci6n a Oracle8i - Apendice A-18

Pnlctica 7 Soluciones

I. Escriba una consulta para visualizar eI nombre, numero de departamento y salario de Q

cualquicr ernpleado, ellyn n" de departamento y salario se ~orrespondal1 -Ios dos- con el tl de departamento y salario de cualquier emplcado que tcnga conusion,

SQL> SELECT
2 FROM
3 WliERE
4
5
6 ename, deptno, sal emp

(sal., deptno) IN (SELECT

lIal, dept.no

FROM amp

2.

WHERE

comm IS NOT NULL);

Visualice el nombre, nombre de dpto, y salario, de cualquicr empleado cuyo salario

y cornision ooincidan -Ias d05-, can el salario y coinision de cualquicr ernpleado de Dallas.

SQL> SELECT
2 FROM
3 WHERlil
4 AND
5
6
7
B ename, dnarne, sal

emp e, dept d e.deptno = d.deptno (sal, NVL(comm,O)) IN

(SELECT sal. NVL{comm,O)

FROM emp e, dept d

WHERE e.deptno = d.deptno

AND d.l.oc = 'DALLAS'):

3. Cree una consults para visualizar el nombre, recha de alta y salario de todos los ernpleados que

tengan el mismo salario y comision que ScuLL

SQL> SELECT 2 FROM

3 WHERlil 4

5

6

7 AND

ename, hiredate, sal emp

(sal, NVL(comm,O)} IN (SELECT FROM WHERE ename != 'SCOTT';

sal. NVL(comm,O) emp

ename g 'SCOTT')

4. Cree una consulta pru'a visualizar a los empleados que ganan lin salario superior al salario de

cualquier em pleado "CLERK" (ernpleado) Ordene el resu ltado por salario dcscenden ternente.

SQL> SELECT ename, job, sal
2 FROM emp
3 WHERE sal > ALL (SELECT sal
4 FROM emp
5 WHERB job 'CLERK' )
6 ORDER BY sal DESC; Introduccion a Oracle8i - Apendice A-19

Prtictica 8 Soluciones

Determine emil de las siguicntcs scntcncias son verdaderas 0 falsas:

Una variable de ampersand simple solo se pide tina vezt.

Verdadero

Sin embargo, .~i I a variahle ~h\ deflnida, la variable de ampersand simple no se pide en a bso tu to. De IlOch 0, cogl'r3 cl valor en I a va ria hie p rcdcfi n ida.

2.

El comando ACCEPT cs lin comando SQL. Falso

EL comando ACCEPT es 1111 comando de SQL*rlll~. Surge dd prompt de SQL.

3. Escriba un archive de cornandos para mostrar cl nombre de usuario, nornbre y apellido

concatenados y fecha de ingreso para los ernpleados dentro de un rango espectfico. Solicitarle al usuario los d08 ranges usando el comando ACCEPT. Usar el formate MMIDDIYY. Guardarel archi vo de cornandos como pXq3_.IQI.

SET ECHO OFF SET VERIFY OFF

A.CCEFT low_da t e D.ATE FORMAT • !>1M/ DD IYY' -

PROMPT 'Please enter the low date range (' 'MM/DD/YY")' ' ACCEI?T high_date DATE FORMAT 'MM/DD/YY' -

I?ROMPT 'Please enter the high date ra.nge (' 'MM/DDIYY"): ' COLUMN EMPLOYEES FORMAT A2.5

SELECT ename II', 'II job EMPLOYEES, hiredate

FROM WHERE

emp

hiradate BETWEEN

TO_DATE('&low_date'. 'MM/DD/YY') AND TO_DATE ( , &high_dat e', 'MM/.DD/YY')

/

UNDEFINE low_date UNDEFINE high_date COLUMN EMPLOYEES CLEAR SET VERIFY ON

SET ECHO ON

SQL> START p8qJ.sql;

Inlroducci6n a Oracle8; - Ap{mdice A-20

••

--

4_

Practica S sojuclonee (continuaci6n)

Escri ba un script pHra visua lizur el nombre, oficio y nornbre de departamento. Lacondicion de busqueda no seni sensiblea rnayusculas/nunusculas. Salve el script como I'Xq4.1I'11.

SET ECHO OFF SET VERIFY OFF

ACCEI?T p_location PROMPT 'l?lease enter the location name, • COLUMN ename HEAD.ING "EMPLOYEE NAME" FORMAT ,A,15

COLUMN dnema HEADING "D.EPARTMENT NAME" FORMAT A1.5

e.ename. e.job, d.dname amp e, dept d

e.deptno " d.deptno

LOWER (d. Loe ) LIKE LOWER. ( • %&p _loca t ion% 0)

SELECT FROM WHERE AND

/

UNDEFINE p_location COLUMN en!!me CLEAR COLUMN dname CLEAR

SET VERIFY ON SET ECHO ON

SQL> START p8q4.sql;

Introducc.ion a OracleS.i - Apendice A-21

Prllctica B Soluciones [continuacjon}

5. Modifique el fichero p8q4.sql para crear un in forme con el nornbre de dpto, apellido, fecha de alia,

salario y sal rio anual, para todos 10$ ernpleados de dcterminada localidad. Pregunte al usuario por la localidad. Eliquelc las ('olull1nus segun el modelo. Salve el fichero como 1'8q5.'~(lt.

SET ECHO OFF

SET FEEDBACK OFF SET VERIFY OFF BREAK ON dname

ACCEPT p_location PROMPT 'Please enter the location name, • COLUMN dnama HEADING "DEPARTMENT I NAMED FORMAT Al.5

COLUMN ename HEADI.NG "EMPLOYEE I NAME" FORMAT A15

COLUMN hiredate HEADING " START I DATE" FORMAT A15

COLUMN sal HEADING "SALARY" FORMAT $99,990.00

COLUMN asal HEADING "ANNUALISALARY· FORMAT $99,990.00

SELECT

d. dname , e.ename, e.hiredate, e.sal, e.sal • 12 asal

emp e, dept d

FROM

WHEREe.deptno ~ d.deptno

AND LOWER(d.loc) LIKE LOWER('%&p_location%')

ORDER BY dname

I

UNDEFINE p_location COLUMN dname CLUR COLUMN ename CLEAR COLUMN hiredate CLEAR COLUMN sal CLEAR COLUMN asal CLEAR CLEAR BREAK

SET VERIFY ON

SET FEEDBACK ON

SET ECHO ON

SQL> START p8q5.sql;

Introduccion a OracleBi· Apendice A-22

11

n

Practlca 9 Soluciones

lnsertar dutos en la labia MY_EMPLOYEE.

1.

Eje~ule cl script /ab9_1..1",1 para construir la tabla MY_EMPLOYEE.

SOL> START ~ab9_1.sq~;

2.

Dcscriba la estructura de la tabla para identificar las siguierues columnas:

SOL> DESCRIBE my_employee

3.

lnserte cI primer registro del ejemplo que le presentamos bajo esras lfneas, en la labia. No liste las columnas en la clausula INSERT.

Ul LMi_NAME FlRST _NAlVlE USERID SALARY
I Patel Ralph rpatcl 795
2 Danes Belly bdancs 860
3 Biri Ben bbiri 1100
4 Newman Chad cnewman 750
5 Ropeburn Audry aropebur 1550 SOL> INSERT INTO my_employee

2 VALUES (1, 'patel', 'Ralph', 'rpatel', 795)1

4.

Introduzca en In tabla el segundo registro del ejcmplo, segun el modele anterior. Esta vcz, listc las columnas explfcuamerue en la clausula INSERT.

SQL> INSE.RT INTO my_elllpl.oyee (id, last_name, first_name,

2 u .. erid, sala.ry)

3 VALUES (2,. 'Dancs', 'Betty', 'bdancs' , 860);

5.

Confirme la i nsercion correct a de los datos en la tabla:

SOL> SELECT 2 FROM

..

my_empl.oyee;

Introduce ion a OracleBi • Apemdice A-23

Practica 9 Solucion [contmuaclon)

6. Cree un script llamado loademp.sql para cUI'gar registros en la tabla MY_EMPLOYEE

interactivamentc, Pregunte al usuario por el id, nombre, apellido y salado del emplcado. Concatene la primera lelra del nombre y las ptimeras sicte lelms del apcllido, para ohtener lin "userid"

sgT ECHO OFF SET VERIFY OPF ACCEPT p_ld -

PROMPT 'Please enter the employee number' ' ACCEPT p_first_name -

PROMPT 'Please enter the employee's first name, ' ACCEPT p_last_name -

PROMPT 'Please enter the employee's last name,

ACCEPT p_salary PROMPT 'Please enter the employee'S sa.lary: '

INSERT INTO my_employee

V~UES (&p_id, '&p_last_name', '&p_first_name', substr ( '&p_first_naJnB', 1, 1) II substr('&p_last_name', 1, 7), &p_salary)

I

SET VERIFY ON SET ECHO ONI

7, lntroduzca en la tabla los dl's siguienles regiWos de ejemplo, ejeculando el script.

SOL> START loademP·sql SOL> START ~oademp.sq~;

8,

Confirme que los datos han sido insertados corrcctamentc:

SOL> SELECT 2 FROM

*

my_employee;

9,

Haga commit para hacer las inserciones pcrrnanentcs.

I SOL> COMMIT;

lntroduccion a OracleSi - Apendice A·24

"

I

11

I

II

II

I

Practica 9 Soluciones (contmueclon)

Modifique y borre datos dc la tabla MY_EM PLOY EE,

10. Carnbie cl apellido del ernplcado ruimero 3 a "Drexler".

SQL> UPDATE 2 BET

3 WHERE

my_employee last_name 'Drexler' id - 3;

II

Para rodos los emplcados can salario menor a 900, aslgnelcs 1000.

SQL> UPDATE 2 SET

3 WHERE

my_employee salary 1000 salary < 900;

12.

V critique los camhios en In tabla:

SOL> SELECT 2 FROM

last_name, salary my_employee;

13. Borre a "Hetty Danes" de la labia MY._EMPLOYEE,

SOL> DELETE
2 FROM my_employee
3 WHERE last_name ; I Dancs,
4 AND first _name ~ 'BettY'1 14. Vcrifique los cambios ell la tabla:

I SOL> SELECT . 2 FROM

my _ employee;

15, Haga com mil de los carnbios pendientes.

BOL> COMMIT;

Controle las transaceiones de la labia MY_EMPLOYEE. 16.

SincrOllic" la tabla COIl cl ultimo registro del ejemplo, ejecutando "I scripl creadl' en eI paso 6. I SQL> START loademp.sql/

Introducci6n a OracleSi - Apendice A.25

Practica 9 Soluciones (continueclcn)

17. Verifique que los datos se insertaron correctamcntc,

I SQL> SELECT 2 FROM

Illy_employee;

j 8. Marque un punto inrcnnedio en el Pl'oceSO de In tfansaccion.

I SQL> SAVEPOINT a;

19. Vade 10 tabla por cllmpleto.

I ~QL > DELETE

_ 2 FROM my_employee;

20. Vcrifique que la tabla e~t5 vacfa,

I SQL> SELECT 2 FROM

"

my_employee;

2 I. Descarte 13 operacion de borrado mil., recicllte, sin descarlar la previa inserci (In.

I SQL> ROLLBACK TO SAVE POINT &;

22. Vcrifique el cstado de la tabla.

I SQL> SELECT

_ 2 FROM

Illy_employee;

23. Haga perrnamen tes los cambios pendicntes.

SQL> COMMIT1

Introduccion a OracleSi - Apendice A.26

]

J

]

J

I

II

Practica 10 Soluciones

I.

Cree Ia tabla DEPARTMENT basado en el modele preseruado, lntroduzca la sinraxis en un script llarnado pJO'lJ.s"I, y a coruinuacion ejecuic el script para erear la labia. Verifique la creacion de I abl

a I' a.
COIUlllll Name Jd Name
Key Type
Nul L"'IJ nique
FKTabie
FK Column
Datatype Number VARCHAR2
Length 7 25 SQL> EDIT pl0ql.sql

CREATE TABLE department

(id NUMBER(?), name VARCHAR2(25»)

/

SQL> START pl0ql.sql

SQL> DESCRIBE department;

2. Rellenc la tabla DEPARTMJONT con los datos de la labia DEPT. lncluya solamerue la columnas que

precise,

.~------------------------------------------~

SQL> INSERT INTO department

2 SELECT deptno, dname

3 FROM

dept;

J.

Cree la tabla EMPLOY tE, segrin el modelo presenrado. Escrina la siruaxis en el script p /O'JLv"l, y a conrinuacion cjccurelo. Verifique que sc ha creado la labia ..

Column Name 1D LAST_NAME FIRST_NAME DEPT lD
KcyTypc
Nuns/Unique
I"K Table
FK Colum!!
Datatype Number VARCHAR2 VARCHAR2 Number
Length 7 25 25 7 lntrodueclon a OracleSi • Apendice A-27

Practica 10 Soluciones (continuaci6n)

employee NUMBER (7) , VARCRAR2 ( 2 5) , VARCHAR2 (25) , NUMB.E.R ( 7) )

CREATE TABLE (id last_name first_name dept_id

I

SQL> START plOqJ.sql SQL> DESCRIB.E employee;

4. . Modifique la tabla EMPLOYEE para pennitir nombres largos para los ernpleados. Verifique los

cambios,

SQL> ALTER TABLE employee

2 MODIFY (last_name VARCHAR2(50»;

SQL> DESCRIBE employee

5: . Verifique que tanto In tabla DEPARTMENT como EMPLOYEE han side reconocidas par el diccionario de datos (Utiiice: USER_TABLES)

SQL> SELECT 2 FROM

3 WHERE

table_name user_tablell

tabl,,_n.ame IN ('DEPARTMENT', 'EMPLOYEE');

6.

Cree la tabla EMPLOYEE2 basada en al estructura de la tabla EMP. Inc1uya solo las columnas:

EMr.NO, ENA.ME ~ DEPTNO. Nornbrc las columnas en la nueva labia, respectivarnente: 111, LAST_NAME. yDI'.PT_ID.

SQL> CREATE TABLE 2 SELECT

3 FROM

e.lIIPloyee2 AS

empno id, ename last_name, deptno dept_id emp;

7.

Borre la tabla EMPLOYER.

I SQL> DROP TABLE

employee;

8. Rcnombre 13 tabla EMPLOYEE2 a EMPLOYEE.

SQL> RENAME employee2 TO employee;

Introducci6n a Oracle8i - Apendice A.28

I
I
r
I
r
I
I
I
I
I
I
I
,-. I
I
I
1
I
r
I
1
I
I
!..,
!..,
I
I
l ~
_,.- Practica 10 Soluciones (continuaci6n)

9.Ailada cornentarios a las tablas DEPARTMENT Y EMPLOYEE, describiendo las tablas, Verifique la informacion en "I diccionario de datos.

SQL> COMMENT ON TABLE employee IS 'Employee Information'; SQL> COMMENT ON TABLE department IS 'Department Information'; SQL> COLUMN table_name FORMAT A15

SQL> COLUMN table_type FORMAT AlO

SQL> COLUMN comments FORMAT A40

SQL> SELECT *

2 FROM user_tab_comments

3 WHERE table_name'_' DEPARTMENT' 4 OR table name = 'EMPLOYEE';

10. Elil11ine la columna LAST_NAME de la tabla EMPLOYEE. Cnnfirrne su modificacion consultando la descripcion de la labia.

SQL> ALTE.R TABLE employee

2 DROP COLUMN LAST_NAME I

SQL>

DESCRIBE em,ployee

II. Cree la tabla EMPLOYEE2 basada en la estructura de 13 tabla EMP. lncluya solo las columnas EMPNO, EN AME, Y DEPTNO. Nombrc las columnas de la nueva tabla lD,LAST _NAME, Y OEPT_1D, respectivamerue. Marque la columna DEPT _ID en la tabla EMPLOYEE2 C0ll10 UNUSED. Confirme su modificacion consultando la descripcion de la tahla ,

SQL> CREATE TABLE employee2 AS

2 SELECT empno id, ename last_name, deptno dept_id

3 FROM emp

" I

SQL> 2

ALTE.R TABLE employee2 SET UNUSED (dept_id);

SQL> DESCRIBE amployee2;

12. Eliminc todas las colurnnns UNUSED de la tabla EMPLOYEE2 . Confirme su modiricacion consultando la descripcion de la labia.

SQL> ALTER TABLE employee2

2 SQL>

DROP UNUSED COLt:1MNS; DESCRIBE employee2

Introducci6n a Oracle8i - Apendice A·29

Practiea 11 Soluciones

Anada una restriccion PRIMAI~Y KEY a nivel de la tabla EMPLOYEE usando la columna 10.

La restriccion deberta estar activada (enabled) al ser creada.

SQL> ALTER TABLE

2 ADD CONSTRAINT

employe ..

.. mployee_id__pk PRIMARY KEY (id);

2, Cree una restriccion PRIMAR Y KEY sohre III tabla DEPARTMENT usando la columna ID, La

restriccion deberia cstar aClivada (enabled) al ser creada.

SQL> ALTER TABLE

2 ADD CONSTRAINT

depart.ment

department_id__pk PRIMARY KE'Y (id) I

3, Afiada una referenda FOREIGN KEY a I~ tabla EMPLOYEE, que asegure que cl empleado no

e~ta asi gnado a un departamento que no ex iste,

SQL> ALTER TABLE employ ....

2 ADD CONSTRAINT emPloyee_dept_id_fk FOREIGN KEY (dept_id)

3 REFERENCES department(id);

4. Verifiquc que las restriccioncs lueron ariadidas, consultando USER_CONSTRAINTS Observe los tipos y nOll1nres de IllS rcslricciones. Salve su sentel1cia en un richero: pl'q4.sql.

SQL> SELECT constraint_name, constraint_type

2 FROM user_constraints

3 WHERE table_name IN t : E;MPLOYEE', 'DJ!:PARTMENT');

SQL> SAVE pllq4.sql;

5, Visual ice los nornbres y tipos dc objetos eonsultando la vista del diccionario de datos

USER_OBJECTS pam las tablas EMPLOYEE y DEPARTMENT. Tal vez qui era formatear las columnas, para LIlla lectura mas cornoda. Observe que exisren indices para las nuevas tablas.

SQL> COLUMN object_name FORMAT A30
SQL> COLUMN object_type FORMAT A30
SQL> SELECT object_name, object_type
2 FROM user_objects;
3 WHERE object_name ~ 'EMPLOYEE'
4 OR obj ect_nam.e = 'DEPARTMENT' ; Si tiene tiempo, continue con el siguierue ejercicio:

6, Modifique ]a labia EMPLOYEE. Ai'iada la columna SALARY de liro NUMBER(7),

SOL> ALTER TABLE employee

2 ADD (sala.ry NUMBER (7 ) J ;

Introducci6n a Oracle8i - Apendice A-30

I

,

I

,

I

I

!~ I

II~

I! ~ II ~

Practice 12 Soluciones

'. 'II d: EM P V U basad a en el numero de empleado, nombre del empleado y

I. Crear una vista arua a -. . ,I '·d

d I d sde In tabla EM P Cambiar la cabecera del nombre del cmp eac 0 a

numero de cpartamen 0 csue u ~.

EMPLO~Y~E=E~ --------------~------------------I

SQL> CREATE; VIEW emp_ vu AS

2 SELECT empno, ename employee, dept no

3 FROM

elllPi

2. Vislializar el contenido de la visla EMP _ VU.

[SOL> SELECT 2 FROM

emp vu;

),

Seh;;ccionar elnol!lbre de 13 visla y ell~xto, de la vista del diccionario (Ie datos USER_VIEWS.

SQL> COLUMN view_name FORMAT A30 SQL> COLUMN text FORMAT A50

view_name, text

SOL> SELECT 2 FROM

user views;

4. Usando la vista EM P_ VU, in troducir una cOl1sulla para visuali"!.ar todos los nornbres de los

Cillpleados y los nlllneros de 10> d~partalllclllOs.

SQL> SELECT 2 FROM

employee, deptno 8lIlP_vu;

5, Creal' una vista Hamada DEPT20 que coruenga el numero de euipleado, nombre de ernplcado y

l1UlIlGrO de departameruo de todos los empleados del departamento 20. Eiiquetar las colurtlnllS de la vista EMPLOYER_lD, EMPLOYEE Y DEPARTMENT_ID. No permiur que un cmpkado sea asignado a otro

depunamento a lraveS do;: la visla.

SQL> CREATE VIEW dept20 AS
2 SELECT em,pnO employee_id, ename employee,
3 deptno department_ id
, FROM emp
5 WHERE deptno 20
6 WITH CHE;CK OPTION CONSTRAINT emp_dept_20; Introducci6n a Oracle6i - Apendice A-31

Pnictica 12 Soluciones (continuaci6n)

6. Visualizar la estruciura y los conlenidos de la vista DEPT20.

SQL> DESCRIBE dept20 SQL> SELECT *

2 FROM dept20;

7. lntentar reasignar a Smith 31 departamento :l0.

SQL> UPDATE dept20

2 SET department_id ~ 30

3 WHERE

employee ~ 'SMITH';

Si ticne liernpo, complete el siguicntc ejercicio:

8. Crear una vista Hamada SALAR Y_ VU basada en el nombre de cmpleado, nornhre del

depannmento, salario y grado de salario de todos los ernpleados. Etiquetar I~ colurnnas Employee Department, Salary y Grade, respecdvamenrc, '

SQL> CREATE VIEW salary_vu AS

2 SELECT ename employee, dname department,

3 sal salary, grade

4 FROM 5 WHERE

6 AND

emp e, dept d, salgrade 9 e.deptno = d.deptno

e. sal between s .109901 and a , h.isal;

Introducci6n a OracleSi· Apendice A.32

I 1 I

I

r

I

I

r

I

I

I ,

I

I

I

I

I

J

Practica 13 Soluciones

I. Cree LIlla secuencia para ser utilizada en la clave primaria de la tabla DEPARTMENT La secuencia comenzara en el ruunero 60 y su max irno sera 200. Su incremento sera de 10 en lOy el nornbrc DEf'T_ID_SEQ.

SQL> CREATE SEQUENCE dept_id_seq 2 START WITH 60

3 INCREMENT BY 10

4 MAXVALUE 200 i

2. Escriba un script que visualice la siguiente informacion acerca de sus secuencias: nombre, valor

maximo, tamaiio dd incrcmento y ultimo Ilurnero. Llamc al script p131J2"'·'1I. Ejecute Sll scrip!.

SQL> EDIT p13q2.sql

SELECT sequence_name, max_value, increment_by, last_nwnber

FROM I

SQL> START p13q2.sql;

user_sequences

3. Escriba un script inrerucuvo para insertar un regisrro en la tabla DEPARTMENT Llame a su

script plJij3 . sql, Asegurcse de usar In sccuenica que creo para Ia columna !D. Cree un mensaje personalizado para introducir el nombre del de-partamento. Ejccute el scnpt. Aiiada los departamento> "Educacion" y "Adrninistracion". Chequec las inscrciones.

SQL> EDIT p13q3.sql SET ECHO OFF SET VERIFY OFF

ACCEPT name PROMPT 'please enter the department name: '

INSERT INTO department (id. name)

VALUES (dept_id_seq.NEXTVAL, '.name·)

/

SET VERIFY ON SET ECHO ON

SQL> START p13q3.sql

SQL> SELECT 2 FROM

*

department;

4. Cree un Indice no unico sobre la FOREIGN KEY de la tabla EMPLOYEE.

SQL> CREATE INDEX employee_dept_id_idx ON employee (dept_id);

Introducci6n a OracleSi • Apendice A~33

Pnictica 13 Soluciones (eonunuaclen)

5. Visualice los indices y su unicidad, que existen en el diccionario de datos para In tabla EMPLOYEE. Salve la sentencia en un script de nornbrep/3q5.sql.

SQL> SELECT index_name. table_n...,.e, uniqueness

2 FROM user_indexes

3 WHERE table name = 'EMPLOYEE'1 SQL> SAVE p13q5.sql;

Int:roduccion a OracleSi - Apendice A.34

u

Practica 14 Soluciones

i.

Cree las labia, segun los cuadros prcscntados sucesivarnerue. Elija los tipos de datos apropiados y ,,>egUfCSC de afiadir las restricciones (constraints) de iruegridad.

a. Nombre de la Tabla MEMEER

Columo_ MEMBUI IA"T_ HRST_ JOIN_
N311"ie 11) NAMH NAME ADJ)HI:.';S CITY PHONE DATE
Key I'K
Typo
Null! NN,U NN NN
Unluue
DcrauU System
Value D',"UC
Dat.typo Number Vl\RCHAR2 VARCHAR2 VAHC!11I1l2 VARCHAR2 VARCHAR2 Dare
Length 10 25 2'i 100 30 IS (member_id

CREATE TABLE member

last_name

first_name address city

phone join_date

NUMBER (10)

CONSTRAINT member_member_id_pk PRIMARY KEY, VARCH.AR2 ( 25 )

CONSTRAINT member_last_name_nn NOT NULL, VARCH.AR.2 ( 25) •

VARCH.AR2 (100),

VARCH.AR2 ( 30) ,

VARCH.AR.2 (15) ,

DATE DEFAULT SYSDATE

CONSTRAINT member_joi.n_date_nn NOT NULL);

Introduccion a Oracle8i· Apendice A·3S

Practica 14 Soluciones (continuaci6nJ b. Nornbre de la Tabla: TtTLE

Conmm _ TlTLE_ REL.EASE
Name II) TITLE DE,~CR IPT.ION RATING CATEGORY DATE
Key PK .1
1"yp~
Null! NN.U NN NN ,
Unique
Check G.PO,R, DRAMA,
NCI7, NR COMF.DY.
ACTION,
CHII.D,
SCIFI,
DOCUMEN
TARY
Datatype Number VARCHAR2 VARCHAR2 VARCHAR2 VARCHAR2 Dare
Lell~'h I() 60 400 4 20 CREATE TABLE title (titl.e_idNUMBER{ 1.0)

CONSTRA.INT title_title_id_pk PRIMARY KEY,

title VARCHAR2 (60)

CONSTRAINT title_title_nn NOT NULL, de.scription VARCHAR2 (4 0 0)

CONSTRAINT title_deBcription_nn NOT NULL,

ra t ing VARCHAR2 (4)

CONSTRAINT title_rating_ck CHECK

(rating IN ('G', 'PG', 'R', 'NC17', 'NR'», cat egory VARCHAR2 (20) ,

CONSTRAINT title_category_Ck CHECK

(categ'ory IN ('DRAMA', 'COMEDY', 'ACTION', 'CHILD', 'SCIFI', 'DOCUMENTARY'», release date DATE);

Introducci6n a Oracle8i- Apendice A-36

I

1

I

r

!~ !~

I~ I~ I i~

I~ 1t3

I i~

II~ II~

II,~

]

Practica 14 Soluciones (continuaci6n)

c. Nombre ue In Tabla; TITLE_COPY

Column Name COPY_1D TITLE_1D I STATUS
Key PK PK,FK
TVJ}e
Null! NN,U NN,U NN
Uuiuue
Check AVAILABLE,
DESTROYED,
RENTED,
RESERVED
I<'K Ref Table TITLE i
II
FK Ref COli I TITLE_lV
Datatype Number Number ' VARCHAR2
Length 10 10 15 Cl!.EATt: TABLE title_copy

(copy_id NUMBER(lO),

title_id NUMBER(lO)

CONSTRAINT title_copy_title_i.f_fk REFERENCES title(title_id),

sta.tus VARCHAR2 ( l5)

CONSTAAINT title_copy_status_nn NOT NULL CONSTAAINT titl,,_copy_status_ck CHECK {5t atuB IN ( 'AVAILABLE' " DESTROYED' , 'RENTED', 'RESERVED'»),

CONSTRAINT titls_copy_copy_id_title_id_pk PRIMARY KEY (copy_id, title_id»;

Introducci6n a Oracle8i - Apendice A.37

Practica 14 Soluciones (continuaci6n) d. Nombre de la Tabla: RENTAL

Column BOOK_ MEMBER_ COpy ACf_RET_ EXP_RET_ TlTLE_1D
_
Name DATE ID ID DATE DATE
Key PK PK.FKI PK,FK2 PK.FK2
Type
Default System 2 days alter
Value Dale hOIJk date
FKRd MEMBER TITLE _ TlTLE _
Toole COPY COPY
I<Ji Ref MEMBER _ COPY_ID TITLE_ID
Col ID
Data type Dale Number Number Date Date Numher
Lengtll 10 10 10 CREATE TABLE rental

(book_data DATE DEFAULT SYSDATE, membar_id NUMBER (10)

CONSTRAINT ranta1_member_id_fk REFERENCES member (mem.ber_idl •

copy_id NUMBER(lO),

act_ret_d.ate DATE.

exp_ret_data DATE DE.FAULT SYSDATE + 2,

ti~le_id. NUMBER (10) ,

CONSTRAINT rental_book_date_copy_title_pk ~RIMARY KEY (book_da~e, member_id, copy_id, title_idl, CONSTRAINT rantal._copy_id_~itla_id_fk FOREIGN KEY (copy_id, ti~le_idl

REFERENCES title_copy(copy_id, tit1e_id);

Introducci6n a Oracle6i - Apendice A-36

Pnictica 14 Soluciones (continuaci6n)

e. Nombre de la Tabla: RESERVATION

CoIUIlIIl_NaDlC RES_DATE MEMBER_ ID TITLE_ID
Key PK PK,FKI PK,FK2
Type
Nu1lI NN,U NN,U NN
Unique
FK Ref MEMBER TITLE
Tllbl~
FK Ref MEMBER_ ID TITLE_ID
C"llIum
Dutatype Dale Number Number
Lengtil to 10 CREATE TABLE reservation

(res_date DATE,

member_id NUMBER(101

CONSTRAINT reservation_member_id RE.FERENCES member (member_id.) •

title_id NUMBER(10)

CONSTRAINT reservation_title_id REFERENCES titl.e(title_id),

CONSTRAINT reservation_resdateJllem_tit__pk PRIMARY KEY (res_date, meroher_id, titl.e_idlll

Introducci6n a Oracle8i - Apendice A-39

Pnictica 14 Soluciones (continoaci6n)

2.

Verifique que las tablas y sus cosntruints sc han crcado apropiadamente. Consulte el D.o.

SQL> SELECT 2 FROM

3 WHERE ,

table_name user tables

table nmme IN ('MEMBER', 'TITLE', 'TITLE_COPY', 'RENTAL', 'RESERVATION');

SQL> COLUMN constraint_II.arne FORMAT A20 SQL> COLUMN table_name FORMAT A15

SQL> SELECT constraint_name, constraint_type,

2 table_name

FROM WHERE

user_ con.st raint s

table_name IN ('MEMBER', 'TITLE', 'TITLE_COPY', 'RENTAL', 'RESERVATION');

3 ,

5

3.

Cree. secuencias para idenrificar de forma unica cad. rcgistro ell las tablas MEM FlER Y TITLE.

a. Numero de miembro, tabla MEMBER: start with 101; no permitir cache de valorcs.

Nombre de la secuencia: member_id_seq.

SQL> CREATE SEQUENCE member_id_seq 2 START WITH 101

3 NOCACHEI

b. Numcro de titulo, tabla TITLE: start with 92: no caching. Nornbre de 13 secucncia: l.ille_id_seq.

SQL> CREATE SEQUENCE titla_id_seq 2 START WITH 92

3 NOCACHE;

c. Verifique Iii exisiencia de las secuencias ell el diccionario de datos,

SQL> SELECT 2 FROM

3 WHERE

seque.llce_name, inc rement_by , last_nwnber user_sequences

sequence_name IN ('MEMBER_ID_SEQ', 'TITLE_ID_SEQ');

Introduccion a OracleBi - Apendice A-40

Practica 14 Soluciones (continuacion)

4. Aiiada datos a las tablas. Cree un script para cada conjunro de datos a ahadir.

a. Afiada tflulos de pcliculas a 13 tabla TITLE. Escriba un script para imroducir la informacion de las pclfculas Salve el script como p14,,4l1.slji.Utilice 1<1, secucncias para idenuficar cada tltulo. Recuerde que las comi 1.1 as si tuples seran neccsarias para cadenas tie caracteres. Verifique los

cambios.

SQL> EDIT p14q4a.sql SET ECHO OFF

INSERT INTO title(title_id, title, descriptio.n, rating, category, release_date)

VALUES (t it le_id_seq. NEXTVAL , 'willie and Christmas Too',

'All of willie"s friends made a Christmas list for Santa, but Willie has yet to add his own wish list.', 'G', 'CHILD', '05-OCT-9S')

I

INSERT INTO title(title_id , title, description, rating, category, release_date)

VALUES (title_id_seq.NEXTVAL, 'Alien Again', 'Yet another installment of science fiction history. Can the heroine save the planet from the alien life fo~?', 'R', 'SCIFI', '19-MAY-95')

I

INSERT INTO t. i t.le (t it le_id, tit Ie, descript Lon , rat i.ng, category, release_datel

VALUES (title_id_seq.NEXTVAL. 'The alob', 'A meteor crashes near a small 1Imerican town and unleaShed carnivorous goo in this classic.', 'NR', 'SCIFI', '12-AUG-95')

I

INSERT INTO title(title_id, title, description, rating, category, release_date)

VALUES (title_id_seq.NEXTVAL, 'My Day Off', 'with a little luck and a lot inge.nuity, a teenage.r skips school for II day in New York.', 'PG', 'COMEDY', '12-JUL-95')

I

COMMIT I

SET ECHO ON

SQL> SELECT 2 FROM

title title;

lntroduccion a Oracle8i - Apemdice A-41

Practice 14 Soluciones (continuaci6n)

Title Description Rating Category Release_date
Willie and All of Willie's friends G CHILD O'i-OCT-1995
Christmas make a Chri strnas I i ~ I. for
Too Santa, but Willie has yet to
add his own wish list.
Alien Again Yet another installation of R SCIFI 19-MAY-1995
science f ction history. Can
the heroine save the planet
from the alien life form'!
The Gloh A mel eor eras h es ne ar a NR SCIF! 12-AUG-1995
small American town and
unleashes carnivorous goo
in this classic.
My Day Off With a little luck and a lot PG COMEDY I 2-JUL-1 995
of ingenuity, 3 teenager
skips school for a day in
New York
Miracles on A six-year-old has doubts PG DRAMA 12-SEP-1995
lee about Santa Claus, but she
discovers tim! miracles
really do exist.
Soda Gang After discovering a cache NR ACTION o I-JUN-J 99)
of drugs, a young couple
find themselves pitted
against a vicious gang. Introducci6n a OracleSi - Apendice A-42

Practice 14 Soluciones (continuaci6n)

h. Anada datos a la tabla MEMBER. Escriba un script y Jlamelo p/4</4b.s</./, para pedir a los usuaries la informacion. Ejecute el scritp, Asegiirese de que usa la sccucncia para anadir Ill! meres a los mie III bros,

First_ Last Name Address City Phone Join_Date
Name
Carmen Velasquez 283 King Street Seattle 206-899-6666 08-MAR-1990
LaDoris Ngao 5 Modrany Bratislava 586-355-&882 OS·MAR-1990
Midori Nagayama 68 Via Centrale Sao Paolo 254-852-5764 17-JUN-1991
Mark Quick-to- 6921 King Lagos 63-559-7777 07-APR-1990
See Way
Audry Ropehurn 86 Chu Street Hong Kong 41-559-87 18-JAN-J991
Molly Urguhart 3035 Laurier Quebec 418-542-9988 J8-JAN-1991 SQL> EDIT p14q4b.aql SET ECHO OFF

SET VERIFY OFF

INSERT INTO member(member_id, first_name, last_name, address, city, phone, join_datel

VALUES (member_id_seq.NEXTVAL, '&first_name', '&last_name', I &.address I, I &city I ~ I &pho,ne I. I &join_date I)

COMMIT I

SET VERIFY ON SET ECHO ON

SQL> START p~4q4b_sq~

Introduccion a Oracle8i - Apendice A-43

Practica 14 Soluciones (continuaci.6n)

c. Aiiada las siguientes capias de pel rculas, a Ia labia TITLE_COPY :

Title Copy Id Status
Willie and Christmas Too I AVAILABLE
Alien Again 1 AVAILABLE
2 RENTED
The Glob 1 AVAILABLE
f\1Y_DayOrr I AVAILABLE
2 AVAILABLE
3 RENTED
Miracles Oil Ice I AVAILABLE
Soda Gang I AVAILABLE SQL> INSERT INTO title _copy(copy_id, title _id. status)
2 VALUES (1. 92, 'AVAILABLE');
SQL> INSERT INTO title _copy(copy_id. title _id, status)
2 VALUES (1, 93, 'AVAILABLE' ) ;
SQL> INSERT INTO title _copy(copy_id, title _id, status)
2 VALUES (2. 93, 'RENTED') ;
SQL> INSERT INTO title_copy(copy_id, title_id, status)
2 VALUES (1, 94. 'AVAILABLE' ) ;
SQL> INSERT INTO title _copy(copy_id. title _id. status)
2 VALUES (1, 95, 'AVAILABLE');
SQL> INSERT INTO title_copy(copy_id, title_id, status)
2 VALUES (2, 95, 'AVAILABLE' ) ;
SQL> INSERT INTO title _copy(copy_id, title_id,status)
2 VALUES (3, 95. 'RENTED');
SQL> INSERT INTO title _copy(cop¥_id. title _id,status)
2 VALUES 11, 96, 'AVAILABLE' ) ;
SQL> INSERT INTO title _copy(copy_id, title id, statu s )
2 VALUES (1. 97, 'AVAILABLE'); Introducci6n a OracleSi • Apendice A-44

Practica 14 Soluciones (continuaci6n)

d. Anada los siguientes ah.Jllile.res de pelfculas, a la tabla RENTAL Nota: EI titulo varia segiin la secuencra.

Titlc_ Copy_ Member_
Id Jd Id Book_date EX}l_Ret_Uate Act_Ret_Dale
92 1 101 3 days ago I day ago 2 days ago
91 2 101 I day ago 1 day from now
95 3 102 2 days ago Today
97 I 106 4 days ago 2 days ago 2 days ago SOL> INSERT :2

3 VALUES

SOL> INSERT 2

3 VALUES SQL> INSERT 2

3 VALUES

SQL> INSERT 2

J VALUES

SQL> COMMIT;

INTO rental(title_id, copy_id, llIetnber_id, book_date, exp_ret_date, act_ret_date) (92, 1, 101, sysdate-3, sysdate-l, sysdate-2);

INTO rental(title_id, copy_id, member_id, boOK_date. exp_rat_date, act_ret_date)

(93, 2, 101, sysdate-l. sysdate-l, NULL); INTO rentalltitle_id, copy_id, member_id. book_date. exp_ret_date, act_ret_date) (95, 3, 102, sysdate-2, sysdate, NULL);

INTO rentalltitle_id, copy_id. llIamher_id, book_date, exp_ret_date.act_ret_date)

197. 1. 106. sysdate-4. sysdate-2, sysdate-2);

[ntroduccldn a OracleSi - Apendice A-45

Practica 14 Soluciones (continuaci6n)

5, Cree una vista call nornbre TlTLE_A V AIL para mosirar las pellculas Y SlI disponibilidad, as. como la

Iecha de rccupcracion, si esta alquilada. Consultc la tabla completa.

SOL> CREATE VIEW title_avail AS

2 SELECT t.title, c.copy_id, c.status, r.eKP_ret_date

3 4 5 6

FROM WHE.RE AND AND

title t, title_copy c, rental r t.title_id = c.title_id c.copy_id = r.copy_id(+) c.title_id = r.title_id(+};

SOL> COLUMN title FOIlMAT A30
SQL> SELECT *
2 PROM title avail;
3 ORDER BY title, copy idl 6.

Rcalicc cambios sobre los datos de las tablas.

a. A nada un nuevo titulo. L11 pelfcula es "Interstellar Wars," con cl valor PC para "rated" y clasificnda com" Sci-Ji. La "release date't es 07-JUL-77. La descripcion es "Futuristic interstellar action movie, Call the rebels save the humans from the evil Empire?" Asegurese de anadir un registro a la tabla tltulos, para disponer de dos copias.

INSERT INTO tltle(title_id, title, description, rating, category, release_date)

VALUES (title_id_seq.NEXTVAL, 'Int:erlltellar Wars', 'Futuristic interstellar action movie. Can the rebels save the humans from the evil Empire?', 'PG', 'SCIPI·. • 07-JUL-77' )

I

INSERT INTO title_copy (copy_id. t:itle_id, status) VALUES (1, 98, 'AVAILABLE')

I

INSERT INTO title_copy (copy_id, title_id. status) VALUES (2, 98, 'AVAILABLE')

I

b. lntroduzca dos rcservas, Una reserva es para Carmen Velasquez, que quiere alquilar "Interstellar Wars," La otra es para Mark Lewis, que quiere alquilar "Soda Gang."

SQL> INSl!:RT INTO reservation (res date, member_id, title_:id)
2 VALUES (SYSDATE, 101, 98) 1
SQL> INSERT INTO reserva.tion (res_date, member id, title_id)
2 VALUES (SYSDATE, 104, 97); Int'roduccion a OracleBi - Apendice A-46

Praetlca 14 Soluciones (continuaci6n)

7.

C. La cliente Carmen Velasquez alquila "Interstellar Wars," copia l , Borre la reserva para la pellcula.

Registre la informacion sobre el alquiler. Para In fecha de recuperacion del alquiler, asigne el valor pOl' defecio. Vcrifique que cl alquiler rue registrado a (raves de 10 vista, que creo previarneme.

SQ.L> INSERT INTO rellt:al (titl,,_id, copy_id, member id) 2 VALUES (98, 1,101);

SQL> UPDATE title_copy

2 SET status= • RENTED'

3 WHERE title_id ~ 98

copy_id '" 1;

4 AND SOL> DELETE 2 FROM

3 WHERE

SOL> SELECT 2 FROM

3 ORDER BY

reservation member_id • 101;

*

title_avail title, copy_id;

R eal i ce una mod i f cad Oil sobre Lilla de I as tab I a'.

a. Aiiada una columna PRI CE a la tabla TITLE para registrar el precio del video. La columna tendra una longitud total de ocho digitos y dos decimalcs, Verifique las modificaciones.

SQL> ALTE.R TABLE title

2 ADD (price NUMBER (8,2) ) ;

SOL> DESCRIBE title

Introduoci6n a OracleBi - Apendice A-47

Practlca 14 Soluciones (ccntmuaejen)

b. Cree un script llarnado I'J4q711.:,ql para modificar cada video con un precio, de acuerdo a la siguientc Iista: (nota: tenga los numeros de "title id" disponibles)

Tille Price
Willie and Christmas Tr,O 25
Alien Again 35
The Glob 35
My Dav Off 35
Miracles on lee 30
Soda Ganz 35
Interstellar Wars 29 SET ECHO OFF SET VER.IFY OFF

UPDATE SET WHERE /

SET VERIFY OFF SET ECHO OFF

SQL> START p14q7b.sql;

title

price ~ &'price tltle_id &.title id

c. Ascgurcse de que en el futuro, todos los 11tul05 tendran un precio. Chequee la constraint

SQL> ALTER TABLE title

2 MODIFY (price CONSTRAlNT title_price_nn NOT NULL):

SQL> SELECT 2

3 FROM 4 WHI!:RE

constraint_name, constraint_type, search_condition user_constraints

table_name - 'TITLE':

lntroducclon a Oracle8i - Apendice A-48

111

Practiea 14 Soluciones (contlnuacten)

8. Cree un informe titulado "Historico de Clientcs", Este informc rcflejara la historia de los alquileres

de videos por cliente. Asegurese de incluir el nornbre del clienre. pelfcula alq. fecha de alquiler y duracion del alquiler. Totalice el nurnero de alquileres para todos los clierues, para un perlodo especificadn en el in forme. Salve cl script, llamclo p/4qR.·\·'11.

SQL> EDIT p14q8.sql SET ECHO OFF

SET VERIFY OFF

SET PAGESIZE 30

COLUMN memberFORMAT A11

COLUMN title FORMAT Al5

COLUMN bock_date FORMAT A9

COLUMN duration FORMAT 9999999 BREAK ON member SKIP 1 ON REPORT

SELECT m.first_namel I' 'I Im.last_name MEMBER, t.title,

r.book_date, r.act_ret_date - r.book_date DURATION

FRO.M member m, title t, rental r

WHERE AND

r.member id = m.member_id r.title id t.title id member

ORDER BY I

CLEAR BREAK

COLUMN member CLEAR COLUMN title CLEAR COLUMN book_date CLEAR COLUMN duration CLEAR SET VERIFY ON

SET PAGESIZE 24

SET ECHO ON;

lntrcducclon a Oracle8i - Apendice A-49

~ ~ ~ ~ , ~

II

[I

II

11

11

B

Descripci6n de Tablas y Datos

II

I

r

lntroducclon a Oracle8i B-2

Tabla EMP

SQL> DESCRIBE emp

Name

Null? Type
--------
NOT NULL NUMBER (4)
VARCHAR2 (10)
VARCHAR2(9)
NUMBER (4)
DATE
NUMBER(7,2)
NUMBER(7,2)
NOT NULL NUHBER(2) EMPNO ENAME JOB

MGR HIREDATE SAL

COHM DEPTNO

SQL> SELECT • FROM em»;

EMPNO 13NfLMJ': ,lOB MGH IIIHBDATE: S_i!I_.L COMM Ol:;.P'1'NO
----------
7339 K1Nli ~HESIDENT 17-NOV-61 ')QOD 10
76<HI BLAKE: M..b.-NAGER 7839 01-MAY-Rl 2B50 JO
7782 CLAR.K M).-NAGER 7839 09-.)UN-SL 2450 10
-J~f:J,t.. JONES MANAGEH 71319 02-APR HI lin:, '0
7654 MARTIN ;jhl,I':SMAN I f~'9B 1:t:J. SEf'-Bl 12'0 1400 30
7499 ALLEN ~hl,b:.sMflN '7 f~'J f!, 20 ".B "' lODD 100 30
-/344 TORNER SALESMAN 76~8 08-£".- SI i ';.00 30
71300 .. JAMES CLERK 769B OJ-DEC-Bl 950 10
7521 ~l~.RD SJ..LESr-lhN 769B 22-PEB-Bl 1250 500 ao
-1902 PORD _'\NALYST -/~66 03-DEC-IH 3000 20
-Jj(ioy SM!TH CLERK -1901 17 DEC-SO BOO '0
TJI:J.1:l SCOTT ~_NALYST '15GIS U!:l-DBC-1::!.2 ]000 '0
~J'S")6 ~.D~.MS CLERK TJB~ 1:&-.J.i\N-1::I.3 1100 20
79B MILLER CLERK 'J'JB2 23-Jlill-l::!.::.! IlOO 10 lntroducclcn a Oracle8i B-3

Tabla DEPT

SQL> DESCRIBE dept

Name

Type

Null?

---------

--------------~-------

DEPTNO DNAME LOC

NOT NULL NUMBER(2) VARCHAR2 (14) VARCHAR2 (1])

SQL:> SELECT * FROM dept.;

DEPTNO DNAME

LOC

10 ACCOUNTING 20 RESEARCH 30 SAI,ES

40 OPERATIONS

NEW YORK DALLAS CHICAGO BOSTON

lntroducclon a OracleSi 9.4

I I

I

I

I

I

I

I

I

I

I

I

I

I

Tabla SALGRADE

SQL> DESCRIBE salgrade

Name Null? Type

GRADE NUMBER

LOSAL NUMBER

HISAL NUMBER

SQL> SELECT * FROM salgradel

GRADE LOSAL HISAL
--------- - ------- ---------
1 700 1200
? 1201 1400
3 1401 2000
4 2001 3000
5 3001 9999 tntrcducclon a OracleSi 9-5

Tabla ORO

SQL> DESCRIBE ord

Null?

Type

Name

OROIO OROERDATE COMMPLAN CUSTID SHIPDATE TOTAL

NOT NULL NUMBER(4) DATE VARCHAR2(1) NOT NULL NUMBER(6) DATE NUl-ffiER (8, 2 )

SQL> SELECT * FROM ordl

Tabla .PRODUCT

SQL> DESCRIBE product

Name

Null?

Type

~------------------------------

PRODID DESCRIP

NOT NULL NUMBER(6) VARCHAR2(30)

SQL> SELECT * FROM product;

PROOIO DESCRIP

--------- ~--------~--------------------
100860 ACE TENNIS RACKET I
DROIO ORDERDATE C CUSTID SHIPOATE TOTAr. 100861 ACE TENNIS RACKET II
--------- --------- - -----~--- --------- --------- 100870 ACE TENNIS EALLS-3 PACK
610 07-.)AN-87 .. 100871 'I'ENNIS BALLS-6 PACK
A 101 OS-·')AN- 87 101.4 ACE
611 ll-JAN-87 E 102 1l-JAN-87 45 100890 ACE TENNIS NE'l'
612 lS-JAN-87 C 104 20-,JAN-87 5860 101860 SP TENNIS RACKET
601 01-MAY-86 A 106 30-MAY-86 2.4 101863 SP JUNIOR RACKET
602 05··JOO-86 B 102 20-JOO-86 56 102130 RH: "GUIDE TO TENNIS"
. 604 15-JUN-86 A 106 30-JUN-86 698 200376 SE ENERGY EAR-6 PACK
605 14-JUL-86 A 106 30-JUL-86 8324 200380 SB VI'I'A SNACK-6 PACK
606 14-JUL-86 A 100 30-')UL-R6 3.4
609 01-AUG-B6 B 100 15-AUG-86 97.5
607 lS-JUl.-86 C 104 18-JUL-86 5.6
608 25-JlJL-86 C 104 25-JUL-86 35.2
603 05-JUN-86 102 05-JUN-86 224
620 12-MAR-87 100 12-MAR-87 4450
613 01-FEB-87 108 01-FEB-87 6400
614 01-FEB-87 102 05-FEB-87 23940
616 03-FEB-87 103 10 -FEB-87 764
619 22-FEB-87 104 04-FEB-87 1260
617 OS-FEB-8? 105 03-MAR-87 46370
615 01-PEB-87 107 06-FEB-87 710
618 IS-FEE-87 A 102 06-MAR-87 3510.5
621 15-MIIR-87 A 100 Ol-')l\N-87 730 Introducci6n a Oracle8i 8-6

Introducci6n a Oracle8i 8-7

Tabla ITEM

SQL>CESCRIBE item

Name

ORDID ITEMID PRODID ACTUALPRICE QTY

ITEMTOT

Null? Type

NOT NULL NUMBBR(4) NOT NULL NUMBER{4j NUMB13R(6) NDMBBR(8,2) NUMBER (B) NUMBER(B,2j

r.

SQL) SEL'ECT * PROM item;

ORDID ITEMID PRODID ACTUALPRICE Q'l'Y

610 611 612 601 602 604 60~ 604 603 610 610 613 614 614 612 612 620 620 620 6Ll 613 613 619 617 617 614

2 J 2 1 2 4 1 2 2

100890 100861 100860 200376 100870 100R90 100R61 100860 100860 100860 100R70 200376 100860 100870 100861 101863 100860 200376 102130 100R71 101B60 200380 102130 100RGO 100861 100871

53 45 30

2 4 2.8 58 42 44 56 35

2 R 2,2 35 2.8 40.5 10 35 2.4

3 4 5.6

24 4 3.4 35 45 5,6

200 444 1000 20 150 10

1000 500 100 200 150 100

50 lOO 1000

ITEM'l'OT

1 1 100 1 20

58 45 3000 2.~ 56 174 84 4,40 224 35

8.4 440 15540 2800 R10 l~OO 350 2400 1700 560

4800 600 340 1750 4500 5600

r.

1 2 3 1 2 3

1 2 3

Continued Oil next P(We

lntrcducclon a Oracle8, B-8

2 10 4 1

Tabla ITEM (contjnuaclon)

..

ORDW

616 616 616 616 616 619 619 615 607 615 617 617 617 617 617 617 617 617 609 609 618 618 618 621 621 615 608 608 609 606 605 605 605 605 605 605 612 619

I1'EMID

PRODlD ACTUALPRICE,

1 2 3 4 5 1 2 1 1 2

100861 100870 100890 102130 200376 200380 200376 100861 100871 100870 100870 100871 100890 101860 101863 102130 200376 200380 100870 100890 100860 100861 100870 100861 100870 100871 101860 100871 100861 102130 100861 100870 100890 101860 101863 102130 100871 100871

45 2.8 58 3.4 2.4 4 2.4

45 5.6 2.8 2 8 5.6

58 24 12.5 3.4 2.4 4

2.5 50 35 45.11 45 45 2.8

5 24 5.6 35 3.4 45 2.8 58 24 9 ] .4

5.5

QTY

ITEMTOT

" 5

6 7 8 9

10 2 3 1 2 3 1 2. 3 1 2 1 1 1 2. 3 4 5 6 4 4

tntroducclon II OrlicleBi B-9

10 50 2 10 10 100

100 4 1 100

500 500 500 100 200 100 200 300

5 1 2]

50 10 10

100

50 1 2 1 1

100 500 5 50 100 10 100 50

450 140 116

34 24 400 240 180 5.6 280

1400 2800 29000 2400 2500 340

430 1200 12 .5 50

805

2255.5 450 450 280 250

24 11.2 35 3.4 4500 1400 290 1200 900 34 550 280

Tabla CUSTOMER

SQL> DESCRIBE customer

Null?

Type

Narne

CUSTID NAME ADDRESS CITY

STATE

ZIP

AREA

PHONE

REPID CREDITLIMIT COMMENTS

NOT NULL NUMBER(6) VARCHAR2 145 ) VARCHAR2 (40) VARCHAR2 (30) VARCHAR2(2) VARCHAR2(9) NUMBER(3) VARCHAR2(9)

NOT NULL NUMBER(4) NUMBER(9,2) LONG

tntroducclen a Orac'e8i B-1D

Tabla CUSTOMER (continuaci6n)

SQL> SELECT * FROM customer;

1 no JOCKSPoR'PS

101 'l'KB :5l-"'t·r:T S"O~ 1(12 VQr,J,YR1'l'1:1

]4~ VI~'Jr:IOO-E: 490 P..OLl kll_ 9722 flAMITln:m

H)J .JUST TOnus HTLf..NIM'! MALL

104 INb.1f'( HOIJt<lTAHI 574 !=:HRR'f P.D.

l. 0 ", K of 'I' S:(.>OR:'l'S J( '76 E:L PA_S:F:O

1006 SHAPE LU' 01,108 SEQUOL;!I.

10(17 t,IIJMF.tfS sPQJd'_o; V,r..u:o VILLP.Gb:

ios NURTH '»DODS IiEAL"r'1l.j ANU FI'IWE:S5 ;;.;ut>PL'( ('"ENTER 98 ['c.NE PTNE r.lAY

Cl'l':t ST ".
RF.T .MONT ell %711
REIJill)OC c..'l'r'i ell 911061
P..Hpe. HlGi\!,11i: (;10 9'>1.3"3
8HRr.TrlCJU{£ CJ< ~"J'54..:1
t;UPERTTHO CA snto t
t;;'.N'1'A CLoAM. CA 9100'l
PALO ALru cr. :}.1](IL
5!JN'NYVALI:: CA 93301
HIBBING r~ll ":o':ot:.4-::1 ARl!l\ ~HO.NE R£PID -GREDTTLJMl'l'
·11'3 59F.1-660"9 7R44 5000
-1g 3(.R-122J 75;,n 10000
415 644-1-141 7654 "/(I{10
415 6n-93.12 7521 -ro no
40' 996 2"123 '"I4Y9 10001)
40" ·!"H,-9~66 7644 500.0
415 364-9"1"n 7521 bODO
4DB 967 -4l'9R "7499 10001]
b12 50.11) 912'3 "I~44 8000 COJl1.MI~.N'rs

Inlrodllcci6n a Oracle8i B.l1

Tabla PRICE

SQL> DESC.RIBE price

Null?

Name

Type

PRODID S'rDPRICE MINPRICE STARTDATE END DATE

NOT NULL NUMBER(6) NUMBER(8,2) NUMBER(8,2) DATE

DATE

SQL> SELECT" FROM pricer

PRODID STDPRICE MINPRICE STARTDATE ENDDATE
--------- -~------- --------- --------- ---------
100871 4.8 3.2 01-JAN-85 01-DEC-8S
100890 58 46 4 01-JAN-85
100890 54 40.5 01-JUN-84 31-MAY-84
100860 35 28 01-JUN-86
100860 32 25.6 01-JAN-86 31-l".AY-86
100860 30 24 01-JAN-85 31-DEC-85
100861 45 36 01-J"I)N-86
100861 42 33.6 Ol-JAN-86 31-MAY-86
100861 39 31.2 01-JAN-85 31-DEC- 8 5
100870 2"8 2.4 01-JAN-86
100870 2.4 1.9 01-JAN-8S aI-DEe-aS
100871 5.6 4.8 01-JAN-86
101860 24 18 IS-FEB-85
101863 12.5 9.4 IS-PEB-BS
102130 3.4 2.8 18-AUG-8S
200376 2.4 1.75 lS-NOV-86
200380 4 3.2 15-NOV-86 Introducci6n a Oracle8i 8-12

Oracle University

Madrid:

Monterrey. I (KIl1_17_200. A-6 La Corona) 28230 Las Rozas (Madrid)

ra. 902 302302· Fax: 91 631 21 20

Barcelona:

Avda, Diagonal, (-,15 - 9" 08028 B a rcclona

Tel .. 902302302 - Fax: 93419 1227

Oracle is registered trademark of Oracle Corporation. All Oracle product names are trademarks or registered trademarks of Oracle Corporation.

All other companies and product names mentioned are used for identification purposes only, and may be trademarks of their respective owner.

Copyright © Oracle Corporation 1996 All Rights Reserved

Oracle

Introducci6n a Oracle8i

Guia del Estudianle • Volumen 2