pg表常用sql语句

大家好呀,我是柚子,这篇主要介绍了pg表常用sql语句~o( ̄▽ ̄)ブ


举例

假如当前在school数据库中有张student表,schema为st。


提示:以下是本篇文章正文内容,下面案例可供参考

一、创建表

create table  表名 (
  字段名  类型(长度)  约束,
  字段名  类型(长度)  约束,
  主键约束
);
权限sql;

示例:

create table st.student (
  student_id                serial                 not null,
  student_name              varchar(60)            null,
  student_sex               varchar(2)             null,
  constraint pk_student primary key (student_id)
);
grant all on schema st to st;
grant all on all tables in schema st to st;
grant all on all sequences  in schema st to st;

注:柚子发现一个小细节,以防外一,创建表前会先执行删除新表的sql语句~

二、删除表

drop table 表名;

示例:

drop table st.student;

三、增加表字段

alter table 表名 add column 字段名 字段类型;

示例:

alter table st.student add column student_age int4;

四、修改表字段名称和类型长度

alter table 表名 rename column 旧列名 to 新列名;
alter table 表名 add column 新列名 新字段类型长度;

示例:

alter table st.student rename column student_name to stu_name;
alter table st.student  add COLUMN stu_name varchar(60);

五、删除表字段

alter table 表名 drop column if exists 表字段;

示例:

alter table st.student drop column if exists stu_name;

六、修改字段的备注

COMMENT ON COLUMN 表名.字段名 IS 备注;

示例:

COMMENT ON COLUMN st.student.stu_name IS '学生姓名';

七、建立索引

1.单个字段索引

如下(示例):

CREATE INDEX "idx_stu_stuId" ON "st"."student" USING btree (  
  "student_id" COLLATE "pg_catalog"."default" "pg_catalog"."int8_ops" ASC NULLS LAST  
);

注:
“student_id”:字段名
COLLATE “pg_catalog”.“default”:使用此列的默认值
“pg_catalog”.“int8_ops”:整数类型
ASC NULLS LAST:顺序,为空放最后

2.聚合索引

如下(示例):

CREATE INDEX "idx_stu_stuId" ON "st"."student" USING btree (  
  "student_id" COLLATE "pg_catalog"."default" "pg_catalog"."int8_ops" ASC NULLS LAST,
  "student_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,
  "student_sex" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);

注:那由于这里索引使用的是B树算法,只能从第一个字段student_id进行组合,如果同时有student_id和student_name为组合条件查询会走此索引,如果是student_name和student_sex为组合条件查询则不会走此索引。

八、删除索引

DROP INDEX "模块"."索引名字";

示例:

DROP INDEX "st"."idx_stu_stuId";

注:索引是在schema层面的


总结

柚子好奇为什么有的用mysql,有的却是pg,后来知道pg的产生晚于mysql,pg自己有些内部优化,因此会更好用些。

拓展(来自百度):
B树特征:
(1)B树平衡:每个叶页面与根都由相同数量的内部页面分隔开。因此,搜索任何值都需要花费相同的时间。
(2)B树多分支:每个页面(通常为8KB)包含许多(数百个)ctid。因此,B树的深度很小,对于非常大的表,实际上可以达到4-5的深度。
(3)索引中的数据按非递减顺序排序(在页面之间和每个页面内部),并且同一级别的页面通过双向列表相互连接。因此,我们可以仅通过列表的一个方向或另一个方向获得有序数据集,而不必每次都返回到根。


╭◜◝ ͡ ◜◝╮
( ˃̶͈◡˂ ̶͈ )感觉有用的话,欢迎点赞评论呀!
╰◟◞ ͜ ◟◞╯

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柚子猫屿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值