PostgreSQL基础知识分享

一、架构sql

PostgreSQL是一个关系数据库,采用c/s架构。一个PostgreSQL会话包括:数据库

服务端进程——postgres:用于管理数据库文件,并接受来自客户端的数据库链接, 同时代替客户端执行数据库操做。
客户端json

二、命令数组

(1)建立数据库网络

createdb -U postgres mydb

(2)链接数据库架构

psql -U postgres mydb

(3)元命令(内部命令)函数

\h 能够查看SQL命令语法上的说明,后面不加SQL命令,会列出全部SQL命令 \? 能够查看全部的元命令 \l 查看全部数据库 \d 能够查看数据库的全部表 \c 链接到其余数据库 \q 退出psql

三、经常使用数据类型
3.1 数值类型post

名称  别名 描述 取值范围
smallint int2 有符号位2字节整数 -32768 到 +32767
integer int, int4 有符号位4字节整数 -2147483648 到 +2147483647
bigint int8 有符号位8字节整数 -9223372036854775808 到 +9223372036854775807
smallserial serial2 自增加2字节整数 1 到 +32767
serial searial4 自增加4字节整数 1 到 +2147483647
bigserial int2 自增加八字节整数 1 到 9223372036854775807
real float4 4字节单精度浮点数  
double precision float8 8字节双精度浮点数  
numeric [(p, s)] decimal [(p, s)]  自定义精度浮点数  


:smallserial, serial, bigserial并非真正的数据类型,它们只是便于快速建立自增加列的符号(相似于MySQL的AUTO_INCREMENT)。学习

CREATE TABLE test_table ( id SERIAL );


与下面的SQL等价ui

CREATE SEQUENCE test_table_id_seq; CREATE TABLE test_table ( id integer NOT NULL DEFAULT nextval('test_table_id_seq') ); ALTER SEQUENCE test_table_id_seq OWNED BY test_table.id;

3.2 字符类型

名称 别名 描述
character [(n)] char [(n)] 定长字符串
character varying [(n)] varchar [(n)] 变长字符串
text   变长字符串

 

3.3 日期类型

名称 别名 描述
date   日期,包含年月日
time [()] [without time zone]   时间(不包含时区)(不包括日期)
time [()] with time zone timetz 时间,包含时区(不包括日期)
timestamp [()] [without time zone]   日期及时间(不包含时区)
timestamp [()] with time zone   日期及时间(包含时区)
interval [fields] [()]   时间间隔

 

3.4 金钱类型

名称 别名 描述
money   金额

 

3.5 布尔类型

名称 别名 描述
bool   布尔能够用"t, T, true, TRUE, y, yes, on, f, F, false, FALSE, n, no, off, 1, 0.....""表示

 

3.6 二进制字符串

名称 别名 描述
bytea   变长的二进制字符串

 

3.7 网络地址

名称 别名 描述
cidr   IPv4/IPv6网络地址
inet   IPv4/IPv6主机和网络
macaddr   mac地址,‘08:00:2b:02:03’,‘08-00-2b-01-02-03’…

 

:IPv4形式均为adress/y, inet不写y默认为32, cidr不写y按照IP地址分类来添加默认掩码。

3.8 bit串类型

名称 别名 描述
bit [(n)]   定长bit串
bit varying [(n)] varbit [(n)] 变长bit串

 

3.9 文字搜索类型

tsvector有序的无重复的语义集合。
tsquery存储用来搜索的语义字段,会处理逻辑运算。

3.10 其余字段

名称 别名 描述
json   json 数据
uuid   uuid
xml   xml
数组   数组

 

四、系统保留列

PostgreSQL的每张表都有系统保留列,都是系统隐式定义的。用户自定义的字段名不能与它们冲突。

名称 描述
oid  
tableoid   
xmin   
cmin   
xmax   
cmax   
ctid   

 

五、 MySQL与PostgreSQL一些差别

(1) 注释符号不一样:MySQL使用#进行注释,PG使用— —。

(2) 引用值的符号不一样:MySQL使用单引号或者双引号引用值(如,WHERE name = "john");PG只使用单引号引用值(WHERE name = 'john'),双引号用来引用系统标识符,字段名,表名等等。

(3) MySQL使用反引号来引用系统标识。

(4) PG针对字符串比较是大小写敏感的,"Smith"和"smith"不同。合理使用转换函数,如lower();大小写不敏感的操做符,如like。

(5) PG中的数据库,表,字段和列名称与大小写无关,默认都会转化成小写的,除非使用双引号建立它们,在这种状况下会区分大小写;在MySQL中,表名称能够区分大小写,也能够不区分大小写,具体取决于使用的操做系统。

(6) MySQL使用C语言运算符进行逻辑运算(即'foo'||'bar'表示'foo'或'bar','foo'&&'bar'表示'foo'和'bar');PG使用|| 用于字符串链接('foo'||'bar'='foobar')。

都是相互学习得过程,但愿你们可以共同交流,共同进步,谢谢。

相关文章
相关标签/搜索