1. 程式人生 > >PostgreSQL學習筆記(三):表操作

PostgreSQL學習筆記(三):表操作

文章目錄

1 表操作

表操作我們直接在管理工具上進行。

如果在工具連線過程中出現 no pg_hba.conf entry for host...,則需要修改 /var/lib/pgsql/11/data/pg_hba.conf 檔案,將錯誤資訊裡面提到的IP加入到配置檔案IPV4裡,設定為信任trust。

1.1.1 建立表

標準的SQL語句,與MySQL相同,略。

1.1.2 修改表名

alter table <tablename> rename to <newtablename>

例如:

alter
table tb_user rename to tb_user_1;

1.1.3 刪除表

drop table [if exists] <tablename>

例如:

drop table [if exists] tb_user;

1.1.4 欄位操作

1.1.4.0 欄位型別
型別 說明 所需位元組
SMALLINT 小範圍整數 2byte
INT 普通整數 4byte
BIGINT 大範圍整數 8byte
FLOAT(N) n表示小數範圍 4byte
REAL 至少6位十進位制數字精度 4byte
DOUBLE PRECISION 至少15位十進位制數字精度/FLOAT 8byte
NUMBERIC(M,N) M代表位數,N代表小數位數
例如68.32,M=4,N=2
TIME 時間,格式HH:MM:SS
輸入值可以是23:01:02,也可以是230102
也可以是當前時間now()或者CURRENT_TIME
8byte
DATE 日期,格式YYYY-MM-DD/YY-MM-DD
輸入值可以是2018-12-21,也可以是20181221
也可以是當前日期now()或者CURRENT_TIME
4byte
TIMESTAMP 日期時間,格式YYYY-MM-DD HH:MM:SS 8byte
CHAR(N) 固定長度字串,不足補空白
VARCHAR(N) 可變長度字串,有長度限制
TEXT 可變長度字串,無長度限制
BYTEA 二進位制字串
BOOLEAN 布林型別
XXX[] 陣列型別,XXX
  • 整數正常使用INT即可,小數使用浮點數;
  • CHAR固定長度,速度快,但是佔空間。
1.1.4.1 修改欄位型別
alter table <tablename> alter column <columnname> type <newtype>;

例如:

alter table tb_class alter column classname type varchar(40);
1.1.4.2 修改欄位名
alter table <tablename> rename <columnname> to <newcolumnname>;

例如:

alter table tb_class rename classname to classname1;
1.1.4.3 新增欄位
alter table <tablename> add column <columnname> <type>

例如:

alter table tb_class add column teacher varchar(20);
1.1.4.4 刪除欄位
alter table <tablename> drop <columnname>

例如:

alter table tb_class drop teacher;
1.1.4.5 主鍵約束
  • 第一種情況

    CREATE TABLE tb_user(
    	userid VARCHAR(20) PRIMARY KEY, --主鍵約束
    	username VARCHAR(20),
    	PASSWORD VARCHAR(20),
    	classid varchar(20),
    )
    
  • 第二種情況

    create table tb_class(
    	classid varchar(20),
    	classname varchar(20),
    	PRIMARY key(classid) --主鍵約束
    )
    
  • 第三種情況

    alter table tb_user add primary key(userid);
    
  • 聯合主鍵

    create table tb_class(
    	classid varchar(20),
    	classname varchar(20),
    	PRIMARY key(classid,classname)
    )
    
1.1.4.6 外來鍵約束
  • 第一種情況

    CREATE TABLE tb_user(
    	userid VARCHAR(20),
    	username VARCHAR(20),
    	PASSWORD VARCHAR(20),
    	classid varchar(20),
    	FOREIGN KEY(classid) REFERENCES tb_class(classid)
    )
    
  • 第二種情況

    CREATE TABLE tb_user(
    	userid VARCHAR(20),
    	username VARCHAR(20),
    	PASSWORD VARCHAR(20),
    	classid varchar(20),
    	CONSTRAINT fk_user_classid FOREIGN KEY(classid) REFERENCES tb_class(classid)
    )
    
  • 第三種情況

    alter table tb_user add CONSTRAINT fk_user_classid FOREIGN KEY(classid) REFERENCES tb_class(classid);
    
  • 刪除外來鍵約束

    alter table tb_user drop CONSTRAINT fk_user_classid;
    
1.1.4.7 唯一約束
  • 第一種情況

    create table tb_class(
    	classid varchar(20),
    	classname varchar(20) UNIQUE
    )
    
  • 第二種情況

    create table tb_class(
    	classid varchar(20),
    	classname varchar(20),
    	CONSTRAINT UNQ_CLASSNAME UNIQUE(classname)
    )
    
    
  • 第三種情況

    alter table tb_class add CONSTRAINT UNIQ_CLASSNAME UNIQUE(classname);
    
1.1.4.8 非空約束
create table tb_class(
	classid varchar(20),
	classname varchar(20) NOT null
)
1.1.4.9 預設值
create table tb_class(
	classid varchar(20),
	classname varchar(20) default '一年級1班'
)