一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫 - PostgreSQL - pgsql 實現(xiàn)用戶自定義表結(jié)構(gòu)信息獲取

pgsql 實現(xiàn)用戶自定義表結(jié)構(gòu)信息獲取

2021-03-07 18:41_rtf PostgreSQL

這篇文章主要介紹了pgsql 實現(xiàn)用戶自定義表結(jié)構(gòu)信息獲取,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

1. 獲取表中普通信息:如字段名,字段類型等

?
1
2
3
SELECT column_name, data_type, ordinal_position, is_nullable
FROM information_schema."columns"
WHERE "table_name"='TABLE-NAME' -- 將 'TABLE-NAME' 換成自己的表

2.獲取所有的表和視圖

?
1
SELECT table_name, table_type FROM INFORMATION_SCHEMA.tables WHERE table_schema='public' AND table_type IN ('BASE TABLE','VIEW')

3.獲取約束注釋

?
1
SELECT obj_description(oid, 'pg_constraint') AS d FROM pg_constraint WHERE conname = constraint_name;

4.獲取表的約束

?
1
2
3
4
5
6
7
8
9
10
11
-- conname 約束名稱
-- contype 約束類型(p:主鍵, f:外鍵, c: 檢查約束, u:唯一約束)
-- conkey 約束字段
-- confkey 外鍵字段
-- consrc 檢查約束條件
-- confreltable 外鍵字段引用的表
SELECT conname, contype, conkey, consrc,
  (SELECT array_agg(column_name::text) FROM INFORMATION_SCHEMA.COLUMNS WHERE ordinal_position = any(conkey) AND table_name= 'TABLE-NAME') AS conkey,
  (SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE ordinal_position = any(confkey) AND table_name='TABLE-NAME') AS confkey,
  (SELECT relname FROM pg_class WHERE oid = confrelid) AS confreltable
FROM pg_constraint WHERE conrelid=(SELECT oid FROM pg_class WHERE relname ='TABLE-NAME'); -- 將 'TABLE-NAME' 換成自己的表

5.獲取表的觸發(fā)器

?
1
SELECT trigger_name, event_manipulation, event_object_table, action_statement, action_orientation, action_timing FROM INFORMATION_SCHEMA.TRIGGERS;

6.獲取字段的注釋

?
1
2
3
--table_oid 表的oid
--col_position 字段的位置
SELECT col_description(table_oid, col_position);

補充:查詢PostgreSQL庫中所有表的表結(jié)構(gòu)信息SQL

我就廢話不多說了,大家還是直接看代碼吧~

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
select
(select relname as comment from pg_class where oid=a.attrelid) as table_name,
 row_number() over(partition by (select relname as comment from pg_class where oid=a.attrelid) order by a.attnum),
a.attname as column_name,
format_type(a.atttypid,a.atttypmod) as data_type,
(case when atttypmod-4>0 then atttypmod-4 else 0 end)data_length,
(case when (select count(*) from pg_constraint where conrelid = a.attrelid and conkey[1]=attnum and contype='p')>0 then '是' else '否' end) as 主鍵約束,
(case when (select count(*) from pg_constraint where conrelid = a.attrelid and conkey[1]=attnum and contype='u')>0 then '是' else '否' end) as 唯一約束,
(case when (select count(*) from pg_constraint where conrelid = a.attrelid and conkey[1]=attnum and contype='f')>0 then '是' else '否' end) as 外鍵約束,
(case when a.attnotnull=true then '是' else '否' end) as nullable,
col_description(a.attrelid,a.attnum) as comment
from pg_attribute a
where attstattarget=-1 and attrelid in (select oid from pg_class where relname in(select relname from pg_class where relkind ='r' and relname
in
(select tablename from pg_tables where tablename not like 'pg_%' and tablename not like 'sql_%' and schemaname not in(XXXX) and tablename not in(XXXX)
))
order by table_name,a.attnum;

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持服務(wù)器之家。如有錯誤或未考慮完全的地方,望不吝賜教。

原文鏈接:https://blog.csdn.net/rantengfei1986/article/details/56670712

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 1769在线观看| 亚洲欧美天堂 | 美女隐私部位视频网站 | 3d动漫美女被吸乳羞羞视频 | 亚洲精品中文字幕久久久久久 | 日韩欧美一区二区三区视频 | 星星动漫在线观看免费 | 国产特黄a级在线视频 | 欧美日韩国产另类一区二区三区 | 男人的天堂在线 | 亚洲高清在线精品一区 | 十六一下岁女子毛片免费 | 99re在线精品视频免费 | chinesespank打屁股| 精品久久久久亚洲 | 男女拍拍拍免费视频网站 | 7788理论片在线观看 | 污污免费 | 国产精品亚洲va在线观看 | 欧美成人免费观看bbb | 免费观看伦理片 | 欧美综合亚洲图片综合区 | 欧美一级xxx | 国产99久久精品 | 91大神在线精品视频一区 | 日本道色综合久久影院 | 美女女女女女女bbbbbb毛片 | 99精品热视频 | 国产农村一一级特黄毛片 | 国产欧美另类 | mm131亚洲精品久久 | 毛毛片在线 | 亚洲国产成人精品 | 国产欧美日韩图片一区二区 | 午夜国产精品视频在线 | 日本在线视频播放 | www在线观看视频免费 | 日本高清免费中文字幕不卡 | 国产成人免费高清激情视频 | 欧美成狂野欧美在线观看 | 久久这里只有精品视频9 |