1. Universidad Austral de Chile
Facultad de Ciencias Económicas y Administrativas
Ingeniería Comercial
Trabajo de sistema de información empresarial
Guía de Acces, vista SQL
Asignatura:
Sistema de información empresarial
Profesor:
Cristian Salazar
Integrantes:
Mónica Navarrete
Mauricio Rojas
María Zambrano
Abril 2012 - VALDIVIA
2. Introducción:
En el siguiente trabajo, se realizo con una base de datos de Acces y Visio. En la cual se realizaron
las siguientes vistas SQL.
Vista diagrama base de datos en Visio
3. Desarrollo de laboratorio:
Para obtener todos los registros contenidos en la tabla “CARRERAS” debemos ejecutar la siguiente
consulta:
SELECT *
FROM CARRERAS
En donde el ‘*’ significa que queremos obtener todas las columnas, en este caso ID_CARRERA,
NOMBRE, ID_CAMPUS. El resultado muestra lo siguiente:
Ahora si queremos saber cuántas carreras (registros) se encuentran en la tabla CARRERAS,
debemos usar la función COUNT de SQL, la cual se aplica sobre una sola columna (también se
puede usar como argumento el *). Los siguientes ejemplos entregan el mismo resultado: Claudio
Angulo S.
Los resultados son:
SELECT COUNT(*)
FROM CARRERAS
SELECT COUNT(ID_CARRERA)
FROM CARRERAS
4. Ahora si deseamos obtener registros que cumplan cierta condición, usamos la cláusula
WHERE. Esta cláusula nos permite definir una o más de una condición, como se muestra a
continuación, en donde se desean obtener las carreras que tienen como código de carrera
(ID_CARRERA) distinto a 3:
SELECT *
FROM CARRERAS
WHERE ID_CARRERA <> 3
El resultado mostrado es:
Donde vemos que la carrera con código 3 no se muestra (Informática).
Como podemos ver, comparar números en SQL es muy fácil y directo, pero para comparar textos
la sintaxis cambia un poco. En el siguiente ejemplo se muestran todas las carreras, menos
informática, solo que esta vez se usa el NOMBRE de la tabla CARRERAS para comparar en vez del
ID_CARRERA como en el ejemplo anterior, para ello se deben usar comillas simples como se
muestra a continuación:
SELECT *
FROM CARRERAS
WHERE NOMBRE = 'Informatica'
El resultado entregado es:
5. También en SQL se puede obtener la fecha actual del sistema (la fecha que tiene el
computador), de la siguiente forma: Claudio Angulo S.
SELECT SYSDATE
FROM DUAL
El resultado es:
“No se nos genero la tabla”
Se puede obtener además la fecha del sistema con distintos formatos, como en los siguientes
ejemplos:
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL
“No se nos genero la tabla”
SELECT TO_CHAR(SYSDATE,'DD') as DIA FROM DUAL
“No se nos genero la tabla”
SELECT TO_CHAR(SYSDATE,'MONTH') as MES FROM DUAL
“No se nos genero la tabla”
SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY') as MES FROM DUAL
“No se nos genero la tabla”
6. Revisaremos distintas tipos de consultas sobre éste modelo de datos.
i. Lista de Estudiantes (Nombre-Apellido-Edad-Fono-Dirección)
select e.nombres,
e.apellidos,
e.edad,
e.fono,
e.direccion
from ESTUDIANTES e
El resultado es:
ii. La misma lista de estudiantes, pero ordenada de mayor a menor por la edad.
Select e.nombres,
e.apellidos,
e.edad,
e.fono,
e.direccion
from ESTUDIANTES e
order by e.edad DESC
7. El resultado es:
iii. A la lista de estudiantes agregamos la información del nombre de la carrera a la cual pertenece
cada estudiante.
select e.nombres,
e.apellidos,
e.edad,
e.fono,
e.direccion,
c.nombre
from ESTUDIANTES e, CARRERAS c
where c.id_carrera = e.id_carrera
order by e.edad DESC
El resultado es:
8. iv. El número de carreras que se encuentran registradas en la base de datos.
select count(*) as "Numero de Carreras"
from carreras
El resultado es:
v. A la lista de estudiantes, agregamos la información del campus asociado a la carrera a la cual
pertenece cada estudiante.
select e.nombres,
e.apellidos,
e.edad,
e.fono,
e.direccion,
c.nombre AS "Nombre Carrera",
cs.nombre AS CAMPUS
from ESTUDIANTES e, CARRERAS c, campus cs
where c.id_carrera = e.id_carrera
AND cs.id_campus = c.id_campus
order by e.edad DESC
El resultado es:
9. vi. A nuestra lista de estudiantes, agregaremos el nombre de la ciudad asociada al campus.
select e.nombres,
e.apellidos,
e.edad,
e.fono,
e.direccion,
c.nombre AS "Nombre Carrera",
cs.nombre AS CAMPUS,
ci.nombre as "Nombre Ciudad"
from ESTUDIANTES e, CARRERAS c, campus cs, ciudad ci
where c.id_carrera = e.id_carrera
AND cs.id_campus = c.id_campus
AND cs.id_ciudad = ci.id_ciudad
order by e.edad DESC
El resultado es:
vii. Obtenemos la lista de funcionarios (nombre-apellido-rut-edad-dirección-salud) que tengan una
edad superior a los 35 años.
select f.nombres,
f.apellidos,
f.rut_func,
f.edad,
10. f.direccion,
f.salud
from funcionarios f
where f.edad > 35
El resultado es:
(Probar cambiando el operador de comparación por: <> )
El resultado es:
viii. Obtener la lista de préstamos en que su fecha de devolución sea mayor a la fecha actual:
select *
from prestamo p
where p.fecha_e > to_char(sysdate, 'dd/mm/yyyy
“No se generó resultado”
11. Consultas creadas por el grupo:
A.- group by
A.1) SELECT e.id_carrera, count(e.rut_est) as "Numero de estudiantes"
FROM estudiante AS e
GROUP BY e.id_carrera;
El resultado es:
A.2) SELECT f.salud, count(f.rut_fun) AS ["numero de funcionarios"]
FROM funcionarios AS f
GROUP BY f.salud;
El resultado es:
A.3) SELECT c.id_campus, count(c.id_carrera) AS ["numero de carreras"]
FROM carreras AS c
GROUP BY c.id_campus;
El resultado es:
12. B.- order by
B.1) SELECT cod_libro, titulo, agno as año
FROM libros
ORDER BY agno DESC;
El resultado es:
B.2) SELECT e.rut_est, e.nombres, e.apellidos, e.edad, c.nombre as "Nombre Carrera", cs.nombre
as Campus, l.titulo as "nombre libro",l.agno as Año
FROM estudiante AS e, carreras AS c, campus AS cs, libros AS l, prestamo AS p
WHERE p.cod_libro = l.cod_libro
and e.rut_est = p.rut_est
and c.id_carrera = e.id_carrera
and cs.id_campus = c.id_campus
order by AGNO DESC
El resultado es:
B.3) SELECT F.NOMBRES, F.APELLIDOS, F.RUT_FUN, F.EDAD, F.DIRECCION, F.SALUD
FROM FUNCIONARIOS AS F
WHERE (((F.EDAD)<>35))
order by f.edad desc;
13. El resultado es:
C.- having
C.1) SELECT l.id_biblio, count(l.cod_libro) as "numero de libros"
FROM libros AS l
GROUP BY l.id_biblio
HAVING count(l.cod_libro) <> 3;
El resultado es:
C.2) SELECT l.id_biblio, count(l.cod_libro) as "numero de libros"
FROM libros AS l
GROUP BY l.id_biblio
HAVING count(l.cod_libro) >=2;
El resultado es:
14. C.3) SELECT c.id_campus, count(c.id_carrera) AS ["numero de carreras"]
FROM carreras AS c
GROUP BY c.id_campus
having count(c.id_carrera) =1;
El resultado es:
D. ordenando varias tablas
D.1) SELECT e.rut_est, e.nombres, e.apellidos, c.nombre, cs.nombre, l.titulo
FROM estudiante AS e, carreras AS c, campus AS cs, libros AS l, prestamo AS p
WHERE l.cod_libro = p.cod_libro
and e.rut_est = p.rut_est
and c.id_carrera = e.id_carrera
and cs.id_campus =c.id_campus;
El resultado es:
D.2) SELECT e.rut_est, e.nombres, e.apellidos, f.nombres, f.apellidos, c.nombre, cs.nombre, l.titulo
FROM estudiante AS e, carreras AS c, campus AS cs, libros AS l, prestamo AS p, funcionarios as f
WHERE l.cod_libro = p.cod_libro
and e.rut_est = p.rut_est
and c.id_carrera = e.id_carrera
and cs.id_campus =c.id_campus
and f.rut_fun = p.rut_fun;
15. El resultado es:
D.3) SELECT a.nombres, a.apellidos, ed.nombre, b.biblioteca, l.titulo, t.tipo_p
FROM autores as a, editoriales as ed, biblioteca as b, libros as l, tipo as t
WHERE a.rut_autor = l.rut_autor
and ed.id_edit = l.id_edit
and b.id_biblio = l.id_biblio
and t.id_tipo = l.id_tipo;
El resultado es: