1. 查询数据库中所有表名:
SELECT
table_name
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = 'zhanglq_test'
AND TABLE_TYPE = 'base table';
ps: TABLE_SCHEMA: 用于限定数据库的名称,zhanglq_test是我自己建的库,
information_schema 是系统库, 是mysql自带的,
table_type='base table‘: 限定只查询基表;
2. 查询指定数据库中指定表的所有字段名column_name:
SELECT
table_name
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = 'zhanglq_test'
AND TABLE_NAME = 'user' ;
ps: TABLE_SCHEMA: 用于限定数据库的名称,
TABLE_NAME = 'user' : 限定表名
3. 获取某个表的查询sql: 如果某个表的字段过多, 但是我们还想对其中的某些字段进行操作,比如,隐藏手机号后四位, 获取身份证号前14位等等,如果一个个字段列出来,不但费时费力的还容易出错,此时我们可以试用以下sql获取查询语句:
SELECT
t.TABLE_NAME , CONCAT("select ",GROUP_CONCAT(t.COLUMN_NAME), " FROM " , t.TABLE_NAME , ";")
FROM
information_schema.`COLUMNS` t
WHERE
t.TABLE_SCHEMA = 'zhanglq_test'
AND t.TABLE_NAME in ('order_info')
AND t.COLUMN_NAME != 'id'
GROUP BY t.TABLE_NAME ;
执行结果如下图:
执行结果的第二列就是一条select 查询结果,当然也可以同时过去吧多个表的select查询语句, 只需要在 t.TABLE_NAME in ('order_info')中添加上相应的表即可, 如果不想获取某一列,需要加上该条件: t.COLUMN_NAME != 'id'.