获取某个数据库中所有表的信息的操作oracle和mysql的操作
2017-02-14 10:24
731 查看
1.获取所有表的表名和表的评论、
2.获取所有列的名字,列是否为空,列的类型
3.获取某个表的主键
<if test="dbName == 'oracle'"> SELECT t.TABLE_NAME AS name, c.COMMENTS AS comments FROM user_tables t, user_tab_comments c WHERE t.table_name = c.table_name <if test="name != null and name != ''"> AND t.TABLE_NAME = upper(#{name}) </if> ORDER BY t.TABLE_NAME </if>
<if test="dbName == 'mysql'"> SELECT t.table_name AS name,t.TABLE_COMMENT AS comments FROM information_schema.`TABLES` t WHERE t.TABLE_SCHEMA = (select database()) <if test="name != null and name != ''"> AND t.TABLE_NAME = upper(#{name}) </if> ORDER BY t.TABLE_NAME </if>
2.获取所有列的名字,列是否为空,列的类型
<if test="dbName == 'oracle'"> SELECT t.COLUMN_NAME AS name, (CASE WHEN t.NULLABLE = 'Y' THEN '1' ELSE '0' END) AS isNull, (t.COLUMN_ID * 10) AS sort, c.COMMENTS AS comments, decode(t.DATA_TYPE,'DATE',t.DATA_TYPE || '(' || t.DATA_LENGTH || ')', 'VARCHAR2', t.DATA_TYPE || '(' || t.DATA_LENGTH || ')', 'VARCHAR', t.DATA_TYPE || '(' || t.DATA_LENGTH || ')', 'NVARCHAR2', t.DATA_TYPE || '(' || t.DATA_LENGTH/2 || ')', 'CHAR', t.DATA_TYPE || '(' || t.DATA_LENGTH || ')', 'NUMBER',t.DATA_TYPE || (nvl2(t.DATA_PRECISION,nvl2(decode(t.DATA_SCALE,0,null,t.DATA_SCALE), '(' || t.DATA_PRECISION || ',' || t.DATA_SCALE || ')', '(' || t.DATA_PRECISION || ')'),'(18)')),t.DATA_TYPE) AS jdbcType FROM user_tab_columns t, user_col_comments c WHERE t.TABLE_NAME = c.table_name AND t.COLUMN_NAME = c.column_name <if test="name != null and name != ''"> AND t.TABLE_NAME = upper(#{name}) </if> ORDER BY t.COLUMN_ID </if>
<if test="dbName == 'mysql'"> SELECT t.COLUMN_NAME AS name, (CASE WHEN t.IS_NULLABLE = 'YES' THEN '1' ELSE '0' END) AS isNull, (t.ORDINAL_POSITION * 10) AS sort,t.COLUMN_COMMENT AS comments,t.COLUMN_TYPE AS jdbcType FROM information_schema.`COLUMNS` t WHERE t.TABLE_SCHEMA = (select database()) <if test="name != null and name != ''"> AND t.TABLE_NAME = upper(#{name}) </if> ORDER BY t.ORDINAL_POSITION </if>
3.获取某个表的主键
<if test="dbName == 'oracle'"> SELECT lower(cu.COLUMN_NAME) AS columnName FROM user_cons_columns cu, user_constraints au WHERE cu.constraint_name = au.constraint_name AND au.constraint_type = 'P' AND au.table_name = upper(#{name}) </if>
<if test="dbName == 'mysql'"> SELECT lower(au.COLUMN_NAME) AS columnName FROM information_schema.`COLUMNS` au WHERE au.TABLE_SCHEMA = (select database()) AND au.COLUMN_KEY='PRI' AND au.TABLE_NAME = upper(#{name}) </if>
相关文章推荐
- JVM虚拟机内存及垃圾收集
- MySQL中的integer 数据类型
- MySQL存储过程
- Android之获取手机上的图片和视频缩略图thumbnails
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- 数据库链接字符串查询网站
- 解决mysql 开启logbin 导致存储过程报错
- Oracle Containers for J2EE远程安全漏洞(CVE-2014-0413)