创建表时,每一列都必须使用数据类型。
PostgreSQL 中主要有三类数据类型:
- 数值数据类型
- 字符串数据类型
- 日期/时间数据类型
数据类型
数值
常见数值类型包括:
名字 | 存储长度 | 描述 | 范围 |
---|---|---|---|
smallint | 2字节 | 小范围整数 | -32768 到 +32767 |
integer | 4字节 | 常用的整数 | -2147483648 到 +2147483647 |
bigint | 8字节 | 大范围整数 | -9223372036854775808 到 +922337203685477580 |
decimal | 可变长 | 用户指定的精度,精确 | 小数点前131072 位;小数点后 16383 位 |
numeric | 可变长 | 用户指定的精度,精确 | 小数点前 131072 位;小数点后 16383 位 |
real | 4字节 | 可变精度,不精确 | 6 位十进制数字精度 |
double | 8字节 | 可变精度,不精确 | 15 位十进制数字精度 |
字符串类型
- char(size),character(size):固定长度字符串,size 规定了需存储的字符数,由右边的空格补齐;
- varchar(size),character varying(size):可变长度字符串,size 规定了需存储的字符数;
- text:可变长度字符串
日期/时间
表示日期或时间的数据类型有:
- timestamp:日期和时间
- date:日期,无时间
- time:时间
其他数据类型还有布尔值 boolean(true或false),货币数额 money 和几何数据等。
表基础操作
创建表
-- 创建的表 ID 是主键且自增
mydb=# create table tb_test(id serial primary key, note varchar(200));
CREATE TABLE
mydb=#
PostgreSQL 使用序列来标识字段的增长,数据类型有 smallserial、serial 和 bigserial。这些属性类似于 MySQL 数据库支持的 AUTO_INCREMENT 属性。
smallserial、serial 和 bigserial 范围:
伪类型 | 存储大小 | 范围 |
---|---|---|
smallserial | 2字节 | 1 到 32,767 |
serial | 4字节 | 1 到 2,147,483,647 |
bigserial | 8字节 | 1 到 922,337,2036,854,775,807 |
添加数据
往创建的 tb_test 表中,添加一条记录
mydb=# insert into tb_test(note) values('这是一个笔记...');
INSERT 0 1
mydb=#
查询表数据
查看 tb_test 表中,当前有哪些数据
mydb=#
mydb=# select * from tb_test;
id | note
----+-----------------
1 | 这是一个笔记...
(1 row)
mydb=#
删除表数据
删除表数据SQL如下:
-- 删除之前,查询当前表中的数据
mydb=# select * from tb_test;
id | note
----+----------------------
1 | 这是一个笔记...
2 | 这是一个笔记...2222
3 | 这是一个笔记...3333
(3 rows)
mydb=# -- 删除表中的数据.
mydb=# delete from tb_test where id = 2;
DELETE 1
mydb=#
mydb=# -- 删除之后,查看表中的数据
mydb=# select * from tb_test;
id | note
----+----------------------
1 | 这是一个笔记...
3 | 这是一个笔记...3333
(2 rows)
mydb=#
查看表结构
可以查看 tb_test 表的结构,使用 \d ,类似 MySQL数据库 中的 desc
mydb=# \d tb_test
Table "public.tb_test"
Column | Type | Modifiers
--------+------------------------+------------------------------------------------------
id | integer | not null default nextval('tb_test_id_seq'::regclass)
note | character varying(200) |
Indexes:
"tb_test_pkey" PRIMARY KEY, btree (id)
mydb=#
mydb=#