大家好呀,我是柚子,这篇主要介绍了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