首页 > 数据库 >PostgreSQL 读取表主键和唯一键的SQL

PostgreSQL 读取表主键和唯一键的SQL

时间:2024-08-11 09:48:57浏览次数:15  
标签:PostgreSQL name udt cc when SQL table 主键 schema

给定表名, 读取对应的约束字段(主键, 唯一键)

SELECT tc.*
		FROM information_schema.table_constraints tc 
		JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_name) 
		JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name
		WHERE tc.table_name = 'table_name'

给定表名, 按MySQL的格式输出表结构描述

SELECT 
	cc.column_name as field, 
	cc.data_type,
	cc.udt_name,
case
	when cc.udt_name = 'varchar' then 'varchar('||character_maximum_length||')'
    when cc.udt_name = 'text' then 'varchar(1024)'
	when cc.udt_name = 'int8' then 'bigint(11)'
	when cc.udt_name = 'int4' then 'int(11)'
	when cc.udt_name = 'int2' then 'tinyint(2)'
	when cc.udt_name = 'numeric' then 'decimal(10)'
	when cc.udt_name = 'float4' then 'decimal(10)'
	when cc.udt_name = 'float8' then 'decimal(10)'
	when cc.udt_name = 'jsonb' then 'varchar(255)'
	when cc.udt_name = 'timestamp' then 'datetime'
end as type, 
	cc.character_maximum_length,
	(
		SELECT 
		    case when constraint_type = 'PRIMARY KEY' then 'PRI'
		         when constraint_type = 'UNIQUE' then 'UNI'
		         else ''
	         end
		FROM information_schema.table_constraints tc 
		JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_name) 
		JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name
		WHERE tc.table_name = 'press_article'
		and c.column_name = cc.column_name
	) as Key
FROM information_schema.columns cc
WHERE cc.table_name = 'press_article' order by cc.ordinal_position ASC;

标签:PostgreSQL,name,udt,cc,when,SQL,table,主键,schema
From: https://www.cnblogs.com/milton/p/18353116

相关文章

  • Docker简单使用MySQL
    前提安装好Docker下载Mysql镜像在这个网址搜索Mysql并选择合适的镜像https://hub.atomgit.com/详情页就有拉取镜像的命令查看Docker所有镜像​ dockerimages镜像重命名​ dockertag镜像id仓库:标签​ dockertag8a709252ac32mysql:5.7镜像启动(容器)dockerrun......
  • 【第1篇】mysql语句大全及用法
    【第1篇】mysql语句大全及用法【第1篇】mysql语句大全及用法1.创建数据库2.选择数据库3.创建数据表4.插入数据5.查询数据6.更新数据7.删除数据8.修改数据表结构10.删除索引11.创建视图12.删除视图13.创建存储过程14.调用存储过程15.创建触发器17.备份数据......
  • mysql基础知识
    MySql基础知识#1.创建数据库:createdatabasemydata;(你所要建的数据库名)2.使用数据库usemydata;(说明:在使用数据库的前一定要加这个use语句,否则会出现没有数据库被选择)3.查看所有数据库showdatabases;4.查看该数据库的所有的表名showtables;5.删除数据库......
  • mysql load data file 批量导入数据
    mysql大量数据导入记录工作需要将大量数据导入到mysql中,但是数据量很大且几十个文本数据,每次导入的数据量有限制,所以需要分批导入。为了快速导入记录下使用loaddatainfile方式。1.SQL入数据语句先将数据传入/var/lib/mysql/test/路径mysql>loaddatainfile"/var/li......
  • MYSQL导出数据和导入数据命令
    MYSQL导出数据和导入数据命令网上也很多,我还是记录一下在我的博客里面,自己好查看MYSQL导出数据命令1.导出整个数据库mysqldump-u用户名-h数据库IP地址-p密码数据库名>备份的名称.sql测试账号如下:数据库名:web_user数据库IP:192.168.8.110用户名:root密码:root导出整......
  • mysql优化-索引失效场景
    1.索引字段不独立索引字段进行了表达式计算事先计算好表达式的值,再传过来,避免在SQLwhere条件=的左侧做计算select*fromemployeeswhereemp_no+1=10003;select*fromemployeeswhereemp_no=10002;索引字段是函数的参数预先计算好结果,再传过来,在where条件的......
  • 使用 extract_sqlaudit_proc 存过分析ob性能问题
    最近在某个金融单位核心系统项目做ob的性能压测,期间遇到不少问题,现场两周了每天都加班到凌晨一两点左右,真的是累死。......
  • MySQL基础详解(2)
    文章目录多表查询MySQL函数数字函数字符串函数日期函数高级函数使用Python操作MySQL1、安装第三方模块pymysql2、操作MySQLMySQL中的多表查询是数据库操作中非常常见且重要的一个环节,多表查询是数据库查询中非常强大的功能,能够让你根据需要从多个表中提取和组合数......
  • MySQL基础详解(1)
    文章目录Sql1.什么是Sql2、SQL通用语法3、SQL分类DDL:操作数据库、表3.1操作数据库:CRUD3.2操作表CRUDDML:增删改表中数据1.添加数据:2.删除数据:3.修改数据:DQL:查询表中的记录1.语法:2.基础查询3.条件查询4.排序查询其他函数5.聚合函数6.分组查询7.分页查询:DCL:管理用户......
  • MySQL的安装
    文章目录在线安装方式离线安装方式1、卸载已有的MySQL文件2、安装mysql3、后续命令修改字符集MySQL是一种开源的关系型数据库管理系统(RDBMS),由瑞典MySQLAB公司开发,后来被SunMicrosystems收购,并最终归属于Oracle公司。MySQL因其高性能、可靠性、扩展性和安全性而广......