SQL1
SQL1
SQL1
com
Para hacer a SQL más poderoso, le fueron agregados algunas características como:
-Mejora en las declaraciones Delete y Update.
-Variables locales.
-Soporte de varias funciones para el procesamiento de cadenas, datos, matemática, etc.
-Un lenguaje de control de flujos.
Para el lenguaje de control de flujos utiliza palabras claves como Begin y End, Break,
Continue, Goto, If y Else, Return, Waitfor y While.
Para las variables locales utiliza Declare para declararlas y Set para proveerles un valor.
En tanto las mejoras en las declaraciones Delete y Update se deben a que ambas permiten una
cláusula From.
SENTENCIAS SELECT
¿Para qué utilizamos los comandos SQL? El uso común es la selección de datos desde tablas
ubicadas en una base de datos. Inmediatamente, vemos una palabra clave: necesitamos
SELECT para acceder a la información de una tabla.
1. Sentencia FROM
A esta sentencia Select se le suma la palabra FROM. Necesitamos Select la
información FROM una tabla. (Note que la tabla es un contenedor que reside en la
base de datos donde se almacena la información).
Sintaxis:
SELECT "nombre_columna" FROM "nombre_tabla"
Tabla Empleado
Resultado:
1 13
www.zonacodigo.com
Empleado
Juan Carlos
Jorge Luis
Luis Ángel
María Angélica
Pueden seleccionarse los nombres de columnas múltiples, así como también los
nombres de tablas múltiples.
2. Sentencia DISTINCT
Como ya sabemos, la palabra clave Select nos permite tomar toda la información de una
columna o columnas de una tabla. Esto, obviamente, significa necesariamente que habrá
redundancias. ¿Qué sucedería si sólo deseamos seleccionar cada elemento? Esto es fácil
de realizar en SQL. Todo lo que necesitamos hacer es agregar DISTINCT luego de
Select. La sintaxis es la siguiente:
Tabla Empleado
Ingresamos:
Resultado:
Nombre
Juan Carlos
Jorge Luis
Luis Ángel
3. Sentencia WHERE
Luego, podríamos desear seleccionar condicionalmente los datos de una tabla. Por
ejemplo, podríamos desear sólo recuperar los Sueldos mayores a $ 1.000 Para ello,
utilizamos la palabra clave Where. La sintaxis es la siguiente:
2 13
www.zonacodigo.com
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "condición"
Por ejemplo, para seleccionar todos los Sueldos mayores a $ 1.000 en la Tabla
Empleado.
Tabla Empleado
Ingresamos:
SELECT Nombre
FROM Empleado
WHERE Sueldo > 1000
Resultado:
Nombre
Juan Carlos
4. Sentencia AND OR
En la sección anterior, hemos visto que la palabra clave Where también puede utilizarse
para seleccionar datos condicionalmente desde una tabla. Esta condición puede ser una
condición simple o puede ser una condición compuesta. Las condiciones compuestas
están formadas por múltiples condiciones simples conectadas por AND u OR. La
sintaxis de una condición compuesta es la siguiente:
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "condición simple"
{[AND|OR] "condición simple"}+
{ }+ Significa que la expresión dentro de las llaves ocurrirá una o más veces. Note que
AND u OR pueden utilizarse indistintamente. Además, podemos utilizar el símbolo
paréntesis () para indicar el orden de la condición.
Por ejemplo, podemos desear seleccionar todos los Sueldos mayores a $ 1000 o todos
los Sueldos menores a $ 500 pero mayores a $ 275 de la Tabla Empleado.
Tabla Empleado
3 13
www.zonacodigo.com
Ingresamos:
SELECT Nombre
FROM Empleado
WHERE Sueldo > 1000
OR (Sueldo < 500 AND Sueldo > 275)
Resultado:
Nombre
Juan Carlos
Luis Ángel
5. Sentencia IN:
En SQL, hay dos usos de la palabra clave IN, y esta sección introduce aquél relacionado
con la cláusula Where. Cuando se lo utiliza en este contexto, sabemos exactamente el
valor de los valores regresados que deseamos ver para al menos una de las columnas. La
sintaxis para el uso de la palabra clave IN es la siguiente:
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna" IN (''valor1', ''valor2',...)
El número de valores en los paréntesis pueden ser uno o más, con cada valor separado
por comas. Los valores pueden ser números o caracteres. Si hay sólo un valor dentro del
paréntesis, este comando es equivalente a
Por ejemplo, podríamos desear seleccionar todos los registros para los Empleados como
Juan Carlos y Jorge Luis en la Tabla Empleado.
Tabla Empleado
4 13
www.zonacodigo.com
Ingresamos:
SELECT *
FROM Empleado
WHERE Nombre IN (‘Juan Carlos’, 'Jorge Luis’)
Resultado:
6. Sentencia BETWEEN
Mientras que la palabra clave IN ayuda a las personas a limitar el criterio de selección
para uno o más valores discretos, la palabra clave BETWEEN permite la selección de
un rango. La sintaxis para la cláusula Between es la siguiente:
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna" BETWEEN 'valor1' AND 'valor2'
Esto seleccionará todas las filas cuya columna tenga un valor entre 'valor1' y 'valor2'.
Tabla Empleado
Ingresamos,
5 13
www.zonacodigo.com
SELECT *
FROM Empleado WHERE Fecha_Registro BETWEEN '06-01-2010' AND
'10-01-1999'
Tenga en cuenta que la fecha puede almacenarse en diferentes formatos según las
diferentes bases de datos. Esta guía de referencia simplemente elige uno de los
formatos.
Tabla Empleado
Resultado:
7. Sentencia LIKE
LIKE es otra palabra clave que se utiliza en la cláusula Where. Básicamente, Like le
permite hacer una búsqueda basada en un patrón en vez de especificar exactamente lo
que se desea (como en IN) o determinar un rango (como en BETWEEN). La sintaxis es
la siguiente:
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna" LIKE {patrón}
'ABC%': Todas las líneas que comienzan con 'ABC'. Por ejemplo, 'ABCD' y
'ABCABC' ambas deberían satisfacer la condición.
'%XYZ': Todas las líneas que terminan con 'XYZ'. Por ejemplo, 'WXYZ' y
'ZZXYZ' ambas deberían satisfacer la condición.
'%AN%': Todas las líneas que contienen el patrón 'AN' en cualquier lado. Por
ejemplo, ‘JUAN CARLOS', 'LUIS ANGEL' y ‘MARIA ANGELICA’ ambos
deberían satisfacer la condición.
6 13
www.zonacodigo.com
Tabla Empleado
Deseamos encontrar todos los Empleados cuyos nombres contengan ‘AN’. Para hacerlo,
ingresamos:
SELECT *
FROM Empleado
WHERE Nombre LIKE '%AN%'
Resultado:
8. Sentencia ORDER BY
Hasta ahora, hemos visto cómo obtener datos de una tabla utilizando los comandos
Select y Where. Con frecuencia, sin embargo, necesitamos enumerar el resultado en un
orden particular. Esto podría ser en orden ascendente, en orden descendente, o podría
basarse en valores numéricos o de texto. En tales casos, podemos utilizar la palabra
clave ORDER BY para alcanzar nuestra meta.
SELECT "nombre_columna"
FROM "nombre_tabla"
[WHERE "condición"]
ORDER BY "nombre_columna" [ASC, DESC]
[ ] Significa que la instrucción Where es opcional. Sin embargo, si existe una cláusula
Where, viene antes de la cláusula ORDER BY ASC significa que los resultados se
mostrarán en orden ascendente, y ORDER BY DESC significa que los resultados se
mostrarán en orden descendente. Si no se especifica ninguno, la configuración
predeterminada es ASC.
Es posible ordenar por más de una columna. En este caso, la cláusula ORDER BY
anterior se convierte en
7 13
www.zonacodigo.com
Por ejemplo, podríamos desear enumerar los contenidos de la Tabla Empleado según la
suma en dólares, en orden descendente:
Tabla Empleado
Ingresamos,
Resultado:
9. Sentencia GROUP BY
Supongamos que quisiéramos calcular el total de Sueldos para cada Empleado.
Entonces, necesitamos hacer dos cosas: Primero, necesitamos asegurarnos de que
hayamos seleccionado el nombre del Empleado así como también los sueldos Totales.
Segundo, debemos asegurarnos de que todas las sumas de las ventas estén en un
GROUP BY Sueldo. La sintaxis SQL correspondiente es,
8 13
www.zonacodigo.com
Tabla Empleado
Deseamos saber los Sueldos totales para cada Empleado. Para hacerlo, ingresaríamos:
Resultado:
Nombre SUM(Sueldo)
Juan Carlos $ 1800
Jorge Luis $ 250
María Angélica $ 700
Nota: La Función de Agregado SUM la veremos mas adelante. Por lo pronto SUM lo
que hace es Sumar una Columna con el mismo Tipo de dato: Entero, decimal o Money.
No es compatible para Textos.
9 13
www.zonacodigo.com
Ingresaríamos:
Resultado:
Nombre SUM(Sueldo)
Juan Carlos $ 1800
Resumiendo, los alias de columna existen para ayudar en la organización del resultado.
En el ejemplo anterior, cualquiera sea el momento en que vemos los Sueldos totales, se
enumeran como SUM (Sueldo). Mientras esto es comprensible, podemos ver casos
donde el título de la columna pueden complicarse (especialmente si incluye varias
operaciones aritméticas). El uso de un alias de columna haría el resultado mucho más
legible.
Antes de comenzar con las uniones, miremos la sintaxis tanto para el alias de columna
como de tabla:
10 13
www.zonacodigo.com
Brevemente, ambos tipos de alias se colocan directamente después del elemento por el
cual generan los alias, separados por un espacio en blanco. Nuevamente utilizamos
nuestra tabla, Empleado.
Tabla Empleado:
Utilizamos el mismo ejemplo que en la sección SQL GROUP BY, salvo que hemos
colocado tanto el alias de columna como el alias de tabla:
Resultado:
Note la diferencia en el resultado: los títulos de las columnas ahora son diferentes. Ese
es el resultado de utilizar el alias de columna. Note que en vez de “Sum(Sueldo)” de
algún modo enigmático, ahora tenemos “Total Sueldo”, que es más comprensible, como
título de columna. La ventaja de utilizar un alias de tablas no es fácil de ver en este
ejemplo. Sin embargo, se tornará evidente en la siguiente sección:
Tabla Empleado:
11 13
www.zonacodigo.com
Tabla Área
Nombre_Area Nombre_Empleado
Contabilidad María Angélica
Contabilidad Luis Ángel
Almacén Juan Carlos
Almacén Jorge Luis
Y queremos saber el Total de Sueldos por Área. Vemos que la tabla Área incluye
información sobre las Áreas en la que trabajan los empleados y la tabla Empleado
contiene información de cada Empleado. Para obtener la información del Sueldo Total
por Área debemos combinar la información de las dos tablas. Al examinar las dos
tablas, encontramos que están enlazadas a través del campo común
“Nombre_Empleado” Primero presentaremos la instrucción SQL y explicaremos el uso
de cada segmento después:
Resultado:
Las primeras dos líneas le indican a SQL que seleccione dos campos, el primero es el
campo "Nombre_Area" de la tabla Área (denominado como Áreas), y el segundo es la
suma del campo "Sueldo" de la tabla Empleado (denominado como Total Sueldo). Note
como se utilizan los alias de tabla aquí: Área se denomina A, y Empleado se denomina
E. Sin los alias, la primera línea sería:
12 13
www.zonacodigo.com
13 13