База данных, или БД, — это набор таблиц с информацией, которая связана между собой.
Система управления базами данных, или СУБД, — это связующее звено между БД и пользователем. Когда аналитику данных нужно найти что-то в базе, например всех клиентов по фамилии Иванов, он обращается к СУБД. Система получает запрос, ищет нужную информацию в базе и показывает её аналитику.
SQL — это язык программирования, созданный специально для хранения и обработки информации в БД. Именно на языке структурированных запросов SQL инженер базы данных задаёт структуру и правила обработки информации, а аналитик формулирует запросы к СУБД.
Чтобы информация в базе не смешивалась и работать с ней было проще, её делят на типы. Зная типы данных SQL, аналитик сможет сформулировать корректные запросы.
Типы данных SQL — это своего рода маркеры, которые указывают на свойства данных и необходимый объём места для их хранения.
Свойства данных определяют, какие операции можно с ними проводить. Например, числа можно складывать, умножать, делить, составлять с ними уравнения и выполнять более сложные математические операции. А имея дело с текстом, можно определить, на каком языке он написан, с большой или с маленькой буквы, или найти нужное слово.
Как правило, типы данных в таблице SQL задают при её создании, чтобы пользователи не могли вносить информацию как попало и данные в конкретных полях и ячейках имели общий вид.
Возьмем для примера базу данных лояльных клиентов магазина. В этой базе хранятся ФИО клиентов, номера телефонов, e-mail-адреса, потраченная каждым из них сумма. Чтобы аналитику не пришлось выискивать нужную информацию в массиве данных, все они хранятся в отдельных полях и ячейках, и у каждого поля SQL — свой тип данных. Если ввести сумму, потраченную каждым клиентом, текстом, данные невозможно будет сложить, чтобы вычислить общую выручку компании. Поэтому инженер БД изначально прописывает, что сумма — это число. Так пользователи просто не смогут ввести в это поле данные в другом формате.
Существуют разные СУБД, которые поддерживают разные типы данных. Самые распространённые системы — MySQL, PostgreSQL, Microsoft SQL, Oracle. Общие принципы работы и синтаксис во всех системах примерно одинаковы, однако перед началом работы лучше ознакомиться с документацией. В разных СУБД типы данных языка SQL могут иметь одинаковые названия, но свойства у них могут быть разные.
Основные типы данных обычно универсальны для всех СУБД, даже если и называются по-разному. Рассмотрим, как устроена классификация данных, на примере PostgreSQL.
В обычной жизни встречаются целые и дробные числа. Последние ещё называют числами с плавающей точкой или запятой — например, 6,47. В языке SQL числовые типы данных делятся по тому же принципу. Разберём некоторые из них.
Кроме формата записи числовые типы данных различаются между собой диапазоном значений и объемом занимаемой памяти. Чем больше диапазон, тем больше места будут занимать данные.
Александр Сушков,
преподаватель и автор курсов, аналитик данных, эксперт SQL
Если при создании таблицы для поля «цена товара» указать тип float, то система автоматически установит максимальный диапазон — 15 десятичных цифр по обе стороны от запятой. Но если инженер базы данных заранее знает, что цены на товары производителя не превышают 9 999, 99 ₽, он может изначально указать тип данных float (6). Тем самым он даст понять системе, что ожидаемые значения будут в пределах 6 знаков по обе стороны запятой. Ровно столько памяти система и выделит для хранения цен. В таком формате данные займут меньше места, чем просто в формате float.
Тип varchar(n) также подойдет для примечаний, поскольку конкретную длину строки предугадать невозможно, но и поэм в три тома никто не ожидает.
Для хранения паролей можно использовать тип данных char(n), поскольку в этом случае речь, как правило, идет о строках вполне определённой длины — в среднем 10 или 12 символов. Если изначально указать необходимое ограничение — char(10), система оставит ровно столько места для хранения данных, сколько необходимо.
Также строковые типы данных можно использовать, чтобы хранить в базе телефонные номера, поскольку они не требуют выполнения математических операций. Подходит этот тип и для хранения номеров документов: их тоже не нужно ни умножать, ни складывать. И кроме того, числовые типы данных часто «съедают» лишние нули — в начале или в конце. Поэтому номера документов тоже часто хранят в виде строк.
Приведём основные типы данных, используемых в SQL для обозначения даты и времени.
Такой тип ещё называют «логическим». Он предусматривает всего два состояния: true или false, которых вполне достаточно, чтобы указать, работает компания или нет. Кроме того, данные этого типа занимают всего 1 байт, и их использование позволяет заметно сэкономить место в памяти системы.
Значение NULL
Иногда вместо конкретного значения в ячейке можно увидеть значение NULL, которое не относится ни к одному из существующих типов данных. Причина проста: NULL означает отсутствие данных в принципе. Не ноль, не пустая строка, а именно отсутствие данных.
У значения NULL есть важное свойство, которое нужно усвоить начинающим аналитикам: NULL не равен ничему и даже самому себе. По этой причине обычное условие — «если такое-то значение равно NULL, сделай вот это» — не сработает. Потому что NULL ничему не равен. В языке SQL есть специальные операторы, которые позволяют аналитикам работать с этим значением.
Александр Сушков
Новичкам в SQL не стоит пытаться выучить сразу все типы данных и тонкости их применения. Все, что нужно, запомнится со временем. А на старте работы с SQL, чтобы не допускать ошибок, советую воспользоваться правилом инженера: «Хороший инженер не знает всего, хороший инженер знает, где лежат справочники». Не нужно стесняться задавать вопросы или обращаться к документации. В этом нет ничего плохого.
Читать также: