1. UNIVERSIDAD AUSTRAL DE CHILE
FACULTAD DE CIENCIAS ECONÓMICAS Y ADMINISTRATIVAS
INSTITUTO DE ADMINISTRACIÓN
ADMI 273
Guía de consultas
SQL
Integrantes:
Valeria Muñoz O.
Makarena Ruiz H.
Nadia Muñoz B.
Profesor:
Cristian Salazar C.
Asignatura:
Sistemas de Información Empresarial
Valdivia, 16/04/2012
2. Desarrollo Guía
Modelo de datos:
Fuente: Microsoft Visio 2010. Elaboración propia.
Consultas:
1) Para obtener todos los registros contenidos en la tabla “CARRERAS” debemos ejecutar
la siguiente consulta:
SELECT *
FROM carreras;
El resultado es el siguiente:
2) 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
3. columna (también se puede usar como argumento el *). Los siguientes ejemplos entregan el
mismo resultado:
SELECT COUNT (*)
FROM carreras;
cantidad de carreras
Expr1000
5
SELECT COUNT (id_carrera)
FROM carreras;
cantidad de carreras 2
Expr1000
5
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 1708:
SELECT *
FROM carreras
WHERE id_carrera <> ‘1708’;
En el siguiente ejemplo se muestran todas las carreras, menos civil, 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 <> ‘civil’;
El resultado es el siguiente:
4. Revisaremos distintas tipos de consultas sobre este 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 el siguiente:
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;
El resultado es el siguiente:
5. 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 c, carreras c
WHERE c.id_carrera = e.id_carrera
ORDER BY e.edad DESC;
El resultado es el siguiente:
6. 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 el siguiente:
Consulta1
"Numero de carreras"
5
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 el siguiente:
vi. A nuestra lista de estudiantes, agregaremos el nombre de la ciudad
asociada al campus.
SELECT e.nombres,
7. 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 el siguiente:
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,
f.direccion,
f.salud
FROM funcionarios f
WHERE f.edad > 35;
El resultado es el siguiente:
8. Probar cambiando el operador de comparación por: <>
SELECT f.nombres,
f.apellidos,
f.rut_func,
f.edad,
f.direccion,
f.salud
FROM funcionarios f
WHERE f.edad <> 35;
El resultado es el siguiente:
9. Crear consultas adicionales:
Con SELECT, FROM y WHERE
• Obtener una nómina de estudiantes con rut, nombre, apellido, dirección y el código
de la carrera a la cual pertenece, considerando solamente aquellos que no estudian
comercial (código 1706) ni auditoría (código 1709). La consulta es la siguiente:
SELECT e.nombres,
e.apellidos,
e.direccion,
e.rut_est,
e.id_carrera
FROM estudiantes e
WHERE e.id_carrera <>'1706'
AND e.id_carrera <> '1709';
El resultado es el siguiente:
• Obtener una nómina de funcionarios, con nombre y apellido y salud, que
pertenezcan a Fonasa solamente. La consulta es la siguiente:
SELECT f.nombres,
f.apellidos,
f.salud
FROM funcionarios f
WHERE f.salud = 'fonasa';
El resultado es el siguiente:
• Obtener un listado de libros con código y título, cuyo año sea superior a 1900. La
consulta es la siguiente:
SELECT l.cod_libro,
l.titulo,
10. l.agno
FROM libros l
WHERE l.agno > 1900;
El resultado es el siguiente:
Con ORDER BY
• Obtener el listado de estudiantes con sus nombres, apellidos, direcciones, fonos y
edades, pero estas últimas en orden ascendente. Para ello generamos la consulta:
SELECT e.nombres,
e.apellidos,
e.edad,
e.fono,
e.direccion,
c.nombre
FROM estudiantes c, carreras c
WHERE c.id_carrera = e.id_carrera
ORDER BY e.edad ASC;
El resultado es el siguiente:
11. • Obtener el listado de libros pertenecientes a todas las bibliotecas, indicando el
código del libro, su título, y el año ordenado de forma descendente. La consulta es
la siguiente:
SELECT cod_libro,
titulo,
agno
FROM libros
ORDER BY agno DESC;
El resultado es el siguiente:
12. • Obtener el listado de autores indicando su rut, nombre y apellido, ordenados según
su rut. La consulta es la siguiente:
SELECT rut_autor,
nombres,
apellidos
FROM autores
ORDER BY rut_autor;
El resultado es el siguiente:
Con GROUP BY
• Obtener el listado de cantidad de títulos por rut de cada autor. La consulta es la
siguiente:
SELECT count(titulo), rut_autor
FROM libros
GROUP BY rut_autor;
El resultado es el siguiente:
• Obtener el listado de cantidad de títulos por tipo de libro. La consulta es la
siguiente:
SELECT count(titulo), id_tipo
13. FROM libros
GROUP BY id_tipo
El resultado es el siguiente:
• Obtener un listado de la cantidad de estudiantes que tienen la misma edad. La
consulta es la siguiente:
SELECT e.edad, count (*)
FROM estudiantes e
GROUP BY e.edad;
El resultado es el siguiente:
Con HAVING
• Obtener la cantidad de estudiantes por carrera, agrupados según el código de
carrera, considerando sólo a aquellos que pertenecen a la carrera de auditoría
(código 1709). La consulta es la siguiente:
SELECT e.id_carrera, count (*)
FROM estudiantes e
GROUP BY id_carrera
14. HAVING id_carrera ='1709';
El resultado es el siguiente:
• Obtener el mismo listado de la cantidad de estudiantes que tienen la misma edad,
pero ahora considerando sólo a aquellos que son mayores a 21 años. La consulta es
la siguiente:
SELECT e.edad, count (*)
FROM estudiantes e
GROUP BY e.edad
HAVING e.edad > 21;
El resultado es el siguiente:
• Obtener el mismo listado de cantidad de títulos por tipo de libro, pero ahora
considerando sólo aquellos que no son científicos (id 4000) ni recreativos (id 3000).
La consulta es la siguiente:
SELECT count(titulo), id_tipo
FROM libros
GROUP BY id_tipo
HAVING id_tipo <> ‘4000’
AND id_tipo <> ‘3000’;
El resultado es el siguiente: