PostgreSQL是一个关系数据库管理系统(RDBMS)。这意味着它是一个用于管理存储在关系中的数据的系统。关系本质上是表的数学术语。将数据存储在表中的概念在今天是如此普遍,以至于它看起来本质上是显而易见的,但是还有许多其他组织数据库的方法。类Unix操作系统上的文件和目录构成了分层数据库的一个例子。更现代的开发是面向对象的数据库。
每个表都是命名的行集合。给定表的每一行都有相同的命名列集,每列都是特定的数据类型。虽然列在每一行中都有固定的顺序,但重要的是要记住SQL不能以任何方式保证表中行的顺序(尽管它们可以显式排序以供显示)。
表被分组到数据库中,由单个PostgreSQL服务器实例管理的数据库集合构成数据库集群。
常用数据类型:
布尔型:
使用“boolean”或“bool”声明true或false值。
字符值:
char:拥有一个字符
char(#):保存#个字符数。将插入空间以填补任何额外的空间。
varchar(#):最多包含#个字符数。
整数值:
smallint:-32768和32767之间的整数。
int:-214783648和214783647之间的整数。
serial:自动填充的整数。
浮点值:
float(#):浮点数,至少有#个精度点。
real:8字节浮点数
numeric(#,after_dec):拥有#位数的实数,小数点后有after_dec位
日期和时间值:
date:存储日期值
time:存储时间值
timestamp:存储日期和时间值
timestamptz:存储包含时区数据的时间戳
interval:存储两个时间戳值之间的差值
几何数据:
point:存储一对定义点的坐标
line:存储一组映射出一条线的点
lseg:存储定义线段的数据
box:存储定义矩形的数据
polygon:存储定义任何封闭空间的数据
设备规格:
inet:存储IP地址
macaddr:存储设备MAC地址
表约束:
列定义可以具有约束,这些约束为列中找到的数据类型提供规则。
NOT NULL:列不能具有空值
UNIQUE:任何记录的列值都不能相同。Null始终被视为唯一值
PRIMARY KEY:上述两个约束的组合。每张表只能使用一次
CHECK:确保列中值的条件为真
REFERENCES:值必须存在于另一个表的列中
创建新表格式:
CREATE TABLE
(
字段名 数据类型 [列约束] [默认值],
...
[表约束]
);
示例:
CREATE TABLE student(
id INT NOT NULL,
name TEXT NOT NULL,
username varchar(50) unique not null
);
根据现有表创建新表:
CREATE TABLE "new_test" AS ( select * from test);
修改数据表名:
ALTER TABLE test(原有表名) RENAME TO new_test(新的表名)
新增列字段:
ALTER TABLE test ADD username varchar(50) unique not null;
删除列字段:
ALTER TABLE test DROP COLUMN type;
修改列字段名称:
alter table test RENAME gid TO id;
修改列字段类型:
ALTER TABLE test ALTER COLUMN name TYPE varchar(50);
更新字段数据:
update test set type = 0 where id = 1;