获取某个数据库中所有表的信息的操作oracle和mysql的操作

1.获取所有表的表名和表的评论

<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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值