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')。

都是相互學習得過程,但願你們可以共同交流,共同進步,謝謝。

相關文章
相關標籤/搜索