2017-09-13 20 views
0

我使用:MySQL的:返回所有表从“选择tables_names ......”

SELECT table_name AS tables FROM information_schema.tables WHERE table_name LIKE 'address_%' 

...在数据库中获取所有表的列表。有人建议我用这个方法,而不是“SHOW TABLES”,请参阅:

mysql: SHOW TABLES - define column name

...我可以命名列(AS子句,上面,这是不提供给显示表) 。

正如预期的那样,这给了我下面的输出:

tables 
address_13e625c01bea04b1d311 
address_147e32243c710542fb43 
address_3b046272656fa61d7550 
address_4f83b2740fc4f038775a 
etc. 

如果我尝试和改变SELECT语句获取所有表(不只是那些以“地址_”)到下列任何一项:

SELECT table_name AS tables FROM information_schema.tables WHERE table_name LIKE '%' 

SELECT table_name AS tables FROM information_schema.tables WHERE table_name LIKE '' 

SELECT table_name AS tables FROM information_schema.tables 

所有这些回报:

tables 
CHARACTER_SETS 
CLIENT_STATISTICS 
COLLATIONS 
COLLATION_CHARACTER_SET_APPLICABILITY 
COLUMNS 
COLUMN_PRIVILEGES 
etc. 

我不知道这些值是(数据库属性的外观),但它肯定不是数据库中的表的列表('address_'(从上面)那些甚至没有。

有没有人知道我应该使用什么'SELECT table_name ...'语句,记住我想命名该列(这就是为什么我不能使用'SHOW TABLES')来获取表中的完整列表给定数据库?

+0

使用'SELECT * FROM information_schema.tables'来查看表中包含的内容。然后你可以决定,应用哪些过滤器。 –

+0

我会说'SELECT table_name AS tables FROM information_schema' – hackela

+0

您可能想限制查询只查看您感兴趣的table_schema(即您的数据库)。 –

回答

0

谢谢你的建议。

此基础上,我得到了我的答案,那就是:

SELECT TABLE_NAME AS 'table' FROM information_schema.tables where TABLE_name like '%' 

这只是返回表名,在一个名为列的表。

谢谢大家