文章目录
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班'
)