SELECT
La sentencia SELECT permite consultar los datos almacenados en la tabla deseada de la base de datos con la que se trabaja.
La sintaxis es simple:
SELECT
<nombre_campos> FROM <nombre_tabla> WHERE <condicion>
Sin embargo para aquellos que ya conozcan un poco de sintaxis SQL pueden tomar como base esta sentencia mas completa:
SELECT [ALL | DISTINCT ][ TOP expression [ PERCENT ] [ WITH TIES ] ]
<nombre_campos>
FROM <nombre_tabla>
[ INNER | LEFT [OUTER]| RIGHT [OUTER] | CROSS][JOIN ] <nombre_tabla> ON <condicion_join>[ AND|OR <condicion>][WHERE <condicion> [ AND|OR <condicion>]][GROUP BY <nombre_campos>][HAVING <condicion>[ AND|OR <condicion>]][ORDER BY <nombre_campo> [ASC | DESC]La cláusula WHERE
FROM <nombre_tabla>
[ INNER | LEFT [OUTER]| RIGHT [OUTER] | CROSS][JOIN ] <nombre_tabla> ON <condicion_join>[ AND|OR <condicion>][WHERE <condicion> [ AND|OR <condicion>]][GROUP BY <nombre_campos>][HAVING <condicion>[ AND|OR <condicion>]][ORDER BY <nombre_campo> [ASC | DESC]La cláusula WHERE
Poco a poco iremos viendo cada una de estas sentencias, mientras solo veremos la primera forma.
El ejemplo a continuación muestra una consulta sencilla y simple de selección de datos (todas las filas existentes) de una tabla llamada CURSOS, obtendremos el código y el nombre del curso.
SELECT COD_CURSO, NOM_CURSO FROM CURSO
Podemos también modificar los nombres de los campos por el uso de un asterisco, el uso del asterisco indica que queremos que la consulta devuelva todos los campos que existen en la tabla (ojo todas las columnas no todas las filas).
SELECT COD_CURSO, NOM_CURSO FROM CURSO
Podemos también modificar los nombres de los campos por el uso de un asterisco, el uso del asterisco indica que queremos que la consulta devuelva todos los campos que existen en la tabla (ojo todas las columnas no todas las filas).
SELECT * FROM CURSO
INNER JOIN
Ahora seleccionaremos no solo el curso sino también el profesor y la sedeSELECT *
FROM CURSO
INNER JOIN PROFESOR
ON PROFESOR .COD_PROFESOR = CURSO.COD_PROFESOR
INNER JOIN SEDES
ON SEDES .COD_SEDE= CURSO .COD_SEDE
La combinación se realiza a través de la clausula INNER JOIN, que es una clasula exclusiva, es decir los cursos que no tengan profesores y sedes asociadas no se devolverán.
LEFT JOIN
Si queremos realizar la consulta para que no sea exclusiva, tenemos que utilizar LEFT JOIN. El uso de la palabra reservada OUTER es opcional.SELECT *
FROM CURSO
LEFT OUTER JOIN PROFESOR
ON PROFESOR .COD_PROFESOR = CURSO.COD_PROFESOR
LEFT JOIN SEDES
ON SEDES .COD_SEDE= CURSO .COD_SEDE
Los registros que no tengan datos relacionados en una consulta LEFT JOIN devolveran en valor null en los campos que correspondan a las tablas en las que no tienen dato.
CROSS JOIN
También podemos forzar un producto cartesiano (todos con todos) a través de CROSS JOIN.
SELECT * FROM CURSO
CROSS JOIN PROFESOR
WHERE
Gracias a la clausula WHERE podemos filtrar los resultados de nuestro query, veamos su uso.SELECT COD_CURSO, NOM_CURSO FROM CURSO WHERE COD_CURSO = 1
Podemos especificar varias condiciones para el WHERE:
SELECT COD_CURSO, NOM_CURSO
FROM CURSO
WHERE COD_CURSO = 1 OR COD_CURSO = 2
La clausula WHERE se puede utilizar conjuntamente con INNER JOIN, LEFT JOIN ...
SELECT *
FROM CURSO
INNER JOIN PROFESOR
ON PROFESOR .COD_PROFESOR = CURSO.COD_PROFESOR
WHERE CURSO . COD_CURSO > 1
Siempre que incluyamos un valor alfanumerico para un campo en la condición WHERE este debe ir entre comillas simples:
SELECT *
FROM CURSO
WHERE NOM_CURSO = 'CURSO 1'
IN
Gracias al IN es posible consultar varios valores en una sola condicion.SELECT * FROM CURSO WHERE COD_CURSO IN (1,2)
LIKE
Otra herramienta muy buena es la clausula LIKE que sirve para consultar campos alfanuméricos no exactos sino por aproximación.
SELECT * FROM CURSO WHERE NOM_CURSO LIKE 'CURSO %'
Los comodines que podemos utilizar en son los siguientes:
% , representa cualquier cadena de texto de cero o más caracteres de cualquier longitud.
_ , representa un caracter.
[a-d], representa cualquier caracter del intervalo a-d.
[abcd], representa cualquier caracter del grupo abcd.
[^a-d], representa cualquier caracter diferente del intervalo a-d.
[^abcd], representa cualquier caracter distinto del grupo abcd.
DISTINCT
También podemos obtener los valores distintos utilizando DISTINCT.SELECT DISTINCT NOM_CURSO FROM CURSO
Devuelve los distintos nombres de Curso (no se repiten)
TOP
Podemos limitar el número de registros que devuelve la consulta a través de la clausula TOP. La clausula TOP admite como parámetros un valor numérico entero o un porcentaje (sólo a partir de la version 2005)SELECT TOP 10 * FROM CURSO
Devuelve 10 registros
SELECT TOP 50 PERCENT * FROM CURSO
Devuelve el 50% de los registros
La clausula TOP se puede combinar con WITH TIES en consultas agregadas.
ORDER BY
Podemos especificar el orden en el que serán devueltos los datos a través de la cláusula ORDER BY.SELECT COD_ CURSO, NOM_CURSO
FROM CURSO
ORDER BY NOM_CURSO DESC
También podemos indicar el índice del campo en la lista de selección en lugar de su nombre :
SELECT COD_ CURSO, NOM_CURSO FROM CURSO ORDER BY 2 DESC
Ordena por nombre de Curso, porque en la selección es la columna numero 2.
0 Response to "Consulta de Tablas I"
Publicar un comentario