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


SELECT 0.1::real * 10 = 1.0::real



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

SELECT 0.1::real * 10 = 1.0::real;
?column?
----------
f
(1 строка)
В дополнение к обычным числам эти типы данных поддерживают и специальные
значения Infinity (бесконечность), -Infinity (отрицательная бесконечность) и NaN (не
число).
PostgreSQL поддерживает также тип данных float, определенный в стандарте SQL. В
объявлении типа может использоваться параметр: float(p). Если его значение лежит
в диапазоне от 1 до 24, то это будет равносильно использованию типа real, а если же
значение лежит в диапазоне от 25 до 53, то это будет равносильно использованию
типа double precision. Если же при объявлении типа float параметр не используется,
то это также будет равносильно использованию типа double precision.
Последним из числовых типов является тип serial. Однако он фактически реализован
не как настоящий тип, а просто как удобная замена целой группы SQL-команд. Тип
serial удобен в тех случаях, когда требуется в какой-либо столбец вставлять уникаль-
ные целые значения, например, значения суррогатного первичного ключа.
Синтаксис для создания столбца типа serial таков:
38


CREATE TABLE tablename ( colname SERIAL );
Эта команда эквивалентна следующей группе команд:
CREATE SEQUENCE tablename_colname_seq;
CREATE TABLE tablename
( colname integer NOT NULL
DEFAULT nextval( 'tablename_colname_seq' )
);
ALTER SEQUENCE tablename_colname_seq
OWNED BY tablename.colname;
Для пояснения вышеприведенных команд нам придется немного забежать впе-
ред. Одним из видов объектов в базе данных являются так называемые последова-
тельности. Это, по сути, генераторы уникальных целых чисел. Для работы с этими
последовательностями-генераторами используются специальные функции. Одна из
них — это функция nextval(), которая как раз и получает очередное число из последо-
вательности, имя которой указано в качестве параметра функции. В команде CREATE
TABLE ключевое слово DEFAULT предписывает, чтобы СУБД использовала в качестве
значения по умолчанию то значение, которое формирует функция nextval(). Поэто-
му если в команде вставки строки в таблицу INSERT INTO не будет передано значение
для поля типа serial, то СУБД обратится к услугам этой функции. В том случае, когда в
таблице поле типа serial является суррогатным первичным ключом, тогда нет необ-
ходимости указывать явное значение для вставки в это поле.
В заключение скажем, что кроме типа serial существуют еще два аналогичных типа:
bigserial и smallserial. Им фактически, за кадром, соответствуют типы bigint и smallint.
Поэтому при выборе конкретного последовательного типа нужно учитывать предпо-
лагаемое число строк в таблице и частоту удаления и вставки строк, поскольку даже
для небольшой таблицы может потребоваться большой диапазон, если операции уда-
ления и вставки строк выполняются часто.


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




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

    Басты бет