我正在尝试从数据库中获取所有表的名称。
在我的数据库中,我有类似的表:
_table1,
_table2,
table3,
table4,
table5_xrefs
但是我只想获得开头没有_且结尾没有_xref的表。因此,在此示例中,我只需要table3和table4。
我正在使用show tables
显示所有表名,并且在使用PHP来匹配正确的表名之后。我想知道是否可以仅使用MySQL查询来完成同样的操作。
可能,但是您必须知道从SHOW TABLES
查询返回的列名称是字符串tables_in_
和您的数据库名称的串联。因此对于数据库test
:
SHOW TABLES
WHERE tables_in_test NOT LIKE '\_%'
AND tables_in_test NOT LIKE '%\_xrefs'
但是我更愿意使用information_schema
数据库获取此信息:
SELECT TABLE_NAME
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = SCHEMA() /* = 'test'*/
AND TABLE_NAME NOT LIKE '\_%'
AND TABLE_NAME NOT LIKE '%\_xrefs'
您可以在SHOW TABLES查询中use LIKE or WHERE。