Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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