Литералы

Что такое литералы: определение, основные принципы, примеры и практические советы. Изучайте SQL для тестировщиков с подробными объяснениями для начинающих специалистов.

Литералы.

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

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

  • Строковые литералы.
  • Числовые литералы.
  • Литералы даты и времени.
  • Логические литералы.
  • NULL.

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

Строка — это последовательность символов, заключенных в одинарные (’) или двойные (”) кавычки. Например, ‘это строка’ и «это строка».

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

Пример.

SELECT "Строка \n Другая строка" AS String;

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

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

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

ТипФормат и примерыОписание
Дата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
Дата с конкретным временем

Функции генерации дат.

Если необходимо получить временные данные из строки, которая не соответствует ни одному формату, который принимает функция CAST, то можно использовать встроенную функцию STR_TO_DATE, которая принимает произвольную строку, содержащую дату, и формат, описывающий её.

Более подробное описание функции STR_TO_DATE и её аргументов можно посмотреть в справочнике.

Для генерации же текущей даты или времени нет необходимости создавать строку для последующего её преобразования в дату, потому что есть встроенные функции для получения данных значений: CURDATE, CURTIME и NOW.

Функции извлечения временных данных.

Иногда необходимо получить не всю дату, а только её конкретную часть, например, месяц или год.

Для этого в SQL есть следующие функции:

Функции извлечения временных данных

ФункцияОписаниеДиапазон
YEARВозвращает год для указанной даты1000-9999
MONTHВозвращает числовое значение месяца года1-12
DAYВозвращает порядковый номер дня в месяце1-31
HOURВозвращает значение часа для времени0-23
MINUTEВозвращает значение минут для времени0-59

Отличие DATETIME от TIMESTAMP.

КритерийDATETIMETIMESTAMP
Диапазонот 1000-01-01 00:00:00 до 9999-12-31 23:59:59от 1970-01-01 00:00:00 до 2038-01-19 03:14:07
Часовой поясНе учитывается. Отображается в таком виде, в котором дата была установленаУчитывается. При выборках отображается с учётом текущего часового пояса сервера БД

Функции преобразования типов.

Но не все преобразования СУБД может сделать автоматически, и тогда необходимо делать явное преобразование типов. Для этого в MySQL есть две очень схожие функции CAST и CONVERT.

CAST(значение AS тип для конвертации); CONVERT(значение, тип для конвертации);

  • CAST (12005.6 AS DECIMAL) — 12006.
  • CONVERT (12005.4, DECIMAL) — 12005.

Функция CAST умеет конвертировать переданное значение в любой из следующих типов:

ТипОписаниеФормат
DATEКонвертирует значение в DATE”YYYY-MM-DD”
DATETIMEКонвертирует значение в DATETIME”YYYY-MM-DD hh:mm:ss”
TIMEКонвертирует значение в TIME”hh:mm:ss”
DECIMAL[(M[,D])]Конвертирует значение в DECIMAL. M - знаки до запятой, D - после. По умолчанию M=10, D=0DECIMAL(10,2)
CHAR[(N)]Конвертирует значение в CHAR с максимальной длиной NCHAR(50)
SIGNEDКонвертирует значение в BIGINT-
UNSIGNEDКонвертирует значение в беззнаковый BIGINT-
BINARYКонвертирует значение в BINARY-
YEARКонвертирует значение в год-

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

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

NULL.

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

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

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

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