我想查询MySql数据库,根据提供的条件(应用于数据库名称的条件)向我显示所有现有数据库。 既然我的条件很复杂,简单的“LIKE”条件是不够的,我需要使用常规的WHERE子句。
任何人都可以提供如何做到这一点的样本吗?
答案 0 :(得分:4)
USE INFORMATION_SCHEMA;
SELECT `SCHEMA_NAME` from `SCHEMATA` WHERE `SCHEMA_NAME` LIKE "%whatever%";
在docs中阅读更多内容。
答案 1 :(得分:3)
gnud给出的解决方案可以更加优化:
SELECT `schema_name` from INFORMATION_SCHEMA.SCHEMATA WHERE `SCHEMA_NAME` LIKE "%whatever%";
任务仅使用一个SQL查询完成。
当使用'USE'SQL命令时,在选择之前读取所有数据库信息,如表格列表及其内容。使用上面的查询,您将在自己的数据库中,并能够从不同数据库中的表中查询内容。
您可以使用:
USE INFORMATION_SCHEMA -A;
这可以避免读取数据库内容。
其中:
schema_name - >列名 INFORMATION_SCHEMA.SCHEMATA - > '。'之前的名字。是数据库名称,后面是表名。
希望这个解决方案有所帮助。
答案 2 :(得分:2)
还有另一个,在我看来更方便的命令:
SHOW DATABASES WHERE `Database` LIKE '%whatever1%' OR `Database` LIKE '%whatever2%';
使用WHERE
版本,您可以运行比非常有限的LIKE
版本更灵活的查询。
将Database
放在反引号下非常重要,因为它是MySQL中的关键字。
答案 3 :(得分:0)
您可以按照以下方式使用show database语句:
显示{数据库| SCHEMAS} [像'pattern'| WHERE expr]
也就是说,你可以写
show databases like '%dbname%';
要么
show databases where
数据库like '%dbname%';