PostgreSQL學習筆記(三):表操作
阿新 • • 發佈:2019-01-08
文章目錄
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班'
)