pg表常用sql语句

导读:本篇文章讲解 pg表常用sql语句,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

大家好呀,我是柚子,这篇主要介绍了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)索引中的数据按非递减顺序排序(在页面之间和每个页面内部),并且同一级别的页面通过双向列表相互连接。因此,我们可以仅通过列表的一个方向或另一个方向获得有序数据集,而不必每次都返回到根。


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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/119847.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!