Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lenguaje de Consulta
Estructurado
SQL
Structured Query Language
Parte 2 .- SELECT
Prof. Edwuard Castaeda
Actualizado a 13/05/2014
BASE DE DATOS
AGENDA
Consultas:
Sintaxis.
Una Tabla
Al menos 2 tablas
INNER JOIN.
LEFT JOIN.
RIGHT JOIN.
Funciones de Agregacin
COUNT.
MAX.
MIN.
AVG.
SUM.
BASE DE DATOS
SQL Sintaxis - SELECT
SELECT
distintc, campos, funciones, (select's),
FROM
Tablas, join's, alias
WHERE
Condiciones por campo(s), Select, IN, BETWEEN,
LIKE, NOT, =, >, <, >=, <=,<>
GROUP BY
Campos
HAVING
Resultado
ORDER BY
campos
BASE DE DATOS
SQL DER Gestin de
Proyectos
proyecto
codigo
descripcion
trayecto
cod_tutor
cod_comunidad
comunidad
codigo
descripcion
cod_parroquia
representante
alumno
participa
codigo
cod_alumno
cod_proyecto
fecha_presenta
ptos_obtenido
tutor
codigo
nombre
apellido
sexo
codigo
cedula
nombre
apellido
sexo
fch_nacimiento
BASE DE DATOS
SQL Sintaxis SELECT
(Una Tabla)
Obtener un listado donde se muestren todos los campos de los alumnos
Solucin en lenguaje natural
SELECT todos los campos
FROM La tabla alumno
Solucin en lenguaje SQL
BASE DE DATOS
SQL Sintaxis SELECT
(Una Tabla)
Obtener un listado de alumnos donde se muestren la cedula, apellido y nombre
ordenado por apellido
Solucin en lenguaje natural
SELECT los campos cedula, apellido y nombre
FROM la tabla alumno
ORDER BY ordenado por el apellido
Solucin en lenguaje SQL
SELECT cedula, apellido, nombre
FROM alumno
ORDER BY apellido asc (Por defecto es ascendente, si se
requiere de forma descendente se especifica 'desc')
BASE DE DATOS
SQL Sintaxis SELECT
(Una Tabla)
Obtener un listado de alumnos que hayan nacido en el ao 2013, donde se
muestre la cedula, apellido y nombre, fch_nacimiento ordenado por apellido de
forma descendente
BASE DE DATOS
SQL Sintaxis SELECT
(Una Tabla)
Obtener un listado de proyectos que sean del trayecto 1 y 3, donde se muestre la
descripcion, y el trayecto
BASE DE DATOS
SQL Sintaxis SELECT
(Una Tabla)
Obtener un listado de proyectos donde su descripcin est relacionada con
inscripcin y que ademas sean del trayecto 2, donde se muestre la descripcion.
Solucin en lenguaje SQL
SELECT descripcion
FROM proyecto
WHERE trayecto=2 AND descripcion like '%inscripcin%'
Obtener un listado de tutores que su apellido empiece con 'C' donde se muestre
nombre, apellido.
Solucin en lenguaje SQL
SELECT nombre, apellido
FROM tutor
WHERE apellido like 'C%'
BASE DE DATOS
SQL Sintaxis SELECT
(Dos Tablas)
Sintaxis SQL para select's que involucran ms de una tabla
SELECT campos
FROM tabla1, tabla2,...,tablaN
WHERE (tabla1.campoprimario = tabla2.campoforaneo) and ... and
(tablaN-1.campoprimario = tablaN.campoforaneo)
SELECT campos
FROM tabla1 INNER JOIN tabla2 ON
(tabla1.campoprimario = tabla2.campoforaneo)
INNER JOIN tablaN ON
(tablaN-1.campoprimario = tablaN.campoforaneo)
BASE DE DATOS
SQL Sintaxis SELECT
(Dos Tablas)
Obtener un listado de proyectos con su tutor, donde se muestre la apellido y
nombre del tutor, la descripcion y trayecto del proyecto, ordenarlos por apellido del
tutor.
Solucin en Lenguaje Natural
SELECT campos de las tablas
FROM tablas involucradas
WHERE se igualan los campos claves relacionados.
SELECT apellido, nombre, descripcion, trayecto
FROM tutor, proyecto
WHERE tutor.codigo = proyecto.cod_tutor
ORDER BY apellido asc
BASE DE DATOS
SQL Sintaxis SELECT
(Dos Tablas)
Obtener un listado de proyectos con su tutor, donde se muestre la apellido y
nombre del tutor, la descripcion y trayecto del proyecto, ordenarlos por apellido del
tutor.
Solucin en Lenguaje Natural
SELECT campos de las tablas cuidando la ambiguedad
FROM tablas involucradas
WHERE se igualan los campos claves relacionados.
SELECT apellido, nombre, descripcion, trayecto
FROM tutor, proyecto
WHERE tutor.codigo = proyecto.cod_tutor
ORDER BY apellido asc
BASE DE DATOS
SQL Sintaxis SELECT
(Tres Tablas)
Obtener un listado de alumnos que participan en los proyectos (15,19,21), donde
se muestre del alumno, codigo, nombre, apellido, de los proyectos codigo y
descripcion, ademas de indicar fecha de presentacin del mismo y puntaje
obtenido por alumno
Existir ambieguedad, si se
Solucin en SQL
hace referencia a un campo que
SELECT campos de las tablas cuidando la ambiguedad
FROM tablas involucradas
WHERE se igualan los campos claves relacionados.
Solucin en SQL
BASE DE DATOS
SQL Sintaxis SELECT
(Tres Tablas)
Obtener un listado de alumnos que participan en los proyectos (15,19,21), donde
se muestre del alumno, codigo, nombre, apellido, de los proyectos codigo y
descripcion, ademas de indicar fecha de presentacin del mismo y puntaje
obtenido por alumno
Existir ambieguedad, si se
hace referencia a un campo que
est tambin definido en otra
tabla. Para resolver la
ambiguedad se definen alias en
el From... Tabla t1, y se
antepone el nombre del alias al
campo que se quiere indicar y a
continuacin el smbolo punto
(.)
BASE DE DATOS
SQL Sintaxis SELECT
(Cuatro Tablas)
Obtener un listado de alumnos que participan en los proyectos (15,19,21), donde
se muestre del alumno, codigo, nombre, apellido, de los proyectos codigo y
descripcion, ademas de indicar fecha de presentacin del mismo y puntaje
obtenido por alumno, Debe indicar tambin el nombre y apellido de su tutor
BASE DE DATOS
SQL Sintaxis SELECT
(Cinco Tablas)
Obtener un listado de alumnos que participan en los proyectos (15,19,21), donde
se muestre del alumno, codigo, nombre, apellido, de los proyectos codigo y
descripcion, ademas de indicar fecha de presentacin del mismo y puntaje
obtenido por alumno, Debe indicar tambin el nombre y apellido de su tutor y la
descripcion de la comunidad
BASE DE DATOS
SQL Sintaxis SELECT
(LEFT JOIN)
Obtener un listado de todas las registradas comunidades. Si alguna dispone de
proyecto indicar cual mediante la descripcin del mismo.
Solucin en SQL mediante el uso de alias
SELECT c.codigo, c.descripcion, p.descripcion
FROM comunidades c LEFT JOIN proyecto p ON
(p.cod_comunidad = c.codigo)
BASE DE DATOS
SQL Sintaxis SELECT
(Funciones de Agregacin )
Funciones (dependiendo del campo especificado)
COUNT: Cuenta la cantidad de registros no nulos.(se puede especificar '*')
SUM: Suma los valores.
MAX: Obtiene el valor mximo.
MIN: Obtiene el valor mnimo.
AVG: Obtiene el promedio
Regla de Oro
Al utilizar una funcin de agregacin
en una consulta, se se colocan campos
adicionales, se debe
colocar la clausula
GROUP BY
con todos los campos que se indiquen
BASE DE DATOS
SQL Sintaxis SELECT
(COUNT)
Obtener la cantidad de alumnos registrados.
Solucin en SQL
SELECT count(*)
FROM alumno
Obtener la cantidad de alumnos registrados del sexo masculino.
Solucin en SQL
SELECT count(*)
FROM alumno
WHERE sexo = 'M'
Obtener la cantidad de alumnos registrados del sexo masculino y que el
apellido contenga 'ez'.
Solucin en SQL
SELECT count(*)
FROM alumno
WHERE sexo = 'M' AND apellido LIKE '%ez%'
BASE DE DATOS
SQL Sintaxis SELECT
(COUNT)
Obtener la cantidad de alumnos registrados por sexo.
Solucin en SQL
SELECT count(*), sexo
FROM alumno
GROUP BY sexo
Obtener la cantidad de proyectos registrados por trayecto y que ademas la
descripcin del proyecto contenga la palabra 'hospital'
Solucin en SQL
SELECT count(*), trayecto
FROM proyecto
WHERE descripcion LIKE '%hospital%'
GROUP BY trayecto
BASE DE DATOS
SQL Sintaxis SELECT
(MAX)
Obtener el mximo puntaje obtenido para un proyecto
Solucin en SQL
SELECT MAX(ptos_obtenido)
FROM participa
Obtener los alumnos que han obtenido el mayor puntaje en los proyectos
presentados
Solucin en SQL
SELECT nombre, apellido, p.descripcion, p.trayecto
FROM alumno a INNER JOIN participa pa ON
(a.codigo=pa.cod_alumno)
INNER JOIN proyecto p ON
(pa.cod_proyecto=p.codigo)
WHERE ptos_obtenidos = (
SELECT MAX(ptos_obtenido)
FROM participa
)
BASE DE DATOS
SQL Sintaxis SELECT
(MIN)
Obtener el mnimo puntaje obtenido para un proyecto
Solucin en SQL
SELECT MIN(ptos_obtenido)
FROM participa
Obtener los alumnos que han obtenido el mnimo puntaje en los proyectos
presentados
Solucin en SQL
SELECT nombre, apellido, p.descripcion, p.trayecto
FROM alumno a INNER JOIN participa pa ON
(a.codigo=pa.cod_alumno)
INNER JOIN proyecto p ON
(pa.cod_proyecto=p.codigo)
WHERE ptos_obtenidos = (
SELECT MIN(ptos_obtenido)
FROM participa
)
BASE DE DATOS
SQL Sintaxis SELECT
(AVG)
Obtener el promedio sobre el puntaje obtenido para los proyectos presentados
Solucin en SQL
SELECT AVG(ptos_obtenido)
FROM participa
WHERE fecha_presenta is not null
Obtener los alumnos que han obtenido el puntaje igual al promedio en los
proyectos presentados
Solucin en SQL
SELECT nombre, apellido, p.descripcion, p.trayecto
FROM alumno a INNER JOIN participa pa ON
(a.codigo=pa.cod_alumno)
INNER JOIN proyecto p ON
(pa.cod_proyecto=p.codigo)
WHERE ptos_obtenidos = (
SELECT AVG(ptos_obtenido)
FROM participa
WHERE fecha_presenta is not null )
BASE DE DATOS
SQL Sintaxis SELECT
(SUM)
Obtener la sumatoria de puntaje obtenidos para los proyectos presentados
Solucin en SQL
SELECT SUM(ptos_obtenido)
FROM participa