14
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

Primer Informe sistemas

Embed Size (px)

Citation preview

UNIVERSIDAD AUSTRAL DE CHILEFACULTAD DE CIENCIAS ECONÓMICAS Y ADMINISTRATIVAS

INSTITUTO DE ADMINISTRACIÓNADMI 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

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

columna (también se puede usar como argumento el *). Los siguientes ejemplos entregan el mismo resultado:

SELECT COUNT (*)FROM carreras;

SELECT COUNT (id_carrera)FROM carreras;

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 carrerasWHERE 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 carrerasWHERE nombre <> ‘civil’;

El resultado es el siguiente:

cantidad de carreras

Expr1000

5

cantidad de carreras 2

Expr1000

5

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 eORDER BY e.edad DESC;

El resultado es el siguiente:

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 cWHERE c.id_carrera = e.id_carreraORDER BY e.edad DESC;

El resultado es el siguiente:

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 csWHERE c.id_carrera = e.id_carreraAND cs.id_campus = c.id_campusORDER 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,

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 ciWHERE c.id_carrera = e.id_carreraAND cs.id_campus = c.id_campusAND cs.id_ciudad = ci.id_ciudadORDER 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 fWHERE f.edad > 35;

El resultado es el siguiente:

Probar cambiando el operador de comparación por: <>

SELECT f.nombres,f.apellidos,f.rut_func,f.edad,f.direccion,f.salud

FROM funcionarios fWHERE f.edad <> 35;

El resultado es el siguiente:

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 eWHERE 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.saludFROM funcionarios fWHERE 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,

l.agnoFROM libros lWHERE 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 cWHERE c.id_carrera = e.id_carreraORDER BY e.edad ASC;

El resultado es el siguiente:

• 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 librosORDER BY agno DESC;

El resultado es el siguiente:

• 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 autoresORDER 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_autorFROM librosGROUP 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

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 eGROUP 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 eGROUP BY id_carrera

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 eGROUP BY e.edadHAVING 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_tipoFROM libros GROUP BY id_tipoHAVING id_tipo <> ‘4000’AND id_tipo <> ‘3000’;

El resultado es el siguiente: