SQL
Теория: Таблицы
В этом уроке поближе познакомимся с таблицами в SQL и данными, которые могут в них храниться.
Что такое типы данных
К таблицам предъявляется требование о типе данных поля или столбца. Тип данных накладывает ограничение на то, какие данные могут содержаться в столбце и какие операции можно с ними совершать.
С числами мы можем выполнять операции сложения, умножения и деления. Со строками этого сделать не сможем. Но, например, можем соединить две строки или взять часть строки.
Если в одной колонке хранятся разнородные данные, то база данных не сможет гарантировать безопасную работу с ними. Базе данных удобно работать с однотипными типами данных. Например, не выделять много памяти на хранение данных в колонке, а выделить только фиксированную часть.
Типы данных
У каждого поля в PostgreSQL определенный тип, который задается на этапе создания таблицы. Это значит, что значением этого поля могут быть только определенные данные.
Запросы выше будут успешно выполнены, так как все добавляемые данные соответствуют типам колонок. Следующий запрос завершится ошибкой. В нем мы пытаемся вставить строку в колонку lessons_count, которое предназначено для целых чисел. База данных выдаст ошибку при попытке выполнить подобный запрос. Если поле имеет числовой тип, то в него невозможно вставить строку, и наоборот.
В PostgreSQL встроено много различных типов данных, но на практике используются не все. Ниже мы разбираем только самые популярные типы.
Строки
Для строк в базах данных в основном используются два типа:
- varchar -- для строк с ограничением максимальной длины
- text -- для строк без ограничения. Как правило, это полноценные тексты
В базах данных нельзя оставить первый тип без указания длины. Это связано с производительностью и эффективностью. Данные в базах данных физически хранятся на дисках в файлах. Быстрый доступ к этим данным возможен только тогда, когда у данных фиксированный размер. Это позволяет быстро перемещаться по ним и считать смещения.
Если размер данных не известен, то придется просматривать весь файл в поисках нужного значения. Чтобы избежать подобной ситуации, тип text хранится отдельно. Это тоже негативно влияет на скорость, но уже не так сильно. Если размер строки известен или он меньше какого-то значения, то предпочтительнее использовать varchar.
- varchar. Полное название типа character varying (varchar может использоваться как псевдоним). Размер строки с таким типом указывается в скобках после названия типа, например, varchar(10). Это значит, что в поле с таким типом можно записать строку длиной до 10 символов.
- text. Не требует указания размера и может содержать текст произвольной длины
Пример создания таблицы с такими типами:
Для строк в SQL используют одинарные кавычки:
Если размер строки превышает допустимую, то запрос завершится с ошибкой:
Числа
Для чисел в основном используются два типа данных: integer и bigint. Какой конкретно указывать тип, зависит от потенциального потолка значения. Ниже указаны диапазоны, допустимые в рамках этих типов:
Пример создания таблицы с такими типами:
Также, как и со строками, если попытаться вставить недопустимое значение, то запрос упадет с ошибкой
Существуют и другие типы для числовых значений. Некоторые из них нужны для производительности базы данных и экономии места, а другие для хранения точных значений, например для финансов. Полный список можно посмотреть в документации.
Даты
Типы для хранения дат отличаются друг от друга очень сильно, в первую очередь по решаемой задаче. Нам надо хранить день без конкретного времени? Это тип date. Нужно конкретный момент времени, тогда timestamp. Просто время без даты? Тогда time.
Пример создания таблицы с такими типами:
Хорошей практикой считается добавление и заполнение полей created_at и updated_at в каждую таблицу базы данных. С их помощью всегда можно узнать, когда запись создалась и обновилась.
Значения даты и времени принимаются практически в любом известном формате. Вот несколько примеров того, как можно задавать дату:
Логический тип
Содержит всего два значения: true и false. Этот тип используется для флагов:
Пример создания таблицы с такими типами:
Состояние «true» может задаваться следующими значениями:
Для состояния «false» можно использовать следующие варианты:
Недопустимое значение в колонке boolean не будет сохранено
NULL
Помимо типов данных для реальных значений, в базе существует специальное значение NULL, чтобы обозначать пустоту. Оно используется, когда у конкретного поля нет значения. Тип поля при этом не важен. Подробнее с NULL мы разберемся в следующих уроках.
Воспользуемся изученными типами данных, чтобы создать таблицу сотрудников
Выводы
В этом уроке мы познакомились с типами данных в таблице. Повторим ключевые моменты:
- В каждом столбце должны храниться однородные данные. Это необходимо для удобства и безопасности работы с данными
- Типы данных в SQL накладывают ограничения на хранящиеся данные и операции, которые можно с ними совершать
- Типы данных указываются при создании таблицы
- Попытка вставить данные неподходящего типа или значения в колонку приведет к ошибке
- Для строк используются такие типы данных как varchar и text
- Для строк необходимо использовать одинарные кавычки
- Для чисел используются типы integer, bigint, real
- Для даты и времени используют timestamp, date, time
- Для логических значений используют тип boolean. Эти значения чаще всего бывают в колонках-флагах
- Когда у поля нет конкретного значения, используют специальное значение
NULL
.png)






















