SlideShare una empresa de Scribd logo
1 de 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
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;

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:
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:
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:
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,
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:
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:
 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,
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:
•   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:
•   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
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
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:

Más contenido relacionado

Similar a Primer Informe sistemas (20)

Guia lab5
Guia lab5Guia lab5
Guia lab5
 
Trabajo sistemas
Trabajo sistemasTrabajo sistemas
Trabajo sistemas
 
Tarea 1
Tarea 1Tarea 1
Tarea 1
 
Tarea nº 1 sistemas (1)
Tarea nº 1 sistemas (1)Tarea nº 1 sistemas (1)
Tarea nº 1 sistemas (1)
 
Lab 2
Lab 2Lab 2
Lab 2
 
Lab 2
Lab 2Lab 2
Lab 2
 
Laboratorio n° 1
Laboratorio n° 1Laboratorio n° 1
Laboratorio n° 1
 
Trabajo ayudantía
Trabajo ayudantíaTrabajo ayudantía
Trabajo ayudantía
 
Tarea nº 1 sistemas (1)
Tarea nº 1 sistemas (1)Tarea nº 1 sistemas (1)
Tarea nº 1 sistemas (1)
 
PLSQL
PLSQLPLSQL
PLSQL
 
Laboratorio SIA - 2
Laboratorio SIA - 2Laboratorio SIA - 2
Laboratorio SIA - 2
 
Laboratorio sia 2 (1)
Laboratorio sia 2 (1)Laboratorio sia 2 (1)
Laboratorio sia 2 (1)
 
Tarea nº 1 sistemas
Tarea nº 1 sistemasTarea nº 1 sistemas
Tarea nº 1 sistemas
 
Plsql
PlsqlPlsql
Plsql
 
Plsql
PlsqlPlsql
Plsql
 
Actividad 1 Ayudantia. Consultas y Vistas
Actividad 1 Ayudantia. Consultas y VistasActividad 1 Ayudantia. Consultas y Vistas
Actividad 1 Ayudantia. Consultas y Vistas
 
Primer Informe Ayudantía
Primer Informe AyudantíaPrimer Informe Ayudantía
Primer Informe Ayudantía
 
Laboratorio 2
Laboratorio 2Laboratorio 2
Laboratorio 2
 
Laboratorio 2 - ayudantia
Laboratorio 2 - ayudantiaLaboratorio 2 - ayudantia
Laboratorio 2 - ayudantia
 
Tarea ahora
Tarea ahoraTarea ahora
Tarea ahora
 

Primer Informe sistemas

  • 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: