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

猜你喜欢

转载自blog.csdn.net/twypx/article/details/86069344
今日推荐