数据库中搜索表、根据表名查出表
工作过程中,我们有时候会遇到需要在数据库查找(搜索)表名包含’abc’的表,应该怎么处理呢。
笔者首先想到的是用where语句,但是where语句必须和select一起用,于是突发奇想,可不可以用like,试了下,果然可以,并且不同的数据库中like的用法还不同,特总结下来。
下面分别看看Mysql、Oracle、Hive中的找表方式。
Mysql
如下找出所有包含ads的表:
Mysql代表任意个数任意字符的是 ‘%’
show tables LIKE '%ads%';
结果如下图
查找所有包含a的数据库
show DATABASES LIKE '%a%';
Oracle
Oracle比较特殊;
Mysql的show tables等价于Oracle的select table_name from user_tables;
Mysql的show databases等价于Oracle的select username from dba_users;
Mysql: show tables == Oracle: select table_name from user_tables;
Mysql: show databases == Oracle: select username from dba_users;
所以Oracle可以直接用where语句,也是用’%’:
select table_name from user_tables where table_name like '%LOGMNR%' ;
Hive
Hive可以使用show tables 和show databases,但是
Hive在查表结构代表任意个数任意字符的是 ‘*’
show tables LIKE '*ljb*';
注:Hive中查询数据时,使用的还是%,与Mysql等一致