Volver a la lista de artículos Artículos
Lectura de 11 minutos

Sintaxis SQL

En el artículo de hoy, te daremos un recorrido por la sintaxis básica de SQL con un enfoque en las sentencias SELECT, INSERT INTO, UPDATEy DELETE y DELETE.

SQL es un lenguaje de programación diseñado específicamente para comunicarse con las bases de datos. Le permite obtener los datos de una base de datos o cambiar los datos dentro de ella.

Como cualquier lenguaje de programación, SQL tiene una sintaxis a la que hay que atenerse. En otras palabras, hay reglas que hay que seguir con respecto a sus comandos si quieres que tu código funcione.

La sintaxis SQL se aprende mejor en las sentencias SQL básicas. A continuación, puede basarse en ellas y escribir código más complejo siguiendo las mismas reglas. Si eres nuevo en SQL, te recomendamos nuestro SQL para principiantes curso interactivo. Cubre la sentencia SELECT y otras sentencias y funciones SQL muy comunes. Por ejemplo, aprenderá a filtrar datos utilizando la cláusula WHERE y operadores lógicos. Este curso le enseñará a combinar datos de múltiples tablas utilizando JOINs, a agregar datos en grupos utilizando GROUP BY, y a combinar resultados de consultas utilizando los operadores de conjunto UNION, UNION ALL, y INTERSECT.

Con más de 120 ejercicios interactivos, SQL para principiantes es un buen comienzo para aprender a utilizar SQL. También puede utilizar nuestra hoja de trucos gratuita SQL para principiantes mientras lee este artículo.

Ya hemos mencionado varias veces las bases de datos. ¿Qué tienen de específico para necesitar un lenguaje de programación específico?

¿Cómo se organizan las bases de datos?

Las bases de datos están formadas por una o varias tablas. El objetivo de las tablas es almacenar los datos de forma organizada. La palabra clave aquí es "organizada", lo que significa que las tablas deben tener una determinada estructura.

Cada tabla tiene un nombre para diferenciar las tablas dentro de la base de datos, preferiblemente un nombre lo suficientemente descriptivo como para saber qué datos se almacenan en esa tabla.

Cada tabla tiene columnas que también tienen nombres. Las columnas definen los datos de la tabla, mientras que los nombres de las columnas los describen. Las tablas también tienen filas, y es aquí donde se almacenan los datos. Por ejemplo, la tabla de abajo se llama employees. Tiene las siguientes columnas:

  • id - El número de identificación del empleado.
  • first_name - El nombre del empleado.
  • last_name - El apellido del empleado.
  • salary - El salario del empleado.
  • department - El departamento del empleado.

Los datos de la tabla se muestran a continuación:

idfirst_namelast_namesalarydepartment
1NancyChapman1,486.13Operations
2SteveMason2,886.25Accounting
3KateWilliams1,158.44Accounting
4FrankHasbeen5,711.49Operations
5HillaryAdailton3,066.52Operations
6DanielJackson3,066.52Sales
7SusanDeutsch5,039.13Operations
8DereckVans4,434.27Sales
9SamNelson2,044.19Accounting
10MariaLopez1,995.32Accounting

Como puede ver, la tabla tiene diez filas, y cada fila contiene los datos de un empleado.

Sentencias SQL comunes y su sintaxis

Para utilizar SQL para consultar datos, necesita sentencias SQL. Son comandos emitidos a la base de datos, que realiza una tarea de acuerdo con lo que está escrito en el código.

Las sentencias SQL suelen terminar con un punto y coma. No es una parte obligatoria de la sintaxis: la consulta funcionará igual sin él. Sin embargo, terminar la sentencia SQL con un punto y coma es una buena práctica. Aumenta la legibilidad del código, especialmente cuando se escribe mucho código. En los siguientes ejemplos, seguiremos esta práctica.

Ahora revisemos algunas de las sentencias SQL más comunes.

Sentencia SELECT

La sentencia SELECT se utiliza para recuperar datos de las bases de datos. Puede seleccionar todos los datos o sólo la información de columnas específicas. También puedes filtrar datos, realizar cálculos y agregaciones de datos, y hacer otras cosas dentro de esta sentencia.

Veamos algunas de las posibilidades de SELECT y cómo funciona su sintaxis.

Seleccionar todos los datos de la tabla

La sintaxis para seleccionar todos los datos de la tabla es:

SELECT *
FROM table;

Primero se escribe SELECT. Después se especifica que se quieren seleccionar todos los datos. Cuando decimos "todos los datos", nos referimos a "todas las columnas de la tabla" - un asterisco (*) en la sentencia SELECT hace precisamente eso.

A continuación, hay que indicar a la base de datos de qué tabla se quieren obtener los datos. Esta es la segunda línea del código, que comienza con la cláusula FROM. Anuncia que la tabla se especificará inmediatamente después de esta palabra, así que simplemente escribe el nombre de la tabla.

Así es como funciona:

SELECT *
FROM employees;

Este código se traduce como "seleccionar todas las columnas de la tabla employees. Y hace exactamente eso.

idfirst_namelast_namesalarydepartment
1NancyChapman1,486.13Operations
2SteveMason2,886.25Accounting
3KateWilliams1,158.44Accounting
4FrankHasbeen5,711.49Operations
5HillaryAdailton3,066.52Operations
6DanielJackson3,066.52Sales
7SusanDeutsch5,039.13Operations
8DereckVans4,434.27Sales
9SamNelson2,044.19Accounting
10MariaLopez1,995.32Accounting

Seleccionar columnas específicas de la tabla

La única diferencia con respecto a la sintaxis anterior es que usted enumera columnas específicas en lugar de escribir un asterisco:

SELECT column1,
	 column2
FROM table;

Al enumerar las columnas, es importante separarlas con una coma; de lo contrario, el código no funcionará.

También es importante notar que no hay una coma después de la última columna.

Aunque no es necesario escribir cada columna de la tabla en una nueva fila, es una buena práctica. Te aconsejamos que la sigas. Ayuda a la legibilidad del código a medida que las sentencias se vuelven más complejas. Tener cada columna en una fila separada hace más fácil seguir qué columnas seleccionaste y si cometiste un error de sintaxis - por ejemplo, notar que te faltó una coma entre los nombres de las columnas es más fácil.

Utilicemos esta sintaxis en nuestra tabla de ejemplo:

SELECT first_name,
	 last_name
FROM employees;

Esta consulta selecciona las columnas first_name y last_name de la tabla employees.

first_namelast_name
NancyChapman
SteveMason
KateWilliams
FrankHasbeen
HillaryAdailton
DanielJackson
SusanDeutsch
DereckVans
SamNelson
MariaLopez

Filtrar datos con WHERE

La sentencia SELECT le permite utilizar otras cláusulas en ella, como WHERE.

SELECT …
FROM table
WHERE …;

Esta es la misma sentencia SELECT que antes. La única diferencia es que usted escribe la cláusula WHERE después de especificar la tabla en la cláusula FROM.

La cláusula WHERE le permite filtrar los datos devueltos estableciendo una o más condiciones que deben ser satisfechas.

Por ejemplo:

SELECT first_name,
	 last_name,
	 salary
FROM employees
WHERE salary > 3000;

Esta consulta selecciona el nombre y el apellido de los empleados y su salario. Estas son todas las columnas de la tabla employees. Sin embargo, quiero mostrar sólo los empleados que tienen un salario superior a 3.000. Para ello, primero escribo la cláusula WHERE. Luego viene la condición: la columna salary tiene que ser superior a 3.000.

Estos son los datos que devuelve la consulta:

first_namelast_namesalary
FrankHasbeen5,711.49
HillaryAdailton3,066.52
DanielJackson3,066.52
SusanDeutsch5,039.13
DereckVans4,434.27

Hay cinco empleados con un salario superior a 3.000 y todos ellos aparecen en la lista anterior.

Esta es sólo una de las muchas formas de utilizar WHERE. Para saber más, consulte esta guía para escribir la cláusula WHERE.

Agrupar filas con GROUP BY

Si utiliza la cláusula GROUP BY en la sentencia SELECT, puede agrupar filas en grupos.

SELECT …
FROM table
GROUP BY …; 

La sintaxis muestra una sentencia SELECT estándar. La cláusula FROM va seguida de la cláusula GROUP BY, en la que se enumeran las columnas por las que se quieren agrupar los datos. Las filas se agrupan por los datos de una o varias columnas específicas; las filas con el mismo valor de columna estarán en el mismo grupo.

Uno de los usos prácticos de GROUP BY es contar el número de empleados de cada departamento. Para ello, debe seleccionar la columna department y utilizar la función de agregación COUNT() para contar el número de empleados. Si utiliza GROUP BY, puede agrupar el resultado por el departamento. Y ahí lo tienes: el número de empleados por departamento.

Para ver ejemplos de cómo funciona GROUP BY, lee GROUP BY en SQL Explained o 5 ejemplos de GROUP BY.

Filtrar Datos Usando HAVING

La cláusula HAVING se utiliza más a menudo con la cláusula GROUP BY. Tiene el mismo propósito que WHERE, excepto que WHERE filtra los datos antes de la agregación, mientras que HAVING filtra los registros agregados. Por eso siempre hay que escribir HAVING después de GROUP BY:

SELECT …
FROM table
GROUP BY …
HAVING …;

Las condiciones en HAVING se escriben de la misma manera que en la cláusula WHERE. Dado que filtra los datos después de la agregación, las funciones de agregación están permitidas en HAVING.

¿Cómo se utiliza esto en la vida real? Un ejemplo común es calcular el salario medio por departamento, y luego utilizar HAVING para mostrar sólo aquellos departamentos con un salario medio superior a una determinada cantidad.

Para ver ejemplos detallados de cómo funciona esta cláusula, consulte La cláusula HAVING de SQL explicada.

Ordenar los resultados de la consulta con ORDER BY

Una de las cláusulas más utilizadas en la sentencia SELECT es ORDER BY. Se utiliza para ordenar los resultados de la consulta en orden ascendente o descendente. Dependiendo del tipo de datos, esto podría significar ordenar los datos del valor más alto al más bajo, de la fecha más antigua o más reciente, o alfabéticamente.

La cláusula ORDER BY permite ordenar los resultados por una o varias columnas.

Esta es la sintaxis:

SELECT …
FROM table
…
ORDER BY …;

Un uso sencillo y práctico de ORDER BY es ordenar a los empleados según su salario, de mayor a menor.

Puede encontrar algunos ejemplos detallados de esta cláusula en Cómo ordenar registros con la cláusula ORDER BY.

Sentencia INSERT INTO

Este comando se utiliza para insertar datos en la base de datos. Esta es la sintaxis:

INSERT INTO table (column1, column2, …)
VALUES (value1, value2, …);

Después de INSERT INTO, tienes que escribir el nombre de la tabla en la que quieres insertar los datos. Luego, entre los paréntesis, se escriben las columnas que se quieren modificar. Como en SELECT, las columnas se separan con una coma.

Después, está el comando VALUES. En los paréntesis, escribes los valores que quieres insertar en la tabla. Las comas también separan estos valores. Echa un vistazo a este ejemplo:

INSERT INTO employees (id, first_name, last_name)
VALUES (11, 'Obi-Wan', 'Kenobi');

Esta consulta inserta los datos en la tabla employees. Cambia las columnas id, first_name, y last_name. La nueva fila insertada en la tabla será para el empleado Obi-Wan Kenobi, cuyo ID es 11.

Si seleccionas todas las columnas de esta tabla (¡ya sabes cómo hacerlo!), esto es lo que obtendrías:

idfirst_namelast_namesalarydepartment
1NancyChapman1,486.13Operations
2SteveMason2,886.25Accounting
3KateWilliams1,158.44Accounting
4FrankHasbeen5,711.49Operations
5HillaryAdailton3,066.52Operations
6DanielJackson3,066.52Sales
7SusanDeutsch5,039.13Operations
8DereckVans4,434.27Sales
9SamNelson2,044.19Accounting
10MariaLopez1,995.32Accounting
11Obi-WanKenobiNULLNULL

Como no he establecido los valores de salario y departamento para el nuevo empleado, están vacíos. La base de datos utiliza NULL para marcar los valores vacíos.

Declaración UPDATE

UPDATE se utiliza para modificar los datos de la tabla. Este comando se suele ejecutar con la cláusula WHERE. Si no lo hiciera, todos los datos de la tabla se modificarían.

La sintaxis es la siguiente

UPDATE table
SET column1 = value1, column2 = value2, …
WHERE …;

Después de escribir UPDATE, se escribe el nombre de la tabla que se está actualizando. Luego viene el comando SET. Establece las columnas a un valor específico. En otras palabras, dices qué columna quieres que se actualice y con qué valores. Utiliza un signo de igualdad para establecer los valores, con cada columna y su nuevo valor separados por una coma. WHERE está aquí para limitar las actualizaciones sólo a aquellos valores que satisfacen una condición específica.

Este es un ejemplo de actualización de los valores de la tabla employees:

UPDATE employees
SET department = 'Sales'
WHERE id = 2;

En esta consulta, especifico que quiero actualizar la tabla employees. Entonces quiero tener el valor 'Ventas' en la columna department para el empleado cuyo ID es 2. Este empleado se movió de Contabilidad a Ventas; por eso se requiere esta actualización.

Aquí está la tabla actualizada:

idfirst_namelast_namesalarydepartment
1NancyChapman1,486.13Operations
2SteveMason2,886.25Sales
3KateWilliams1,158.44Accounting
4FrankHasbeen5,711.49Operations
5HillaryAdailton3,066.52Operations
6DanielJackson3,066.52Sales
7SusanDeutsch5,039.13Operations
8DereckVans4,434.27Sales
9SamNelson2,044.19Accounting
10MariaLopez1,995.32Accounting
11Obi-WanKenobiNULLNULL

El resultado muestra que Steve Mason está ahora en Ventas.

Declaración DELETE

Como probablemente haya adivinado, este comando se utiliza para eliminar datos de la tabla.

De nuevo, la cláusula WHERE juega un papel importante. Permite eliminar sólo ciertos datos, es decir, que satisfagan la condición de la cláusula WHERE. Si se omite WHERE, la sentencia DELETE borra todos los datos de la tabla.

Esta es la sintaxis:

DELETE
FROM table
WHERE …;

Después de DELETE viene la cláusula FROM. Al igual que la sentencia SELECT, contiene el nombre de la tabla de la que se quieren borrar los datos. Después de eso, asegúrate de escribir la cláusula WHERE si no quieres borrar todos los datos de la tabla.

He aquí un ejemplo práctico:

DELETE 
FROM employees
WHERE id = 11;

Esta consulta elimina todas las filas en las que el ID es 11. Este es el resultado:

idfirst_namelast_namesalarydepartment
1NancyChapman1,486.13Operations
2SteveMason2,886.25Sales
3KateWilliams1,158.44Accounting
4FrankHasbeen5,711.49Operations
5HillaryAdailton3,066.52Operations
6DanielJackson3,066.52Sales
7SusanDeutsch5,039.13Operations
8DereckVans4,434.27Sales
9SamNelson2,044.19Accounting
10MariaLopez1,995.32Accounting

He eliminado el nuevo empleado Obi-Wan Kenobi de la tabla.

De la sintaxis SQL a las sentencias SQL

Para hacer una declaración en SQL -como en cualquier lenguaje natural- hay que conocer su sintaxis. Esto abre muchas puertas que de otro modo estarían cerradas.

Como has visto, conocer sólo lo básico te permite seleccionar datos de la tabla, filtrarlos y agruparlos. Esta es la sentencia SELECT, y conocer este comando básico es sólo el comienzo. Hay otras sentencias SQL comunes que te permiten insertar datos en la tabla, modificarlos o eliminarlos.

Cualquier lenguaje se aprende más rápido si lo usas todos los días. En el caso de SQL, esto se traduce en escribir código con regularidad. Encontrar oportunidades para "hablar" SQL puede ser difícil, pero no te preocupes. Hay muchas en el SQL para principiantes curso. Inténtalo. Antes de que te des cuenta, dominarás el SQL.