Guia lab5

6

Click here to load reader

description

Laboratorio Curso SIA

Transcript of Guia lab5

Page 1: Guia lab5

Claudio Angulo S.

Guía Laboratorio Nº 5: Consultas SQL

- Modelo de datos:

Para obtener todos los registros contenidos en la tabla “CARRERAS” debemos ejecutar la

siguiente consulta:

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:

SELECT *

FROM CARRERAS

SELECT COUNT(*)

FROM CARRERAS

SELECT COUNT(ID_CARRERA)

FROM CARRERAS

Page 2: Guia lab5

Claudio Angulo S.

Los resultados son:

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

El resultado entregado es:

También en SQL se puede obtener la fecha actual del sistema (la fecha que tiene el

computador), de la siguiente forma:

SELECT *

FROM CARRERAS

WHERE ID_CARRERA <> 3

SELECT *

FROM CARRERAS

WHERE NOMBRE = 'Informatica'

SELECT SYSDATE

FROM DUAL

Page 3: Guia lab5

Claudio Angulo S.

El resultado es:

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

SELECT TO_CHAR(SYSDATE,'DD') as DIA

FROM DUAL

SELECT TO_CHAR(SYSDATE,'MONTH') as MES

FROM DUAL

SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY') as MES

FROM DUAL

Page 4: Guia lab5

Claudio Angulo S.

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

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

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

iv. El número de carreras que se encuentran registradas en la base de datos.

select count(*) as "Numero de Carreras"

from carreras

Page 5: Guia lab5

Claudio Angulo S.

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

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

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

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

Page 6: Guia lab5

Claudio Angulo S.

viii. Obtener la lista de préstamos en que su fecha de devolución sea mayor a la fecha actual: 25/04/2011.

select *

from prestamo p

where p.fecha_e > to_char(sysdate, 'dd/mm/yyyy')