SQL1

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 13

www.zonacodigo.

com

LENGUAJE TRANSACT SQL


(T-SQL) Transact-SQL es una extensión del lenguaje SQL, propiedad de Microsoft y Sybase.
T-SQL es un lenguaje de programación diseñado para almacenar, manipular y recuperar datos
almacenados en bases de datos relacionales, pero que no posee la potencia de los lenguajes de
programación.

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"

Para ilustrar el ejemplo anterior, supongamos que tenemos la siguiente tabla:

Tabla Empleado

Nombre Sueldo Fecha_Registro


Juan Carlos $ 1500 05- 01-2010
Jorge Luis $ 250 07- 01-2010
Luis Ángel $ 300 08- 01-2010
María Angélica $ 700 08- 01-2010

SELECT Empleado FROM Nombre

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:

SELECT DISTINCT "nombre_columna"


FROM "nombre_tabla"

Por ejemplo, para seleccionar todos los Sueldos distintos en la Tabla

Tabla Empleado

Nombre Sueldo Fecha_Registro


Juan Carlos $ 1500 05- 01-2010
Jorge Luis $ 250 07- 01-2010
Luis Ángel $ 300 08- 01-2010
Jorge Luis $ 700 08- 01-2010

Ingresamos:

SELECT DISTINCT Nombre FROM Empleado

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

Nombre Sueldo Fecha_Registro


Juan Carlos $ 1500 05- 01-2010
Jorge Luis $ 250 07- 01-2010
Luis Ángel $ 300 08- 01-2010
María Angélica $ 700 08- 01-2010

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

Nombre Sueldo Fecha_Registro


Juan Carlos $ 1500 05- 01-2010
Jorge Luis $ 250 07- 01-2010
Luis Ángel $ 300 08- 01-2010
María Angélica $ 700 08- 01-2010

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

WHERE "nombre_columna" = 'valor1'

Por ejemplo, podríamos desear seleccionar todos los registros para los Empleados como
Juan Carlos y Jorge Luis en la Tabla Empleado.

Tabla Empleado

Nombre Sueldo Fecha_Registro


Juan Carlos $ 1500 05- 01-2010
Jorge Luis $ 250 07- 01-2010
Luis Ángel $ 300 08- 01-2010

4 13
www.zonacodigo.com

María Angélica $ 700 08- 01-2010

Ingresamos:

SELECT *
FROM Empleado
WHERE Nombre IN (‘Juan Carlos’, 'Jorge Luis’)

Resultado:

Nombre Sueldo Fecha_Registro


Juan Carlos $ 1500 05- 01-2010
Jorge Luis $ 250 07- 01-2010

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'.

Por ejemplo, podríamos desear seleccionar la visualización de toda la información de


Sueldos entre el 06 de enero de 2010, y el 10 de enero de 2010, en la Tabla Empleado

Tabla Empleado

Nombre Sueldo Fecha_Registro


Juan Carlos $ 1500 05- 01-2010
Jorge Luis $ 250 07- 01-2010
Luis Angol $ 300 08- 01-2010
María Angélica $ 700 08- 01-2010

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

Nombre Sueldo Fecha_Registro


Juan Carlos $ 1500 05- 01-2010
Jorge Luis $ 250 07- 01-2010
Luis Ángel $ 300 08- 01-2010
María Angélica $ 700 08- 01-2010

Resultado:

Nombre Sueldo Fecha_Registro


Jorge Luis $ 250 07- 01-2010
Luis Ángel $ 300 08- 01-2010
María Angélica $ 700 08- 01-2010

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}

{patrón} generalmente consiste en comodines. Aquí hay algunos ejemplos:

 '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.

Aplicando esto a nuestra tabla

6 13
www.zonacodigo.com

Tabla Empleado

Nombre Sueldo Fecha_Registro


Juan Carlos $ 1500 05- 01-2010
Jorge Luis $ 250 07- 01-2010
Luis Ángel $ 300 08- 01-2010
María Angélica $ 700 08- 01-2010

Deseamos encontrar todos los Empleados cuyos nombres contengan ‘AN’. Para hacerlo,
ingresamos:

SELECT *
FROM Empleado
WHERE Nombre LIKE '%AN%'

Resultado:

Nombre Sueldo Fecha_Registro


Juan Carlos $ 1500 05- 01-2010
Luis Ángel $ 300 08- 01-2010
María Angélica $ 700 08- 01-2010

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.

La sintaxis para una instrucción ORDER BY es la siguiente:

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

ORDER BY "nombre1_columna" [ASC, DESC], "nombre2_columna" [ASC, DESC]

7 13
www.zonacodigo.com

Suponiendo que elegimos un orden ascendente para ambas columnas, el resultado se


clasificará en orden ascendente según la columna 1. Si hay una relación para el valor de
la columna 1, se clasificará en orden ascendente según la columna 2.

Por ejemplo, podríamos desear enumerar los contenidos de la Tabla Empleado según la
suma en dólares, en orden descendente:

Tabla Empleado

Nombre Sueldo Fecha_Registro


Juan Carlos $ 1500 05- 01-2010
Jorge Luis $ 250 07- 01-2010
Luis Ángel $ 300 08- 01-2010
María Angélica $ 700 08- 01-2010

Ingresamos,

SELECT Nombre, Sueldo, Fecha_Registro


FROM Empleado
ORDER BY Sueldo DESC

Resultado:

Nombre Sueldo Fecha_Registro


Juan Carlos $ 1500 05- 01-2010
María Angélica $ 700 08- 01-2010
Luis Ángel $ 300 08- 01-2010
Jorge Luis $ 250 07- 01-2010

Además del nombre de la columna, podríamos utilizar la posición de la columna (según


la consulta SQL) para indicar en qué columna deseamos aplicar la cláusula ORDER
BY. La primera columna es 1, y la segunda columna es 2, y así sucesivamente. En el
ejemplo anterior, alcanzaremos los mismos resultados con el siguiente comando:

SELECT Nombre, Sueldo, Fecha_Registro


FROM Empleado
ORDER BY 2 DESC

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

SELECT "nombre1_columna", SUM("nombre2_columna")


FROM "nombre_tabla"
GROUP BY "nombre1-columna"

Ilustremos utilizando la siguiente tabla,

Tabla Empleado

Nombre Sueldo Fecha_Registro


Juan Carlos $ 1500 05- 01-2010
Jorge Luis $ 250 07- 01-2010
Juan Carlos $ 300 08- 01-2010
María Angélica $ 700 08- 01-2010

Deseamos saber los Sueldos totales para cada Empleado. Para hacerlo, ingresaríamos:

SELECT Nombre, SUM (Sueldo)


FROM Empleado
GROUP BY Nombre

Resultado:

Nombre SUM(Sueldo)
Juan Carlos $ 1800
Jorge Luis $ 250
María Angélica $ 700

La palabra clave GROUP BY se utiliza cuando estamos seleccionado columnas


múltiples desde una tabla o tablas y aparece al menos un operador aritmético en la
instrucción SELECT. Cuando esto sucede, necesitamos GROUP BY todas las otras
columnas seleccionadas, es decir, todas las columnas excepto aquella(s) que se operan
por un operador aritmético.

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.

10. Sentencia HAVING:


También podríamos limitar el resultado según la suma correspondiente (o cualquier otra
función de agregado). Por ejemplo, podríamos desear ver sólo los Sueldos mayores a $
1 500. En vez de utilizar la cláusula Where en la instrucción SQL, a pesar de que
necesitemos utilizar la cláusula HAVING, que se reserva para funciones de agregados.
La cláusula HAVING se coloca generalmente cerca del fin de la instrucción SQL, y la
instrucción SQL con la cláusula HAVING. Puede o no incluir la cláusula GROUP BY
sintaxis para HAVING es:

SELECT "nombre1_columna", SUM("nombre2_columna")


FROM "nombre_tabla"
GROUP BY "nombre1_columna"

9 13
www.zonacodigo.com

HAVING (condición de función aritmética)

Nota: La cláusula GROUP BY es opcional.

En nuestro ejemplo, tabla Empleado:

Nombre Sueldo Fecha_Registro


Juan Carlos $ 1500 05- 01-2010
Jorge Luis $ 250 07- 01-2010
Juan Carlos $ 300 08- 01-2010
María Angélica $ 700 08- 01-2010

Ingresaríamos:

SELECT Nombre, SUM (Sueldo)


FROM Empleado
GROUP BY Nombre
HAVING SUM (Sueldo) > 1500

Resultado:

Nombre   SUM(Sueldo)
Juan Carlos   $ 1800

11. Sentencia ALIAS


Nos concentraremos ahora en el uso de ALIAS. Hay dos tipos de alias que se utilizan
con mayor frecuencia. Alias de columna y alias de tabla.

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.

El segundo tipo de alias es el alias de tabla. Esto se alcanza al colocar un alias


directamente luego del nombre de tabla en la cláusula FROM. Esto es conveniente
cuando desea obtener información de dos tablas separadas (el término técnico es
'realizar uniones'). La ventaja de utiliza un alias de tablas cuando realizamos uniones
es rápidamente aparente cuando hablamos de uniones.

Antes de comenzar con las uniones, miremos la sintaxis tanto para el alias de columna
como de tabla:

SELECT "nombre1_columna" as "alias_columna"

10 13
www.zonacodigo.com

FROM "nombre_tabla" "alias_tabla"

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:

Nombre Sueldo Fecha_Registro


Juan Carlos $ 1500 05- 01-2010
Jorge Luis $ 250 07- 01-2010
Juan Carlos $ 300 08- 01-2010
María Angélica $ 700 08- 01-2010

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:

SELECT Emp.Nombre as ‘Nombre del Empleado’, SUM(Emp.Sueldo) as


‘Total Sueldo’
FROM Empleado Emp
GROUP BY Emp. Nombre

Resultado:

Nombre del Empleado   Total Sueldo


Juan Carlos   $ 1800
Jorge Luis   $ 250
María Angélica   $ 700

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:

12. Sentencia JOIN:


Ahora miremos las uniones. Para realizar uniones en SQL se requieren mucho de los
elementos que ya hemos presentado. Digamos que tenemos las siguientes dos tablas:

Tabla Empleado:

Nombre Sueldo Fecha_Registro


Juan Carlos $ 1500 05- 01-2010
Jorge Luis $ 250 07- 01-2010
Luis Ángel $ 300 08- 01-2010
María Angélica $ 700 08- 01-2010

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:

SELECT A.Nombre_Area as ‘Áreas’, SUM (E.Sueldo) as ‘Total Sueldo’


FROM Área A, Empleado E
WHERE A.Nombre = E. Nombre_Empleado
GROUP BY A.Area

Resultado:

Areas   Total Sueldo


Contabilidad   $ 1000
Almacén   $ 1750

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:

SELECT Area. Nombre_Area as ‘Areas’, SUM(Empleado.Sueldo) as ‘Total


Sueldo’

Que es mucho más problemática. En esencia, los alias de tabla facilitan el


entendimiento de la totalidad de la instrucción SQL, especialmente cuando se incluyen
tablas múltiples.

Luego, pongamos nuestra atención en la línea 3, la instrucción WHERE. Aquí es


donde se especifica la condición de la unión. En este caso, queremos asegurarnos que el
contenido en “Nombre_Area” en la tabla Área concuerde con la tabla Empleado, y la
forma de hacerlo es igualarlos. Esta instrucción WHERE es esencial para asegurarse de
que obtenga el resultado correcto. Sin la correcta instrucción WHERE se producirá una
Unión Cartesiana. Las uniones cartesianas darán por resultado que de la consulta se
arroje toda combinación posible de las dos tablas (o cualquiera que sea el número de
tablas en la instrucción FROM). En este caso, una unión cartesiana resultaría en un
total de 4x4 = Se presenta un resultado de16 filas.

12 13
www.zonacodigo.com

Gracias por descargar este Manual


En el Próximo Manual aprenderás las Funciones de Agregado y
Las Funciones de Fecha.

13 13

También podría gustarte