Documentos de Académico
Documentos de Profesional
Documentos de Cultura
FACULTAD DE INGENIERIA
ESCUELA DE CIENCIAS
ESCUELA DE CIENCIAS
ORACLE
MATERIA BASE DE DATOS II
CECILIA TULCÁN
2009-2010
Ing. Jorge Gordillo
Contenido
Contenido.....................................................................................................................................1
CARACTERISTICAS DE UNA BASE DE DATOS.................................................................................2
Definición de base de datos.....................................................................................................3
Características..........................................................................................................................3
Sistema de Gestión de Base de Datos (SGBD)..........................................................................3
TIPOS DE RELACIONES..................................................................................................................4
Relación identificadora y no identificadora..............................................................................4
GRADOS DE NORMALIZACION.....................................................................................................4
PRIMERA FORMA NORMAL......................................................................................................4
SEGUNDA FORMA NORMAL.....................................................................................................5
TERCERA FORMA NORMAL......................................................................................................5
MANIPULACION DE DATOS..........................................................................................................5
Tipos de sentencias SQL...........................................................................................................5
Sentencias de definición de datos (DDL)..............................................................................5
Sentencias de manipulación de datos (DML).......................................................................6
FUNCIONES DE AGREGACION......................................................................................................9
USO DE LA CLAUSULA GROUP BY...............................................................................................11
USO DE LA CLAUSULA HAVING...................................................................................................14
SELECT ANIDADOS......................................................................................................................16
JOINS..........................................................................................................................................22
JOIN EQUIJOINS......................................................................................................................22
SELECT SINCRONIZADOS............................................................................................................24
1
CARACTERISTICAS DE UNA BASE DE DATOS
Se define una base de datos como una serie de datos organizados y relacionados
entre sí, los cuales son recolectados y explotados por los sistemas de informació n
de una empresa o negocio en particular.
Características
2
TIPOS DE RELACIONES
Relaciones Identificadores
Relaciones no Identificadoras
GRADOS DE NORMALIZACION
La primera forma normal establece que las columnas repetidas deben eliminarse y
colocarse en tablas separadas, esta es una regla muy fá cil de seguir.
3
SEGUNDA FORMA NORMAL
Una relació n está en 2FN si está en 1FN y si los atributos que no forman parte de
ninguna clave dependen de forma completa de la clave principal. Es decir que no
existen dependencias parciales.
En otras palabras podríamos decir que la segunda forma normal está basada en el
concepto de dependencia completamente funcional. Una dependencia funcional
es completamente funcional si al eliminar los atributos A de X significa que
la dependencia no es mantenida, esto es que A Є X, (X – {A}) -x-> Y. Una
dependencia funcional es una dependencia parcial si hay algunos atributos
que pueden ser eliminados de X y la dependencia todavía se mantiene, esto
es A Є X, (X – {A}) -> Y.
Una relació n esta en 3FN si esta en 2FN y ademá s se debe eliminar y separar
cualquier dato que no sea clave. Todos los valores deben identificarse ú nicamente
por la clave.
MANIPULACION DE DATOS
4
El lenguaje de programació nSQL, admite las siguientes sentencias de definició n:
CREATE, DROP y ALTER, cada una de las cuales se puede aplicar a las tablas, vistas,
procedimientos almacenados y triggers de la base de datos.
Otras que se incluyen dentro del DDL, son GRANT y REVOKE, los cuales sirven para
otorgar permisos o quitarlos, ya sea a usuarios específicos o a un rol creado dentro
de la base de datos.
DML son las siglas de Data Manipulation Language y se refiere a los comandos que
permiten a un usuario manipular los datos en un repositorio, es decir, añ adir,
consultar, borrar o actualizar.
En SQL los comandos SELECT, INSERT, UPDATE y DELETE son comandos DML.
SELECT Utilizado para consultar registros de una base datos que satisfagan un
criterio determinado.
INSERT Utilizado para insertar registros en una tabla.
UPDATE Utilizado para modificar los valores de los campos y registros en tabla.
DELETE Utilizado para borrar registros de una tabla.
Otras ó rdenes como: COMMITo ROLLBACK, las cuales sirven para validar o
deshacer los cambios dentro de una transacció n, está n en el límite de lo que
podemos considerar ó rdenes DML de SQL puesto que no inciden en la
manipulació n o consulta de datos pero sí en el proceso en que esto se realiza.
Ejemplo:
1. Cree la tabla provincia con los siguientes atributos:
Cod_prov, nom_prov, desc_prov.
5
2. Cree la tabla estudiante con los siguientes atributos:
Cod_estudiante, cod_prov, nom_estudiante, telf_estudiante.
update estudiante
set telf_estudiante='11111111'
where cod_estudiante=103;
6
Ejercicios
1. Escribir la instrucció n SQL que presente en pantalla todos los datos de los
empleados que ganan entre 1000 y 2500 y que trabajan en el departamento
10 y 30.
Observació n:
Nó tese que la presencia de paréntesis en la clausula and es necesaria puesto que
esta tiene mayor precedencia que la clá usula or.
La consulta anterior se puede realizar también usando la clausula in que funciona
de forma similar a la clá usula or.
Nota:
La palabra asc de ascendente puede ser omitida puesto que es el valor por defecto.
7
3. Escribir la instrucció n SQL que presente en pantalla el nombre del
empleado, la comisió n y valor total que gana entre salario y comisió n cada
empleado.
FUNCIONES DE AGREGACION
Avg()
Devuelve un valor que es el promedio de todos los valores vá lidos y que no estén
en blanco de campo.
AVG(SAL)
----------------------
2073,214285714285714285714285714285714286
Max()
Devuelve el valor vá lido má s alto del campo.
MAX(SAL)
----------------------
5000
8
Min()
Devuelve el valor vá lido má s pequeñ o y que no esté en blanco de campo.
MIN(SAL)
----------------------
800
Count()
Devuelve el nú mero de valores vá lidos y que no estén en blanco de campo.
COUNT(*)
----------------------
14
Sum()
Devuelve el total de valores vá lidos y que no estén en blanco de campo.
SUM(SAL)
----------------------
29025
Variance()
Devuelve la varianza de una muestra representada por una serie de valores que no
está n en blanco de campo.
VARIANCE(SAL)
----------------------
1398313,87362637362637362637362637362637
Stddev()
Devuelve la desviació n está ndar de una muestra representada por una serie de
valores que no está n en blanco de campo.
STDDEV(SAL)
----------------------
1182,503223516271699458653359613061928508
9
USO DE LA CLAUSULA GROUP BY
Agrupa los registros similares siempre y cuando sean del mismo atributo. En el
group by van todos los atributos que estén en el select y que no tengan ninguna
funció n que tenga una aplicació n de agregació n.
Ejemplo:
Escribir la instrucció n SQL que calcule el sueldo promedio que ganan los
empleados pero sin usar la funció n avg().
select sum(sal)/count(empno) from emp;
SUM(SAL)/COUNT(EMPNO)
----------------------
2073,214285714285714285714285714285714286
Observació n:
Para evitar este inconveniente se debe hacer uso de la funció n Group by , en esta
funció n deben ir al menos todos los atributos que no contienen funció n de
agregació n .(Pueden ir mas)
DEPTNO SUM(SAL)
---------------------- ----------------------
30 9400
20 10875
10 8750
10
Ejercicios:
JOB COUNT(*)
--------- ----------------------
CLERK 4
SALESMAN 4
PRESIDENT 1
MANAGER 3
ANALYST 2
11
4. Cuantos empleados existen en cada departamento y que desempeñ en un
mismo trabajo.
STDDEV (SAL)
----------------------
1182,503223516271699458653359613061928508
12
USO DE LA CLAUSULA HAVING
Trabaja sobre una tabla temporal que se crea cuando se utiliza el group by es igual
que el where y solo se utiliza cuando utilizamos group by. En el where no se
puede utilizar funciones de agregació n ya que trabaja en la tabla original mientras
que con having se trabaja en la tabla temporal por lo que se puede utilizar
cualquier funció n de agregació n
Ejemplo:
Observació n:
DEPTNO COUNT(*)
---------------------- ----------------------
30 6
20 5
10 3
Esta consulta crea una tabla temporal con el nú mero de empleados de cada
departamento, para filtrar datos o presentar datos de esta tabla temporal que
cumplan una determinada condició n se usa la clá usula having, como se puede
apreciar en el ejercicio 7, en donde se usa la clá usula having presentando solo los
departamentos que tienen má s de 4 empleados.
Con la clá usula having se puede hacer uso de cualquiera de las funciones de
agregació n vistas anteriormente.
13
La clá usula where actú a de igual manera filtrando datos pero que está n sobre la
tabla original, con la clá usula where no podemos hacer uso de funciones de
agregació n.
Ejercicios
DEPTNO SUM(SAL+NVL(COMM,0))
---------------------- ----------------------
30 11600
20 10875
DEPTNO SUM(SAL+NVL(COMM,0))
---------------------- ----------------------
30 10650
10 7450
14
SELECT ANIDADOS
Los select simplemente anidados trabajan desde el select interno hasta el select
externo.
Los select internos pasan los datos a los select externos donde el select externo es
ejecutado.
En el where se hace operaciones con datos similares es decir tienen que ser del
mismo tipo.
Ejemplo:
Escribir la instrucció n SQL que presente en pantalla todos los datos de los
empleados que trabajan en la ciudad de DALLAS.
DEPTNO
----------------------
20
Seleccionamos los empleados que está n asociados con este deptno:
15
A este tipo de consulta se le denomina con select anidado puesto que se utiliza el
resultado que devuelve un selectpara utilizarlo con otro en una misma consulta.
Ejercicios:
1. Escribir la instrucció n SQL que presente en pantalla todos los datos de los
empleados que desempeñ an el mismo trabajo que realizan los empleados
del departamento 10.
2. Escribir la instrucció n SQL que presente en pantalla todos los datos de los
empleados de aquellos departamentos que tienen má s de 4 empleados.
select * from emp
where deptno in (select deptno from emp
group by deptno
having count(*)>4);
Nota:
Los select se ejecutan desde el mas interno al má s externo
16
3. Escribir la instrucció n SQL que presente en pantalla todos los datos de
aquellos empleados que ganan el má ximo salario de la empresa.
4. Escribir la instrucció n SQL que presente en pantalla todos los datos del
empleado que es el má s nuevo de la empresa.
Select * fromemp
Where hiredate in (select max(hiredate) from emp);
5. Escribir la instrucció n SQL que presente en pantalla todos los datos del
empleado que es el má s antiguo de la empresa.
Select * fromemp
Where hiredate in (select min(hiredate) from emp);
6. Escribir la instrucció n SQL que presente en pantalla todos los datos de los
empleados que ganan un salario superior al salario promedio de la
empresa.
17
7. Escribir la instrucció n SQL que presente en pantalla todos los datos de los
empleados que ganan má s que todos los empleados del departamento 20
individualmente.
8. Escribir la instrucció n SQL que presente en pantalla todos los datos de los
empleados que ganan un salario mayor a cualquiera de los salarios ganan
los empleados del departamento 10.
18
Nota:
El select interno:
SAL
----------------------
800
2975
3000
1100
3000
Y se presentan los datos de los empleados que tienen un salario mayor a todos los
salarios que devuelve el select interno en este caso los salario del deptno=20.
10. Escribir la instrucció n SQL que presente en pantalla todos los datos del
empleado que es el má s nuevo de la empresa.
19
11. Escribir la instrucció n SQL que presente en pantalla todos los datos del
empleado que es el má s antiguo de la empresa.
12. Escribir la instrucció n SQL que presente en pantalla todos los datos de los
empleados que ganan un salario superior al salario promedio de la
empresa.
13. Escribir la instrucció n SQL que presente en pantalla todos los datos de los
empleados que ganan má s que todos los empleados del departamento 20
individualmente.
Otra forma:
14. Escribir la instrucció n SQL que presente en pantalla todos los datos de los
empleados que ganan un salario mayor a cualquiera de los salarios que
ganan los empleados del departamento 10.
Otra forma:
15. Escribir la instrucció n SQL que presente en pantalla todos los datos de los
empleados que ganan el má ximo salario en cada uno de sus departamentos.
20
NOTA:
La consulta anterior es vá lida ú nicamente en Oracle, pero existe una forma general
para obtener el mismo resultado que es vá lida en cualquier base de datos, a esto se
le conoce con el nombre de SELECT SINCRONIZADO, a continuació n se da el
formato de esta consulta haciendo uso de este tipo select, ú nicamente como una
introducció n, pues má s adelante se estudiara en detalle este tipo de consultas
sincronizadas.
JOINS
JOIN EQUIJOINS
Este tipo de join el má s usado, se usa para unir dos o má s tablas y presentar los
registros relacionados entre sí.Para este tipo de join es necesario colocar en la
clá usula where de la consulta al menos n-1 condiciones,donde n es el nú mero de
tablas que se relacionan.
Ejercicios.
1. Escribir la instrucció n SQL que presente en pantalla todos los datos de los
empleados y de sus departamentos.
select * from emp e, dept d
where e.deptno=d.deptno;
NOTA:
Se puede hacer uso de alias para las tablas, como en el ejemplo anterior, esto
facilita la escritura y simplicidad de la consulta. Una vez que se hace uso de un alias
ya no se puede hacer uso del nombre de la tabla, en adelante se usa solamente el
alias, en caso contrario se producirá un error en la ejecució n.
21
3. Escribir la instrucció n SQL que presente en pantalla el nombre del
departamento y el salario total que se paga por departamento.
selectdname, sum(sal+nvl(comm,0))
fromemp e, dept
where e.deptno=d.deptno
group by dname;
4. Escribir la instrucció n SQL que presente en pantalla todos los datos de los
empleados que trabajan en la ciudad de DALLAS.
7. Escribir la instrucció n SQL que presente en pantalla todos los datos de los
empleados má s el nombre del departamento en el que trabaja, de aquellos
empleados que trabajan en el departamento de contabilidad y que son
gerentes.
22
8. Escribir la instrucció n SQL que presente en pantalla todos los datos de los
empleados má s el nombre del departamento y la localizació n del
departamento de todos aquellos empleados que trabajan en el
departamento 10 o en el departamento 30 y que tienen un ingreso total
anual superior a 30000 dó lares.
9. Escribir la instrucció n SQL que presente en pantalla todos los datos de los
empleados má s el nombre del departamento de todos aquellos empleados
que ganen un salario superior al salario promedio de la empresa.
NOTA:
SELECT SINCRONIZADOS
23
Ejercicios
1. Escribir la instrucció n SQL que presente en pantalla todos los datos de los
empleados má s el nombre del departamento de todos aquellos empleados
que ganan el salario má ximo de su departamento.
2. Escribir la instrucció n sql que presente en pantalla todos los datos de los
empleados má s el nombre del departamento de aquel departamento que
tenga el mayor nú mero de empleados.
24
4. Escribir la instrucció n sql que presente en pantalla todos los datos del
departamento má s el valor total de sueldos que se pagó por departamento
de aquel departamento en el que se pagó el mayor valor total de sueldos.
El mismo ejercicio anterior pero que la respuesta salga el total del salario.
Select e.deptno,d.dname,d.loc,sum(e.sal) from dept d,emp e
Where e.deptno=d.deptno
Group by e.deptno,d.dname
Having e.deptno in (select deptno from emp
Group by deptno
Having sum(sal)>=all(select sum(sal) from emp
group by deptno));
5. Escribir la instrucció n sql que presente en pantalla todos los datos del
empleado má s el nombre del departamento de todos aquellos empleados
que tienen un ingreso total anual superior al ingreso total anual de
cualquiera de los empleados del departamento 20.
6. Escribir la instrucció n sql que presente en pantalla todos los datos del
empleado y todos los datos del departamento de todos aquellos empleados
que trabajan en la ciudad de NEY YORK y que desepeñ an el trabajo de
obrero,
7. Escribir la instrucció n sql que presente en pantalla todos los datos del
empleado má s el nombre del departamento de todos aquellos empleados
que ganan una comisió n superior al 20% de su salario.
25
Otra forma sin el uso de select sincronizados
26