Литералы в SQL

На прошлом уроке выводили строку, а если говорить более формальным языком, то так называемый строковый литерал.

MySQL
SELECT "Hello world"

Литерал — это указанное явным образом фиксированное значение, например, число 12 или строка "SQL".

Основными типами литералов в MySQL являются:

  • строковый
  • числовой
  • логический
  • NULL
  • литерал даты и времени

Строковые литералы

Строка — это последовательность символов, заключённых в одинарные (') или двойные (") кавычки. Например, 'это строка' и "это строка".

Строки могут содержать специальные последовательности символов, начинающиеся с "\" (экранирующий символ). Они нужны для того, чтобы СУБД придала обычным символам (буквам и другим знакам) новое особое значение. Например, последовательность "\n" буквально означает "перевод строки", а без предваряющего слеша это была бы обычная буква "n".

  • MySQL
    SELECT "Строка Другая строка" as String
    
    String
    Строка Другая строка
  • MySQL
    SELECT "Строка \n Другая строка" as String
    
    String
    Строка Другая строка

Числовые литералы

Пример
Включает в себя целые и дробные числа. Разделительный знак для дробного числа — «.» (точка).1, 2.9, 0.01
Может иметь только целую, дробную часть или обе сразу..2, 1.1, 10
Может быть положительным и отрицательным числом (для положительного числа совсем не обязательно указывать знак).+1, -10, -2.2
Могут быть представлены в экспоненциальном виде.1e3 (=1000) 1e-3 (=0.001)

Арифметические операторы

Для числовых литералов в SQL есть все привычные нам арифметические операторы:

ОператорОписаниеПример
%, MODДеление по модулю11 % 5 = 1
*Умножение10 * 16 = 160
+Сложение98 + 2 = 100
-Вычитание50 - 51 = -1
/Деление1 / 2 = 0.5
DIVЦелочисленное деление10 DIV 4 = 2

Используя эти операторы можно построить любое арифметическое выражение, применяя стандартные правила арифметики.

Для примера:

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

Литералы даты и времени

Значения даты и времени могут быть представлены в формате строки или числа.

Например, если мы хотим указать какую-то дату в запросе, то мы можем это сделать с помощью строки "1970-12-30", "19701230" или же числа 19701230. В обоих случаях эти значения будут интерпретироваться как дата «30 декабря 1970 года».

Ниже приведён пример использования литерала даты:

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

Можете не обращать внимание на то, что конкретно делает данный запрос, мы это рассмотрим попозже. Сейчас нам важен именно синтаксис того, как мы можем указывать дату в запросе.

Кроме самой даты, мы можем также указывать отдельно время или же всё вместе.

ОписаниеФормат
ДатаИнтерпретируется как дата со временем, равным нулюYYYY-MM-DD, YYYYMMDD

Вместо разделителя "-" можно использовать любой знак препинания.

Например:
'2020-01-01' = 1 января 2020, 00:00:00
ВремяСодержит только время без конкретной датыhh:mm:ss, hh:mm, hh, ss

Разделитель тоже можно опустить.

Например:
12:11 = 12:11:00
Дата и времяДата с возможностью задать конкретное времяYYYY-MM-DD hh:mm:ss, YYYYMMDDhhmmss

Например:
'20200101183030' = 1 января 2020, 18:30:30

Логические литералы

Логический литерал - значения TRUE и FALSE, означающие истинность и ошибочность какого-либо утверждения. При интерпретации запроса, MySQL преобразует их в числа: TRUE и FALSE становятся 1 и 0 соответственно.

NULL

Значение NULL означает "нет данных", "нет значения". Оно нужно, чтобы отличать визуально пустые значения, такие как строка нулевой длины или "пробел", от того, когда значения вообще нет, даже пустого.