mysql 查询表存在_MySQL如何查询某个表是否存在

常用的方法如下:

SHOW TABLES LIKE '%tb_bp_d_case%';

select TABLE_NAME from INFORMATION_SCHEMA.TABLES whereTABLE_SCHEMA='dbname' and TABLE_NAME='tablename' ;

需要考虑的是权限问题

mysql 的授权分为 5 层:全局层级,数据库层级,表层级,列层级,子程序层级;

SHOW TABLES,并不在priv_type列表中,也就是说只要能连接到mysql上都可以执行。

如果用户权限是 表层级或者是列层级 的,那么 show tables; 只能看到有权限的表名。

如果 查询 INFORMATION_SCHEMA 库的话,也是一样的,只能查询到有权限的表。

如果说一个用户的权限不是数据库层级以上的话就会导致结果不可信赖。

类似下边的授权就不用担心这个问题(priv_type随便什么都行):

grant priv_type on dbName.*to.....--数据库层级

--or

grant priv_type on*.*to.....--全局层级

==============================

如果上边写的没看明白,那么继续看下边一个例子:

如:数据库有 test1,test2 ,...

test1 库中有表,abc ,ab ,abb, a 四个表

授权语句:

grant insert on test1.a to user1@"%"Identifiedby"user1"

当用 user1 连接后,选择 test1 数据库后执行:

show tables; -- 结果只要 a 一个表。同样的 show tables like "a%"; --结果也只有表 a

selectTABLE_NAMEfromINFORMATION_SCHEMA.TABLESwhereTABLE_SCHEMA='test1';--结果也是只要一个表a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值