Типы данных
SQL относится к категории языков с сильной типизацией. Это означает, что с любым объектом данных, представленным в PostgreSQL, связывается определенный тип, даже если на первый взгляд это и не очевидно. Тип данных одновременно определяет и ограничивает разновидности операций, которые могут выполняться с этими данными.
Типы не только ассоциируются со всеми данными, но и играют важную роль при создании таблиц. Как упоминалось в разделе "Знакомство с реляционными базами данных", таблицы состоят из одного или нескольких полей. При создании таблицы каждому полю, помимо имени, назначается определенный тип данных.
Примечание
Хотя в PostgreSQL предусмотрен достаточно широкий спектр встроенных типов данных, вы также можете определять собственные типы данных командой CREATE TYPE. За дополнительной информацией обращайтесь к описанию команды CREATE TYPE.
В табл. 3.10 перечислены базовые типы данных PostgreSQL, а также их синонимы (альтернативные имена). Также существует множество внутренних (то есть не предназначенных для нормального использования) и устаревших типов данных, которые не приводятся в таблице.
Хотя большинство типов данных PostgreSQL взято непосредственно из стандартов SQL, существуют и другие, нестандартные типы данных (например, геометрические и сетевые типы). По этой причине у типов данных PostgreSQL не всегда находятся прямые аналоги в других СУБД на базе SQL.
Таблица 3.10. Типы данных PostgreSQL.
Тип данных | Описание | Стандарт |
---|---|---|
Логические и двоичные типы данных | ||
boolean, bool | Отдельная логическая величина (true или false) | SQL99 |
bit(n) | Битовая последовательность фиксированной длины (ровно nбит) | SQL92 |
bit varying(/7),varbit(rt) | Битовая последовательность переменной длины (до n бит) | SQL92 |
Символьные типы | ||
character(n), char(n) | Символьная строка фиксированной длины (ровно n символов) | SQL89 |
character varying(n), varchar(n) | Символьная строка переменной длины (до n символов) | SQL92 |
text | Символьная строка переменной или неограниченной длины | PostgreSQL |
Числовые типы | ||
small int, int2 | 2-байтовое целое со знаком | SQL89 |
integer, int, int4 | 4-байтовое целое со знаком | SQL92 |
bigint, int8 | 8-байтовое целое со знаком, до 18 цифр | PostgreSQL |
real, float4 | 4-байтовое вещественное число | SQL89 |
double precision, floats, float | 8-байтовое вещественное число | SQL89 |
numeric(p.s), decimal (p.s) | Число из р цифр, содержащее 5 цифр в дробной части | SQL99 |
money | Фиксированная точность, представление денежных величин | PostgreSQL, считается устаревшим |
serial | 4-байтовое целое с автоматическим приращением | PostgreSQL |