Учебно-практическое пособие москва 2017 ббк


 Типы данных СУБД PostgreSQL



Pdf көрінісі
бет33/243
Дата21.07.2022
өлшемі3,05 Mb.
#147663
түріУчебно-практическое пособие
1   ...   29   30   31   32   33   34   35   36   ...   243
Байланысты:
Язык SQL. Базовый курс

4 Типы данных СУБД PostgreSQL
После первоначального знакомства с языком SQL имеет смысл немного упорядочить получен-
ные вами знания. Речь идет о типах данных, применяемых в СУБД PostgreSQL. Вообще, типы
данных — это одно из базовых понятий любого языка программирования, и язык SQL в этом
плане не является исключением.
PostgreSQL имеет очень разнообразный набор встроенных типов данных, т. е. тех
типов, которые СУБД предоставляет в распоряжение пользователя, как говорят, по
умолчанию. Мы намеренно употребили здесь термин «встроенные», поскольку поль-
зователь имеет возможность создавать и свои собственные типы данных, которые
затем можно включить в систему и использовать их так же, как и встроенные. Такая
возможность адаптации системы типов данных к конкретным ситуациям является
одной из отличительных черт PostgreSQL.
В этой главе мы расскажем лишь о самых основных типах данных, поскольку в вашем
распоряжении всегда имеется полная документация. Настоящее учебное пособие не
является ее заменой, оно призвано лишь помочь вам сделать первые шаги в освоении
богатого мира типов данных PostgreSQL.
Типы данных объединены в группы, в рамках этих групп они имеют некоторые общие
свойства, но также они имеют и различия.
4.1 Числовые типы
Группа числовых типов данных включает в себя целый ряд разновидностей: цело-
численные типы, числа фиксированной точности, типы данных с плавающей точкой,
последовательные типы (serial).
В составе целочисленных типов находятся следующие представители: smallint,
integer, bigint. Если атрибут таблицы имеет один из этих типов, то он позволяет хра-
нить только целочисленные данные. При этом перечисленные типы различаются
по количеству байтов, выделяемых для хранения данных. В PostgreSQL существуют
псевдонимы для этих стандартизированных имен типов, а именно: int2, int4 и int8.
Число байтов отражается в имени типа.
При выборе конкретного целочисленного типа принимают во внимание диапазон
допустимых значений и затраты памяти. Зачастую тип integer считается оптималь-
ным выбором с точки зрения достижения компромисса между этими показателя-
ми.
Числа фиксированной точности представлены двумя типами — numeric и decimal.
Однако они являются идентичными по своим возможностям. Поэтому мы будем про-
водить изложение на примере типа numeric. Для задания значения этого типа ис-
пользуются два базовых понятия: масштаб (scale) и точность (precision). Масштаб по-
казывает число значащих цифр, стоящих справа от десятичной точки (запятой). Точ-
ность указывает общее число цифр как до десятичной точки, так и после нее. Напри-
мер, у числа 12.3456 точность составляет 6 цифр, а масштаб — 4 цифры.
37


Параметры этого типа данных указываются в скобках: numeric(точность, масштаб).
Например, numeric(6, 2).
Его главное достоинство — это обеспечение
точных
результатов при выполнении вы-
числений, когда это, конечно, возможно в принципе. Это оказывается возможным
при выполнении сложения, вычитания и умножения. Числа типа numeric могут хра-
нить очень большое количество цифр: 131072 цифры — до десятичной точки (запя-
той), 16383 — после точки. Однако нужно учитывать, что такая точность достигается
за счет замедления вычислений по сравнению с целочисленными типами и типами
с плавающей запятой. При этом для хранения числа затрачивается больше памяти,
чем в случае целых чисел.
Данный тип следует выбирать для хранения денежных сумм, а также в других случа-
ях, когда требуется гарантировать точность вычислений.
Представителями типов данных с плавающей точкой являются real и double precision.
Они представляют собой реализацию стандарта IEEE «Standard 754 for Binary Floating-
Point Arithmetic». Тип данных real может представить числа в диапазоне, как ми-
нимум, от 1E-37 до 1E+37 с точностью не меньше 6 десятичных цифр. Тип double
precision имеет диапазон значений примерно от 1E-307 до 1E+308 с точностью не
меньше 15 десятичных цифр. При попытке записать в такой столбец слишком боль-
шое или слишком маленькое значение будет генерироваться ошибка. Если точность
вводимого числа выше допустимой, то будет иметь место округление значения. А вот
при вводе очень маленьких чисел, которые невозможно представить значениями, от-
личными от нуля, будет генерироваться ошибка потери значимости, или исчезнове-
ния значащих разрядов (an underflow error).
При работе с числами таких типов нужно помнить, что сравнение двух чисел с пла-
вающей точкой на предмет равенства их значений может привести к неожиданным
результатам. Например:


Достарыңызбен бөлісу:
1   ...   29   30   31   32   33   34   35   36   ...   243




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет