postgresql常见的基础数据类型
参考:https://www.runoob.com/postgresql/postgresql-data-type.html
数值型
- integer(int):整形,4个字节
- real:浮点型,4个字节 ,可以有小数点;有点像float
- serial:序列型;通常给id设置为serial,让它可以自增
文字型
- char:字符型;
- varchar:通常用varchar
- text:大文本
布尔型
- boolean
日期型
- date:年月日
- time:时分秒
- timestamp:年月日+时分秒
特色类型:
- Array:可以将表字段类型设为Array数组类型,在一个字段里边存一组数据
- JSON型
- XML型
表约束
常见的表约束有以下几种:
- not null:不能为空;注意,空字符串“”是表示有值的,它不是not null
- unique:在所有数据中值必须唯一
- check:字段设置条件
- default:字段默认值
- primary key:主键,不能为空,且不能重复。它自带两个约束:not null,unique
比如以下例子,创建一个数据表posts
create table posts(
id serial primary key,
title varchar(255) not null,
content text check(length(content)>3),
is_draft boolean default true,
is_delete boolean default false,
created_date timestamp default 'now'
)
好,现在开始测试。
可以看到报错了,因为content长度必须大于3.注意,这里title虽然是空字符串“”,但是它不是not null,正如下面的例子是可以成功的
但是如果直接把值设为null的话,就会报错,如下,因为表设计时title字段是not null 类型
当输入的title为not null类型,content字段的内容长度也满足条件,即大于3时,就可以正常执行,如下
(注意,上面的id号没有连续是因为我在测试过程中删掉了一些记录)