查询数据库表字段属性
查询表字段属性
- Mysql
- Oracle
- SqlServer
- PostgreSql
- Sqlite
- hive
- 深度解析
- 标准
- Mysql
- 1 获取当前数据库
- Oracle
- 1、oracle 获取当前用户的详细信息
- 1.1、oracle 获取当前模式(schema)
- 2、oracle获取当前用户的角色信息
- 3、oracle获取当前用户的角色权限信息
- postgresql
- SqlLite
- hive
Mysql
SELECT TABLE_SCHEMA dataBaseName -- 库名,TABLE_NAME tableName -- 表名, COLUMN_NAME columnName -- 列名, COLUMN_KEY columnConstraint -- 列限制 主键,唯一之类的, COLUMN_COMMENT columnComment -- 列注释, DATA_TYPE columnType -- 字段类型 varchar之类的, CHARACTER_MAXIMUM_LENGTH columnLength -- 以字符为单位的最大长度, CHARACTER_OCTET_LENGTH columnOctetLength -- 以字节为单位的最大长度, NUMERIC_PRECISION columnNumberPrecision -- 数字类型整数位长度, NUMERIC_SCALE columnNumberScale -- 数字小数位长度, COLUMN_DEFAULT columnDefault -- 列的默认值, IS_NULLABLE columnIsNullable -- 列是否可以为空 YES 是可以为空
FROM INFORMATION_SCHEMA.COLUMNS
where TABLE_SCHEMA = database()
and TABLE_NAME = '{tableName}'
Oracle
SELECT a.USERNAME dataBaseName -- 库名, b.TABLE_NAME tableName -- 表名, c.COLUMN_NAME columnName -- 列名, e.CONSTRAINT_TYPE columnConstraint -- 主键,唯一之类的, f.COMMENTS columnComment -- 列注释, c.DATA_TYPE columnType -- 字段类型 varchar之类的, c.DATA_LENGTH columnLength -- 以字符为单位的最大长度, -1 columnOctetLength -- 以字节为单位的最大长度, c.DATA_PRECISION columnNumberPrecision -- 数字类型整数位长度, c.DATA_SCALE columnNumberScale -- 数字小数位长度, c.DATA_DEFAULT columnDefault -- 列的默认值, c.NULLABLE columnIsNullable -- 列是否可以为空 YES 是可以为空
FROM USER_USERS a
LEFT JOIN all_tables b ON a.USERNAME = b.OWNER
LEFT JOIN user_tab_columns c ON b.TABLE_NAME = c.TABLE_NAME
LEFT JOIN user_ind_columns d ON b.TABLE_NAME = d.TABLE_NAME
LEFT JOIN user_constraints e ON b.TABLE_NAME = e.TABLE_NAME AND d.INDEX_NAME = e.INDEX_NAME
LEFT JOIN all_col_comments f ON a.USERNAME = f.OWNER AND b.TABLE_NAME = f.TABLE_NAME AND c.COLUMN_NAME = f.COLUMN_NAME
WHERE b.TABLE_NAME = '{tableName}'
SqlServer
SELECT A.name AS tableName, B.name AS columnName, isnull (D.value,B.name) AS columnComment, C.name AS columnType
FROM sys.tables A
INNER JOIN sys.columns B ON B.object_id = A.object_id
left join sys.types C ON B.system_type_id = C.system_type_id
LEFT JOIN sys.extended_properties D ON D.major_id = B.object_id AND D.minor_id = B.column_id
WHERE A.name = '{tableName}'
PostgreSql
select a.relname tableName, b.attname columnName, COALESCE(c.description ,b.attname) columnComment, d.typname columnTypefrom pg_class aleft join pg_attribute b on a.oid = b.attrelid left join pg_description c on b.attrelid = c.objoid and b.attnum = c.objsubid left join pg_type d on b.atttypid = d.oidwhere a.relname = '{tableName}'and b.attname not in ('gp_segment_id','tableoid','ctid','xmax','xmin','cmax','cmin')
Sqlite
PRAGMA table_info({tableName})
hive
desc {tableName}
深度解析
标准
select * from INFORMATION_SCHEMA.COLUMNS
我记得在一篇博客中看到过 这句sql是一个行业标准,我自己也有发现 在 sqlserver ,mysql ,postgresql 中都有支持,当然在mysql我认为是支持最好的,但是现在资料太少,等我慢慢整理,写在这里只是表示这是一个万金油语句,查询表字段的时候很多数据库都能支持的上的
Mysql
1 获取当前数据库
database()
Oracle
1、oracle 获取当前用户的详细信息
select * from USER_USERS
1.1、oracle 获取当前模式(schema)
您可以简单理解为,schema 名 就是用户名 是一样的,每个模式代表一个用户
-- 查看所有schema 可以理解为查询所有的schema用户
select username from sys.dba_users;
-- (硬要查询的话应该就是下面的语句)根据当前用户查询schema
select a.USERNAME ,b.*
from USER_USERS a
LEFT JOIN sys.dba_users b ON a.USER_ID = b.USER_ID ;
2、oracle获取当前用户的角色信息
SELECT * FROM USER_ROLE_PRIVS
3、oracle获取当前用户的角色权限信息
SELECT * FROM ROLE_SYS_PRIVS
postgresql
在前面的语句中大家应该可以看到这个语句,因为我发现我在使用上面的语句获取表字段信息的时候发现会获取一些多余的字段,猜测应该是跟 Oracle 的rowid 一样的隐藏字段,可能在特殊的地方会有用处,但是我这里用不到,所以拿掉了,当然也可以使用上面的语句 标准
and b.attname not in ('gp_segment_id','tableoid','ctid','xmax','xmin','cmax','cmin')
SqlLite
目前获取字段名称方法我只找到这么一个,不过好消息是这个语句可以使用 sqlsugar 创建的数据库连接中直接调用,并返回结果
代码如下,自己的测试demo
public class program{public static void Main(string[] args){string connect = "data source=C:\\Users\\Administrator\\AppData\\Local\\Packages\\cf906e41-910f-41ab-9cae-5a814460689d_9g7jfgbsde0p2\\LocalState\\sqlite.db";SqlSugarClient sqlSugarClient = new SqlSugarClient(new ConnectionConfig{ConfigId = "A",ConnectionString = connect,DbType = SqlSugar.DbType.Sqlite});var dt = sqlSugarClient.Ado.GetDataTable("PRAGMA table_info(schedulework)");Console.WriteLine(dt.Rows.Count);}}
hive
hive 有一些查询表信息的命令,自己可以在控制台使用,但是无法使用上述的代码访问到具体信息
查询数据库表字段属性相关推荐
- oracle查询所有表字段属性_Oracle查询表字段属性的方法
Oracle查询表字段属性的方法 1.查找表的所有索引(包括索引名,类型,构成列): select t.*,i.index_type from user_ind_columns t,user_inde ...
- MyBatisPLus3.x中代码生成器自定义数据库表字段类型转换
场景 MyBatisPlus3.x中使用代码生成器(全注释): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/89518466 数 ...
- mysql字段命名_Mysql 01—数据库表字段的命名规则
摘要:当前测试工作为自研数据库测试,同时需要为自动化执行处理入库数据表,为让自己看起来专业些,特查找资料学习数据库的各种规范使用. 本文是一篇包含了数据库命名.数据库表命名.数据库表字段命名及SQL语 ...
- SQLite数据库表字段修改与删除
SQLite数据库表字段修改与删除 sinat_36572506 2016-11-01 13:41:25 7554 收藏 展开 我创建一张表,但是在使用过程中发现字段名称会发生改变,但是SQL ...
- 关于解决SpringDataJpa框架实体类表字段创建顺序与数据库表字段展示顺序不一致的问题
关于解决SpringDataJpa框架实体类表字段创建顺序与数据库表字段展示顺序不一致的问题 参考文章: (1)关于解决SpringDataJpa框架实体类表字段创建顺序与数据库表字段展示顺序不一致的 ...
- mysql数据库表字段使用DESC等关键字报错及解决方法
mysql数据库表字段使用DESC等关键字报错及解决方法 参考文章: (1)mysql数据库表字段使用DESC等关键字报错及解决方法 (2)https://www.cnblogs.com/li--xi ...
- excel表格数据库表字段带下划线转驼峰
数据库表字段(小写字母带下划线)转驼峰字段,excel表格,可使用公式: LEFT(A2,1)&MID(SUBSTITUTE(PROPER(A2),"_","&q ...
- 修改数据库表字段报错:1265-data truncated for column
修改数据库表字段类型,保存报错:1265-data truncated for column 场景:表A的主键最开始是varchar类型,后来想要改成主键自增的,但是改成int类型,且设置为自增后,保 ...
- Java数据库行列级数据权限控制_关于数据库表字段的数据权限设计
吐槽:刚在同事的帮忙下,把maven工程成功导入到eclipse,期间遇到的最大问题就是安装eclipse插件,花费了其中大部分的时间 现在做的研发产品,遇到的一个新的需求是"控制外部系统对 ...
最新文章
- 永洪Desktop交叉表怎么按月份汇总
- 《罗永浩打脸罗永浩》、MPEG召集人辞职称MPEG将不再存在、Zoom免费用户将没有端到端加密|Decode the Week...
- 11.Excel数据分析-复合型饼图与漏斗图
- python print 输出到txt_(Python基础教程之七)Python字符串操作
- 人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 图像分类
- word无法验证服务器,windows10系统下office2010无法验证的解决方法
- Python中的问卷调查(华为机测题)
- android常用开源库分享
- centos下安装JAVA开发工具(1)------JDK
- originos系统会基于鸿蒙开发吗,originos系统是安卓吗 originos系统什么时候更新[多图]...
- 得分——UVa1585
- Unity Debug.Log输出带颜色的日志,告别黑白冷色
- 由《天龙八部》想到的
- php 发放代金券,如何开发用户领取代金券功能说明
- 解决FIFO读写位宽不等的问题
- drtek收音机使用说明_德劲1103收音机【简易操作指南】.【使用说明书】.高清版...
- Qt OpenGL 旗帜效果(飘动的纹理)
- 美国FBA海运专线有哪些优势?
- 高曼数位板触控笔无反应问题
- ADuM1201助我实现串口隔离通信应用