Literales en SQL

En la lección anterior mostramos una cadena o, dicho de manera más formal, lo que se llama un literal de cadena.

MySQL 8.4
SELECT 'Hello world'

Los principales tipos de literales en SQL son:

  • de cadena
  • numérico
  • lógico
  • NULL
  • de fecha y hora

Literales de cadena

Una cadena es una secuencia de caracteres entre comillas simples (') o dobles ("). Por ejemplo, 'esto es una cadena' y "esto es una cadena".

Una cadena es una secuencia de caracteres entre comillas simples ('). Por ejemplo, 'esto es una cadena'.

En PostgreSQL las comillas dobles (") se usan para los identificadores (nombres de tablas y columnas), así que no se pueden usar para los literales de cadena.

Las cadenas pueden contener secuencias especiales de caracteres que empiezan por "\" (el carácter de escape). Sirven para que el SGBD dé a caracteres normales (letras y otros signos) un significado especial nuevo. Por ejemplo, la secuencia "\n" significa literalmente «salto de línea», mientras que sin la barra delante sería simplemente la letra "n".

Las cadenas pueden contener secuencias especiales de caracteres que empiezan por "\" (el carácter de escape). Sirven para que el SGBD dé a caracteres normales (letras y otros signos) un significado especial nuevo. Por ejemplo, la secuencia "\n" significa literalmente «salto de línea», mientras que sin la barra delante sería simplemente la letra "n".

Para usar secuencias de escape en PostgreSQL, tienes que usar cadenas E.

  • MySQL 8.4
    SELECT 'Cadena Otra cadena' as String
    
    String
    Cadena Otra cadena
  • MySQL 8.4
    SELECT 'Cadena \n Otra cadena' as String
    
    MySQL 8.4
    SELECT E'Cadena \n Otra cadena' as String
    
    String
    Cadena Otra cadena

Literales numéricos

Ejemplo
Incluye números enteros y decimales. El separador decimal es el «.» (punto).1, 2.9, 0.01
Puede tener solo parte entera, solo parte decimal o ambas..2, 1.1, 10
Puede ser un número positivo o negativo (en los números positivos no es obligatorio indicar el signo).+1, -10, -2.2
Se puede representar en notación exponencial.1e3 (=1000) 1e-3 (=0.001)

Operadores aritméticos

Para los literales numéricos, SQL tiene todos los operadores aritméticos de siempre:

OperadorDescripciónEjemplo
%, MODMódulo (resto)11 % 5 = 1
*Multiplicación10 * 16 = 160
+Suma98 + 2 = 100
-Resta50 - 51 = -1
/División1 / 2 = 0.5
DIVDivisión entera10 DIV 4 = 2
OperadorDescripciónEjemplo
%Módulo (resto)11 % 5 = 1
*Multiplicación10 * 16 = 160
+Suma98 + 2 = 100
-Resta50 - 51 = -1
/División1 / 2 = 0.5

Con estos operadores puedes construir cualquier expresión aritmética aplicando las reglas habituales de la aritmética.

Por ejemplo:

MySQL 8.4
SELECT (5 * 2 - 6) / 2 AS Result;
Result
2

Literales de fecha y hora

Los valores de fecha y hora se pueden representar como cadena o como número.

Por ejemplo, si queremos indicar una fecha en una consulta, podemos hacerlo con la cadena "1970-12-30", "19701230" o con el número 19701230. En todos los casos, estos valores se interpretan como la fecha «30 de diciembre de 1970».

Por ejemplo, si queremos indicar una fecha en una consulta, podemos hacerlo con la cadena '1970-12-30' o '19701230'.

Aquí tienes un ejemplo de uso de un literal de fecha:

MySQL 8.4
SELECT * FROM FamilyMembers WHERE birthday > '1970-12-30'

No te fijes en qué hace exactamente esta consulta, lo veremos más adelante. Ahora lo importante es la sintaxis con la que indicamos la fecha en la consulta.

Además de la fecha, también podemos indicar solo la hora o ambas cosas juntas.

DescripciónFormato
FechaSe interpreta como una fecha con la hora a cero.YYYY-MM-DD, YYYYMMDD

En lugar del separador «-» puedes usar cualquier signo de puntuación.

Por ejemplo:
'2020-01-01' = 1 de enero de 2020, 00:00:00
HoraContiene solo la hora, sin una fecha concreta.hh:mm:ss, hh:mm, hh, ss

El separador también se puede omitir.

Por ejemplo:
12:11 = 12:11:00
Fecha y horaUna fecha en la que se puede indicar una hora concreta.YYYY-MM-DD hh:mm:ss, YYYYMMDDhhmmss

Por ejemplo:
'20200101183030' = 1 de enero de 2020, 18:30:30

Literales lógicos

Los literales lógicos son los valores true y false, que indican si una afirmación es verdadera o falsa.

Al interpretar la consulta, MySQL los convierte en números: true y false pasan a ser 1 y 0 respectivamente.

NULL

El valor NULL significa «no hay datos» o «no hay valor». Sirve para distinguir los valores vacíos, como una cadena de longitud cero o un espacio, de la situación en la que no hay ningún valor.