相关文章推荐
儒雅的豆芽  ·  react + antd ...·  2 年前    · 
腼腆的八宝粥  ·  websocketsharp.websock ...·  2 年前    · 

日期:2019-2-12

新年快乐,开工大吉!

表名 用途
pg_attribute 列信息
pg_class 表信息
pg_type 数据类型
pg_constraint 约束,如主键

-----------------------------------------------------
# pg_attribute 列信息
## attrelid 表名,关联 pg_class.oid
## atttypid 数据类型,关联 pg_type.oid
## attlen 数据长度,同 pg_type.typlen
## attname 列名
## attnum 列序号
## attnotnull 列是否空,true:not null;false:null

# pg_class 表信息
## relname 表名


# pg_type 数据类型
## typename 数据类型名

# pg_constraint 约束
## contype 'p'主键
## conkey 是一个数组,如{1}或者{1,2},可以用unnest(conkey)函数将数组分开,然后关联pg_attribute.attnum 获取键对应的列
## conrelid 关联 pg_class.oid

样例sql(未测试),
如查询某表的表名、列、序号、是否主键、是否非空以及数据类型,数据类型长度

select c.relname,a.attname,a.attnum,case when conkey is not null then 'PK' else '' end,case a.attnotnull when TRUE then 'not null' ELSE '' END, d.typename, pg_catalog.format_type(a.atttypeid,a.atttypmod) from pg_attribute a inner join pg_class c on a.attrelid=c.oid left join pg_type d on a.atttypid=d.oid left join (select conrelid, UNNEST(conkey) conkey from pg_constraint where contype='p') b on  c.oid=b.conrelid and a.attnum=b.conkey where c.relname='xx' and a.attnum>0
order by a.attnum;

select ns.nspname, cl.relname as table_name, cast(obj_description(cl.relfilenode,'pg_class') as varchar) as " 注释", a.attname as column_name, format_type(a.atttypid,a.atttypmod) as data_type, 文章目录第一次登陆PG 查看 数据库版本 查看 所有PG库创建数据库使用数据库删除数据库Table 数据 创建Table 查看 当前库中所有 查看 结构修改 名删除 引用操作系统文件脚本 \i 第一次登陆PG 像oracle一样, 虽然我们安装数据库的时候使用的是root超级用户, 但是一切的数据库操作都是受用 post gres 这个系统普通用户: su - post gres 查看 数据库版本 [ post gres@pg01 ~]$ psql --version psql ( PostgreSQL ) 12.0 查看 所有PG库 这点很像myql的结构, 一共有三个数据库 post gres 系统库 剩下的两个 B树索引类型可以说是使用的最广泛的索引了,在 PostgreSQL 中可以在任何数据类型上使用btree索引,支持排序,支持大于、小于、等于、大于或等于、小于或等于的搜索。 B树具有一些重要的特征: B树是平衡的,也就是说,每个叶页面与根都由相同数量的内部页面分隔开。因此,搜索任何值都需要花费相同的时间。 B树是多分支的,即每个页面(通常为8 KB)包含许多(数百个)ctid。因此,B树的深度很小,对于非常大的 ,实际上可以达到4–5的深度。 索引中的数据按非递减顺序排序(在页面之间和每个页面内部),并且同一级别的页面通过双向 相互连接。因此,我们可以仅通过 的一个方向或另一个方向获 数据聚类在实际生活中应用场景还是挺多的,例如一个公司可以将客户进行分类,指定不同的销售策略等。 K-Means算法主要就是解决这类问题。在数据挖掘中, k-Means 算法是一种 cluster analysis 的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法。 介绍K-Means算法前,我们需要先弄清楚分类和聚类这两个概念: 分类:类别是已知的,通过对已知分类的数据进行训练和学习,找到这些不同类的特征,再对未分类的数据进行分类。属于监督学习。 聚类:事先不知道数据会分为几类,通过聚类分析将数据聚合成几个群体。聚类不需要对数据进行训练和学习。属于无监督学习。 查询 数据库 中字段及类型 SELECT table_catalog,table_schema,table_name,column_name,ordinal_position,is_nullable,data_type,character_maximum_length,numeric_precision,udt_name FROM information_schema.columns As ... 要查pg的 结构,除了登陆psql客户端执行\dtable_name,另一种方法就是通关SQL 查询 , 如下:看起来好像很复杂。 SELECTb.table_name,a.attname,pg_catalog.fo... 得到所有 信息 select * from information_schema.columns where table_schema='basisdata' and table_name<>'pg_stat_statements'; 得到所有 名 select column_name from information_schema.columns where table_s...