PostgreSql学习整合笔记

PostgreSql

1、概念

PostgreSQL是一个关系数据库管理系统(RDBMS)。这意味着它是一个用于管理存储在关系中的数据的系统。关系本质上是表的数学术语。将数据存储在表中的概念在今天是如此广泛,以致于它看起来本质上是显而易见的,可是还有许多其余组织数据库的方法。类Unix操做系统上的文件和目录构成了分层数据库的一个例子。更现代的开发是面向对象的数据库。数据库

每一个表都是命名的行集合。给定表的每一行都有相同的命名列集,每列都是特定的数据类型。虽然列在每一行中都有固定的顺序,但重要的是要记住SQL不能以任何方式保证表中行的顺序(尽管它们能够显式排序以供显示)。服务器

表被分组到数据库中,由单个PostgreSQL服务器实例管理的数据库集合构成数据库集群。spa

2、建立新表

经常使用数据类型:操作系统

布尔型code

使用“boolean”“bool”声明truefalse值。对象

字符值:排序

char:拥有一个字符

char(#):保存#个字符数。将插入空间以填补任何额外的空间。

varchar(#):最多包含#个字符数。

整数值:开发

smallint:-32768和32767之间的整数。

int:-214783648和214783647之间的整数。

serial:自动填充的整数。

浮点值:数学

float(#):浮点数,至少有#个精度点。

real:8字节浮点数

numeric(#,after_dec):拥有#位数的实数,小数点后有after_dec位

日期和时间值:table

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;