PostgreSQL Поддерживает несколько типов данных, в основном целочисленные. тип、тип с плавающей запятой, произвольное значение точности, дата/тип времени、Строковый тип,двоичный тип、Логический типитип массиваждать。
Числовой тип:целочисленный тип、тип с плавающей запятой、произвольный тип точности。
целочисленный тип включает в себя: SMALLINT, INT (INTEGER), BIGINT,Эти три устройства различаются по пространству и диапазону хранения.,Различные места хранения также определяют разную эффективность запросов. Наиболее подходящий тип следует выбирать в соответствии с фактическими потребностями.,Чтобы достичь баланса между эффективностью запросов и объемом памяти.
В реальной работе во многих местах приходится использовать значения с десятичными знаками, а PostgreSQL использует числа с плавающей запятой для представления десятичных дробей. тип с плавающей Существует два типа запятой: REALиDOUBLE. ТОЧНОСТЬ. PostgreSQL также поддерживает использование стандартного синтаксиса SQL, а именно: float и float§ для объявления неточных числовых типов, где p указывает приемлемую точность. Тип REAL соответствует float(1)~float(24), DOUBLE PRECISION соответствует float(25)~float(53). Если точность не указана, она будет считаться DOUBLE. ТОЧНОСТЬ обработки.
NUMERICвыражатьпроизвольный тип точности,PostgreSQLсерединапроизвольный тип точности может хранить числа с точностью до 1000 цифр и точно выполнять вычисления. Он очень подходит для денежных сумм и других задач, требующих точных вычислений. Однако тип NUMERIC работает быстрее, чем целочисленный. типилитип с плавающей запятойнамного медленнее。Формат использования::NUMERIC(M,N)。Чтосередина,M называется точностью,Представляет общее количество цифр; N называется шкалой;,Указывает десятичные знаки. MиN определяет диапазон значений NUMERIC,Когда точность пользовательских данных превышает указанную точность,Будет выполнено округление.
Тип серийного НомераSERIALиBIGSERIAL на самом деле не тип, Это просто концептуальное удобство установки уникальных идентификаторов в таблицах. В текущей реализации следующее предложение:
CREATE TABLE tablename (colname SERIAL);
Эквивалентно:
CREATE SEQUENCE tablename_colname_seq;
CREATE TABLE tablename(
colname integer DEFAULT nextval('tablename_colname_seq') NOT NULL
);
Тип даты времени
В PostgreSQL существует множество типов данных для сохранения форматов даты и времени.,В основном включают в себя: ВРЕМЯ, ДАТА, МЕТКА ВРЕМЕНИ, ИНТЕРВАЛ. Тип даты времени Ввод аналогичен вводу строкового типа.,Необходимо указать одинарные кавычки.。каждый Тип даты время имеет допустимый диапазон значений. Когда оно превышает этот диапазон, система вставляет «ноль» в запись данных.
тип временидаTIMEиTIMEwith time зона, без часового пояса по умолчанию (т. е.: ВРЕМЯ). Допустимые методы ввода формата времени без часового пояса: ЧЧ:ММ:СС, ЧЧ:ММ, ЧЧММСС. Доступна системная функция NOW() с вводом формата времени. Ниже приведены инструкции по вводу времени и часового пояса.
Ввод времени:
04:05:06.789 ISO 8601
04:05:06 ISO 8601
04:05 ISO 8601
040506 ISO 8601
04:05 AM и 04:05 То же самое; Не влияет на стоимость
04:05 PM и То же, что и 16:05, требуется ввести час; <= 12
04:05:06.789-8 ISO 8601
04:05:06-08:00 ISO 8601
04:05-08:00 ISO 8601
040506-08 ISO 8601
04:05:06 PST часовой пояс, объявленный по имени
Ввод часового пояса:
PST Тихоокеанское стандартное время (Стандартное тихоокеанское время) Standard Time)
-8:00 ISO-8601 и PST компенсировать
-800 ISO-8601 и PST компенсировать
-8 ISO-8601 и PST компенсировать
zulu Определенный военный UTC аббревиатура
z zuluаббревиатура
Тип ДАТА используется, когда требуются только значения даты.,Формат ввода даты::YYYY-MM-DD、YYYYMMDD
。входить Тип Датированное время,можно использовать ввод данных строкового или числового типа,соответствоватьDATEФормат даты может быть。Можно использоватьCURRENT_DATE
илиNOW()
вставлять Текущая системачасмежду。
Допустимые входные данные для типа временной метки состоят из объединения даты и времени, за которыми следует необязательный часовой пояс и необязательно AD или BC. Формат ввода временной метки: ГГГГ-ММ-ДД ЧЧ:ММ:СС. Формат ввода с часовым поясом: 2019-03-22 4:05:06 -8:00.
Формат ввода типа ИНТЕРВАЛЬНЫЙ следующий:
quantity unit [quantity unit…] [direction]
Строковый тип, двоичный тип
PostgreSQL поддерживает два типа символов: текстовые строки и двоичные строки. PostgreSQL предоставляет три типа хранения строк: char, varchar и text. тип байта используется для хранения двоичных строк.
Оба типа могут хранить до N символов заданной пользователем длины. Превышение длины приведет к ошибке. Если длина сохраненных символов меньше определенной, тип CHAR заполнит пространство хранения пробелами, а тип VARCHAR сохранит только фактическую длину.
TEXT не является стандартным типом SQL. Многие системы баз данных реализуют этот тип. В PostgreSQL TEXT может хранить строки любой длины.
PostgreSQL предоставляет тип BYTEA для хранения двоичных строк. Пространство для хранения данных типа BYTEA представляет собой фактическую двоичную строку пользователя плюс 4 байта. Например, вставьте данные E’\001’ в поле file_byte таблицы файлов. Оператор SQL выглядит следующим образом:
INSERT INTO file file_byte VALUES (E'\\001);
PostgreSQL поддерживает стандартный логический тип данных SQL и имеет только два логических значения: «Истина» или «Ложь». Помимо двух значений логическое значение имеет третье состояние: «Неизвестно», которое представлено пустым состоянием SQL. Битовая строка — это строка из 1 и 0. Их можно использовать для хранения и визуализации битовых масок.
Пространство для хранения логического типа составляет 1 байт. Допустимые значения текстового ввода приемлемого значения «истина»: ИСТИНА, 't', 'истина', 'y', 'да', '1'. Допустимыми входными значениями, принимаемыми значением «ложь», являются: ЛОЖЬ, «f», «ложь», «n», «нет», «0». В качестве логических входных значений рекомендуется использовать TRUE и FALSE, совместимые со стандартами SQL. При запросе используйте буквы t и f для отображения логических данных.
Существует два типа битовых типов SQL: битовые (n) и битовые (n); данные битового типа должны точно соответствовать длине n; данные битового типа — это тип переменной длины с максимальной длиной n; значение в бит(n), то его правая часть будет усечена или дополнена нулями с правой стороны, чтобы соответствовать определенной длине в n бит, и ошибка не возникнет. Преобразует значение битовой строки в переменную битов (n). Если оно превышает n бит, оно будет усечено справа. Пример. Создайте тест, содержащий две таблицы, a(бит) и b(битовая перемена), и выполните запрос после вставки данных. Оператор SQL выглядит следующим образом:
CREATE TABLE test (a bit(3), b bit varying(5));
INSERT INTO test VALUES (B'101', B'00');
INSERT INTO test VALUES (B'10'::bit(3), B'101');
SELECT * FROM test;
PostgreSQL Позволяет определять поля как многомерные, фиксированной длины и переменной длины, множество, тип массив может быть любого базового типа или пользовательского типа (композитный множество типов в домене пока не поддерживается).
тип Определение массива именуется путем помещения квадратных скобок: [] после имени множества типов элементов. Текущая реализация PostgreSQL не налагает ограничения на длину числа, то есть: объявленная длина равна необъявленной длине множества. Также не существует принудительного множества размерностей: множество элементов определенного типа считаются принадлежащими к одному и тому же типу, независимо от их размера или размерности. Создать тип Пример поля массива выглядит следующим образом:
CREATE TABLE array_tmp(
name text,
pay_by_quarter integer[],
schedule text[][],
squares integer[3][3] --После указания длины длина по-прежнему не будет ограничена.
);
тип массиваданные вставьте значения в фигурные скобки и разделите их запятыми. Вы можете добавить двойные кавычки вокруг любого значения.,Если значение содержит запятые или фигурные скобки,Необходимо вводить в двойных кавычках. тип данных вставка данных,Вы также можете использовать конструктор ARRAY. Примеры следующие:
INSERT INTO array_tmp VALUES(
'freeoa',
'{1,2,3,4}',
'{{"include {"},{"2value"}}',
'{{111,122},{211, 222}}');
INSERT INTO array_tmp VALUES (
'liuht',
ARRAY[1,2,3,4],
ARRAY[['value 11', 'value 12'], ['value 21', 'value 22']],
ARRAY[[111,122],[211, 222]]); --Использовать конструктор ARRAY
То же, что и другие языки,В PostgreSQL доступ к множеству также осуществляется через индексные номера.,Просто индекс множества элементов в PostgreSQL начинается с 1 и заканчивается на,Формат такой:[n]
。Для одного измеренияили Больше размеровмножество,Запросмножествочастьданные Формат запроса:[Верхняя граница нижней границы: нижняя граница нижней границы]
。
-- множество запросов на позиционирование индексов и возвращаемых результатов:
SELECT name, schedule FROM array_tmp WHERE schedule[1][1]='value 11';
-- Запрос части данных многомерных данных,
-- Например, запросите 2-й и 3-й столбцы одномерного поля данных pay_by_quarter, а также 1-й столбец 1-го измерения многомерного столбца графика данных и первый столбец 2-го измерения данных. Операторы SQL и результаты запроса следующие:
SELECT pay_by_quarter[2:3],schedule[1:2][1:1] FROM array_tmp;
композитный тип
PostgreSQLкомпозитный тип описывает структуру строки и записи. По сути, это просто список имен полей и типов их данных. В PostgreSQL вы можете использовать композитный тип данных, как простой. тип。
Сводная таблица распространенных типов данных:
Создайте таблицу tmp1, в которой поля x, y, z, типы данных SMALLINT, INT, BIGINT по порядку, оператор SQL выглядит следующим образом:
CREATE TABLE tmp1 (x SMALLINT, y INT, z BIGINT );
Создайте таблицу tmp2, в которой типы данных полей x, y и z будут FLOAT(5), REAL и DOUBLE PRECISION по порядку. Оператор SQL выглядит следующим образом:
CREATE TABLE tmp2 (x FLOAT(5), y REAL, z DOUBLE PRECISION );
Создайте таблицу tmp3, в которой типы данных полей x и y — NUMERIC(5,1) и NUMERIC (5,2) соответственно. Вставьте данные 9.12 и 9.15 в таблицу. Оператор SQL выглядит следующим образом:
CREATE TABLE tmp3 ( x NUMERIC (5,1), y NUMERIC (5,2));
Оператор SQL для вставки данных в таблицу выглядит следующим образом:
INSERT INTO tmp3 VALUES(9.12, 9.15);
Глядя на оператор SQL данных в таблице, вы можете видеть, что PostgreSQL округляет вставленные данные 9.12.
Создайте таблицу данных tmp4, определите поле t с типом данных TIME и вставьте в таблицу значения «10:05:05» и «23:23».
Сначала создайте таблицу tmp4, оператор SQL выглядит следующим образом:
CREATE TABLE tmp4( t TIME );
Чтобы вставить данные в таблицу, оператор SQL выглядит следующим образом:
INSERT INTO tmp4 values('10:05:05 '), ('23:23');
Вставьте значение «101112» в таблицу tmp4, и оператор SQL будет выглядеть следующим образом:
INSERT INTO tmp4 values('101112');
Вы также можете использовать функции системной даты для вставки значений в столбцы поля ВРЕМЯ.
Вставьте текущее системное время в таблицу tmp4. Оператор SQL выглядит следующим образом:
Поскольку время, полученное функцией времени, соответствует часовому поясу, вам необходимо сначала изменить атрибуты поля, указав время с типом часового пояса:
ALTER TABLE tmp4
ALTER COLUMN t TYPE time without time zone;
Удалить данные из таблицы:
DELETE FROM tmp4;
Чтобы вставить данные в таблицу, оператор SQL выглядит следующим образом:
INSERT INTO tmp4 values (CURRENT_TIME) ,(NOW());
Создайте таблицу данных tmp5, определите поле d с типом данных DATE и вставьте в таблицу даты строкового формата «ГГГГ-ММ-ДД» и «ГГГГММДД». Оператор SQL выглядит следующим образом:
Сначала создайте таблицу tmp5:
CREATE TABLE tmp5(d DATE);
Вставьте в таблицу даты в формате «ГГГГ-ММ-ДД» и «ГГГГММДД»:
INSERT INTO tmp5 values('1998-08-08'),('19980808'),('20101010');
Вставьте даты строкового формата «ГГ-ММ-ДД» и «ГГММДД» в таблицу tmp5. Оператор SQL выглядит следующим образом: первый Удалить данные из таблицы:
DELETE FROM tmp5;
Вставьте в таблицу даты в формате «ГГ-ММ-ДД» и «ГГММДД»:
INSERT INTO tmp5 values('99-09-09'),( '990909'), ( '000101') ,( '121212');
Вставьте текущую системную дату в таблицу tmp5. Оператор SQL выглядит следующим образом:
первый Удалить данные из таблицы:
DELETE FROM tmp5;
Вставьте текущую системную дату в таблицу:
INSERT INTO tmp5 values(NOW() );
Функция NOW() возвращает значение даты и времени, при этом при сохранении в базе данных сохраняется только часть даты.
TIMESTAMPФормат датыYYYY-MM-DD HH:MM:SS
。на хранениичаснуждаться8байты,Поэтому при вставке данных,Убедитесь, что оно находится в пределах допустимого диапазона значений.
Создайте таблицу данных tmp7, определите поле ts с типом данных TIMESTAMP, вставьте значение «1996-02-02 02:02:02» в таблицу NOW(), оператор SQL выглядит следующим образом:
Создайте таблицы и поля данных:
CREATE TABLE tmp7( ts TIMESTAMP);
Вставляем данные в таблицу:
INSERT INTO tmp7 values ('1996-02-02 02:02:02'),
( NOW() );
Создайте таблицу данных tmp7h, определите поле th, тип данных которого — TIME, и вставьте в таблицу значения «10:05:05» и «23:23».
Сначала создайте таблицу tmp7h, оператор SQL выглядит следующим образом:
CREATE TABLE tmp7h( t TIME with time zone);
Чтобы вставить данные в таблицу, оператор SQL выглядит следующим образом:
INSERT INTO tmp7h values('10:05:05 PST '), ('10:05:05');
Создайте таблицу tmp8, определите типы данных полей ch и vch как CHARACTER (4), CHARACTER VARYING (4) и вставьте в таблицу строки разной длины. Оператор SQL выглядит следующим образом:
Создайте таблицу tmp8:
CREATE TABLE tmp8(
ch CHARACTER (4),
vch CHARACTER VARYING (4)
);
Введите данные:
INSERT INTO tmp8 VALUES('ab', 'ab'),
('abcd', 'abcd'),
('ab ', 'ab ');
Результаты запроса:
SELECT concat('(', ch, ')'), concat('(',vch,')') FROM tmp8;
Создайте таблицу tmp9, определите тип данных поля как TEXT и вставьте в таблицу строки разной длины. Оператор SQL выглядит следующим образом:
Создайте таблицу tmp9:
CREATE TABLE tmp9(te TEXT);
Введите данные:
INSERT INTO tmp9 VALUES('ab'),('abcd'),('ab ');
Результаты запроса:
SELECT concat('(', te, ')') FROM tmp9;
Создайте таблицу tmp11, определите поле b типа BYTEA и вставьте в таблицу логические данные «ИСТИНА» и «ЛОЖЬ».
Сначала создайте таблицу tmp11, оператор SQL выглядит следующим образом:
CREATE TABLE tmp11( b BOOLEAN );
Вставьте данные:
INSERT INTO tmp11 VALUES(TRUE),
(FALSE),
('y'),
('no'),
('0');
Создайте таблицу tmp12 и определите тип. Поле bt массива вставляет в таблицу несколько значений.
Сначала создайте таблицу tmp12, оператор SQL выглядит следующим образом:
CREATE TABLE tmp12( bt int[]);
Вставьте данные:
INSERT INTO tmp12 VALUES('{{1,1,1},{2,2,2},{3,3,3}}');
Введение в общие операторы
Включая сложение (+), вычитание (-), умножение (*), деление (/), остаток (или операцию по модулю, %, возврат остатка)
Пример. Создайте таблицу tmp14, определите поле num с типом данных INT, вставьте значение 64 и выполните арифметические операции над значением num:
Сначала создайте таблицу tmp14 и введите следующий оператор:
CREATE TABLE tmp14 ( num INT);
Вставьте данные 64 в поле номер:
INSERT INTO tmp14 VALUES (64);
Затем сложите и вычтите числовые значения:
SELECT num, num+10, num-10, num+5-3, num+36.5 FROM tmp14;
Выполните операции умножения и деления числа в таблице tmp14.
SELECT num, num *2, num /2, num/3, num%3 FROM tmp14;
Разделите число на 0.
SELECT num, num / 0, num %0 FROM tmp14;
Используйте "=" для оценки равенства. Оператор SQL выглядит следующим образом:
SELECT 1=0, '2'=2, 2=2,'b'='b', (1+3) = (2+1),NULL=NULL;
использовать‘<>’и‘!=’Процесс противоречивыйждатьсуждение,Оператор SQL выглядит следующим образом:
SELECT 'good'<>'god', 1<>2, 4!=4, 5.5!=5, (1+3)!=(2+1),NULL<>NULL;
использовать‘<=’делать сравнительные суждения,Оператор SQL выглядит следующим образом:
SELECT 'good'<='god', 1<=2, 4<=4, 5.5<=5, (1+3) <= (2+1),NULL<=NULL;
использовать‘<’делать сравнительные суждения,Оператор SQL выглядит следующим образом:
SELECT 'good'<'god', 1<2, 4<4, 5.5<5, (1+3) < (2+1),NULL<NULL;
использовать‘>=’делать сравнительные суждения,Оператор SQL выглядит следующим образом:
SELECT 'good'>='god', 1>=2, 4>=4, 5.5>=5, (1+3) >= (2+1),NULL>=NULL;
использовать‘>’делать сравнительные суждения,Оператор SQL выглядит следующим образом:
SELECT 'good'>'god', 1>2, 4>4, 5.5>5, (1+3) > (2+1),NULL>NULL;
Используйте BETWEEN AND, чтобы определить диапазон значений, и введите следующий оператор SQL:
SELECT 4 BETWEEN 2 AND 5, 4BETWEEN 4 AND 6,12 BETWEEN 9 AND 10;
Используйте BETWEEN AND для сравнения строк и введите следующий оператор SQL:
SELECT 'x' BETWEEN 'f' AND 'g', 'b' BETWEEN 'a' AND 'c';
Используйте оператор LEAST для определения размера. Инструкция SQL выглядит следующим образом:
SELECT least(2,0), least(20.0,3.0,100.5), least('a','c','b'),least(10,NULL);
Используйте оператор GREATEST для определения размера. Инструкция SQL выглядит следующим образом:
SELECT greatest(2,0), greatest(20.0,3.0,100.5), greatest('a','c','b'),greatest(10,NULL);
Используйте оператор NOT IN для принятия решения. Оператор SQL выглядит следующим образом:
SELECT 2 IN (1,3,5,9), 'thks' IN ('lius','thks');
Используйте оператор NOT IN для принятия решения. Оператор SQL выглядит следующим образом:
SELECT 2 NOT IN (1,3,5), 'thks' NOT IN ('jsi','thks');
В операции, когда существует значение NULL, оператор SQL выглядит следующим образом:
SELECT NULL IN (1,3,null),'abc' IN ('abc', null, 'ded');
Используйте оператор LIKE для выполнения операций сопоставления строк. Оператор SQL выглядит следующим образом:
-- % соответствует любому количеству символов, _ соответствует только одному символу;
SELECT 'stud' LIKE 'stud', 'stud' LIKE 'stu_','stud' LIKE '%d','stud' LIKE 't___', 's' LIKE NULL;
Используйте неоператор «НЕ» для вынесения логических суждений соответственно. Оператор SQL выглядит следующим образом:
SELECT NOT '1', NOT 'y', NOT '0', NOT NULL, NOT 'n';
Используйте оператор «И» для вынесения логических суждений. Оператор SQL выглядит следующим образом:
SELECT '1'AND 'y','1'AND '0','1'AND NULL, '0'AND NULL;
Используйте оператор ИЛИ «ИЛИ» для вынесения логических суждений. Оператор SQL выглядит следующим образом:
SELECT '1' OR 't' OR '0', '1'OR 'y','1' OR NULL, '0'OR NULL, NULL OR NULL;
Поле TEXT в PostgreSQL может хранить файлы с большими объемами данных. Эти типы данных можно использовать для хранения изображений, звуков или текстового содержимого большой емкости, например веб-страниц или документов. Однако обработка этих полей снизит производительность базы данных. Если в этом нет необходимости, вы можете сохранить только путь к файлу.
Справочная статья: https://cuiyonghua.blog.csdn.net/article. /details/105847406