Литералы в 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 означает "нет данных", "нет значения". Оно нужно, чтобы отличать визуально пустые значения, такие как строка нулевой длины или "пробел", от того, когда значения вообще нет, даже пустого.


Мы с вами на связи
Русский