Limonbyte

blog

Tutorial de Comandos SQL (Primera parte)

Este tutorial de comandos básicos aborda lo esencial para aprender a trabajar con bases de datos mediante consultas, usando el lenguaje SQL.

Veremos ejemplos de operaciones variadas, algunos ejemplos básicos y algunos más complicados, de modo que el lector pueda avanzar progresivamente en el uso de SQL.

Índice

  1. SQL SELECT
  2. SQL DISTINCT
  3. SQL WHERE
  4. SQL AND OR
  5. SQL IN
  6. SQL BETWEEN
  7. SQL LIKE
  8. SQL ORDER BY

SQL SELECT

Una de las sentencias SQL más importantes es SELECT, ya que permite realizar consultas sobre los datos almacenados en la base de datos. Permite seleccionar las columnas que se van a mostrar y en el orden en que lo van a hacer. Simplemente es la instrucción que la base de datos interpreta como que vamos a solicitar información.

El uso común de esta sentencia es la selección de datos desde tablas ubicadas en una base de datos. Para ello necesitamos SELECT la información FROM una tabla. (Nota: La tabla es un contenedor que reside en la base de datos donde se almacena la información. Por lo tanto tenemos la estructura SQL más básica:

SELECT "nombre_columna" FROM "nombre_tabla";

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

Tabla Store_Information

Store_NameSalesTxn_Date
Los Angeles150005-Jan-1999
San Diego25007-Jan-1999
Los Angeles30008-Jan-1999
Boston70008-Jan-1999

Podemos utilizar esta tabla como ejemplo a lo largo de la guía de referencia (esta tabla aparecerá en todas las secciones). Para seleccionar todos los negocios en esta tabla, ingresamos,

SELECT Store_Name FROM Store_Information;

Resultado:

Store_Name
Los Angeles
San Diego
Los Angeles
Boston

Pueden seleccionarse los nombres de columnas múltiples, así como también los nombres de tablas múltiples.

SQL DISTINCT

DISTINCT especifica que el conjunto de resultados sólo puede incluir filas únicas. Es decir, si al realizar una consulta hay registros exactamente iguales que aparecen más de una vez, éstos se eliminan. Muy útil en muchas ocasiones.

La cláusula DISTINCT nos devuelve valores únicos. En una tabla, una columna puede contener valores duplicados; y algunas veces sólo se necesita un listado de los valores diferentes.

Qué sucedería si sólo deseamos seleccionar cada elemento DISTINCT? 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 negocios distintos en la Tabla Store_Information,

Tabla Store_Information

Store_NameSalesTxn_Date
Los Angeles150005-Jan-1999
San Diego25007-Jan-1999
Los Angeles30008-Jan-1999
Boston70008-Jan-1999

Ingresamos:

SELECT DISTINCT store_name FROM Store_Information;

Resultado:

Store_Name
Los Angeles
San Diego
Boston

SQL WHERE

Especifica la condición de filtro de las filas devueltas. Se utiliza cuando no se desea que se devuelvan todas las filas de una tabla, sino sólo las que cumplen ciertas condiciones. Lo habitual es utilizar esta cláusula en la mayoría de las consultas.

Por ejemplo, podríamos desear sólo recuperar los negocios con ventas mayores a 1.000 dólares estadounidenses. Para ello, utilizamos la palabra clave WHERE. La sintaxis es la siguiente:

SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "condición";

Por ejemplo, para seleccionar todos los negocios con ventas mayores a 1000 dólares estadounidenses en la Tabla Store_Information:

Tabla Store_Information

Store_NameSalesTxn_Date
Los Angeles150005-Jan-1999
San Diego25007-Jan-1999
Los Angeles30008-Jan-1999
Boston70008-Jan-1999

Ingresamos:

SELECT Store_Name
FROM Store_Information
WHERE Sales > 1000;

Resultado:

Store_Name
Los Angeles

SQL AND OR

Ya 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 (como la que se presenta en la sección anterior), o puede ser una condición compuesta. Las condiciones compuestas están formadas por múltiples condiciones simples conectadas por AND u OR. No hay límites en el número de condiciones simples que pueden presentarse en una sola instrucción SQL.

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 negocios con ventas mayores a 1000 dólares estadounidenses o todos los negocios con ventas menores a 500 dólares estadounidenses pero mayores a 275 dólares estadounidenses en la Tabla Store_Information,

Tabla Store_Information

Store_NameSalesTxn_Date
Los Angeles150005-Jan-1999
San Diego25007-Jan-1999
San Francisco30008-Jan-1999
Boston70008-Jan-1999

Ingresamos,

SELECT Store_Name
FROM Store_Information
WHERE Sales > 1000
OR (Sales < 500 AND Sales > 275);

Resultado:

Store_Name
Los Angeles
San Francisco

SQL IN

En SQL, hay solamente 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 negocios de Los Ángeles y San Diego en la Tabla Store_Information:

Tabla Store_Information

Store_NameSalesTxn_Date
Los Angeles150005-Jan-1999
San Diego25007-Jan-1999
San Francisco30008-Jan-1999
Boston70008-Jan-1999

Ingresamos:

SELECT *
FROM Store_Information
WHERE Store_Name IN ('Los Angeles', 'San Diego');

Resultado:

Store_Name Sales Txn_Date
Los Angeles 1500 05-Jan-1999
San Diego 250 07-Jan-1999

SQL BETWEEN

La sentencia u operador BETWEEN de SQL te permite probar fácilmente si una expresión está dentro de un rango de valores. Los valores pueden ser texto, fechas o números. Se puede usar en una instrucción SELECT, INSERT, UPDATE o DELETE.

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 ventas entre el 06 de enero de 1999, y el 10 de enero de 1999, en la Tabla Store_Information:

Tabla Store_Information

Store_NameSalesTxn_Date
Los Angeles150005-Jan-1999
San Diego25007-Jan-1999
San Francisco30008-Jan-1999
Boston70008-Jan-1999

Ingresamos:

SELECT *
FROM Store_Information
WHERE Txn_Date BETWEEN '06-Jan-1999' AND '10-Jan-1999';

Debemos de tener 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.

Resultado:

Store_Name Sales Txn_Date
San Diego 250 07-Jan-1999
San Francisco 300 08-Jan-1999
Boston 700 08-Jan-1999

SQL LIKE

Este operador se usa para poder determinar si una cadena de caracteres específica coincide con un patrón específico. Se utiliza normalmente en una sentencia Where para buscar un patrón específico de una columna.

Este operador puede ser de utilidad en los casos donde necesitamos realizar un apareamiento de patrones en vez de iguales o no iguales. El SQL Like se utiliza cuando se desea devolver la fila, si una cadena de caracteres específica coincide con un patrón específico.

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:

  • ‘A_Z’: Toda línea que comience con ‘A’, otro carácter y termine con ‘Z’. Por ejemplo, ‘ABZ’ y ‘A2Z’ deberían satisfacer la condición, mientras ‘AKKZ’ no debería (debido a que hay dos caracteres entre A y Z en vez de uno).
  • ‘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, ‘LOS ANGELES’ y ‘SAN FRANCISCO’ ambos deberían satisfacer la condición.

Supongamos que tenemos la siguiente tabla:

Tabla Store_Information

Store_NameSalesTxn_Date
LOS ANGELES150005-Jan-1999
SAN DIEGO25007-Jan-1999
SAN FRANCISCO30008-Jan-1999
BOSTON70008-Jan-1999

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

SELECT *
FROM Store_Information
WHERE Store_Name LIKE '%AN%';

Resultado:

Store_Name Sales Txn_Date
LOS ANGELES 1500 05-Jan-1999
SAN DIEGO 250 07-Jan-1999
SAN FRANCISCO 300 08-Jan-1999

SQL ORDER BY

ORDER BY se utiliza para ordenar los resultados de una consulta, según el valor de la columna especificada.

Por defecto, se ordena de forma ascendente (ASC) según los valores de la columna.

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

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 Store_Information según la suma en dólares, en orden descendente:

Tabla Store_Information

Store_NameSalesTxn_Date
Los Angeles150005-Jan-1999
San Diego25007-Jan-1999
San Francisco30008-Jan-1999
Boston70008-Jan-1999

Ingresamos:

SELECT Store_Name, Sales, Txn_Date
FROM Store_Information
ORDER BY Sales DESC;

Resultado:

Store_Name Sales Txn_Date
Los Angeles 1500 05-Jan-1999
Boston 700 08-Jan-1999
San Francisco 300 08-Jan-1999
San Diego 250 07-Jan-1999

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 Store_Name, Sales, Txn_Date
FROM Store_Information
ORDER BY 2 DESC;

Categorías

Archivos