information_schema.TABLES
表来检查数据库名和表名是否合法。以下是一个示例查询:,,“sql,SELECT TABLE_SCHEMA, TABLE_NAME,FROM information_schema.TABLES,WHERE TABLE_SCHEMA = '源数据库' AND TABLE_NAME = '表名';,
“,,如果查询结果返回至少一行数据,那么数据库名和表名是合法的。查询MySQL数据库中表名是否合法,可以通过编写SQL语句来实现,我们需要了解MySQL中的标识符命名规则:

1、标识符可以由字母、数字、下划线组成。
2、标识符不能以数字开头。
3、标识符区分大小写。
4、标识符不能超过64个字符。
5、保留字不能用作标识符。

下面是一个示例的SQL查询语句,用于检查指定数据库中的表名是否合法:
SELECT table_name FROM information_schema.tables WHERE table_schema = 'your_database_name' AND ( table_name REGEXP '^[azAZ_][azAZ09_]{0,63}$' OR table_name REGEXP '^[azAZ_][azAZ09_]*$' ) AND table_name NOT IN ( 'information_schema', 'mysql', 'performance_schema', 'sys' );
这个查询语句会返回所有合法的表名。your_database_name
需要替换为你要查询的数据库名称。
我们来解释一下这个查询语句的各个部分:
SELECT table_name
:选择要显示的列,这里是表名。
FROM information_schema.tables
:从information_schema
数据库的tables
表中获取数据。information_schema
是MySQL系统库,包含了关于数据库和表的信息。

WHERE table_schema = 'your_database_name'
:筛选出指定数据库中的表。
AND (table_name REGEXP '^[azAZ_][azAZ09_]{0,63}$' OR table_name REGEXP '^[azAZ_][azAZ09_]*$')
:使用正则表达式检查表名是否符合命名规则,第一个正则表达式匹配长度不超过64个字符的表名,第二个正则表达式匹配长度不限但不超过64个字符的表名。
AND table_name NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys')
:排除系统保留的数据库名。
现在让我们回答两个与本文相关的问题:
问题1:如何查询MySQL数据库中的所有表名?
答案:可以使用以下SQL查询语句来获取所有表名:
SELECT table_name FROM information_schema.tables WHERE table_schema = 'your_database_name';
问题2:如何查询MySQL数据库中是否存在非法表名?
答案:可以使用以下SQL查询语句来查找非法表名:
SELECT table_name FROM information_schema.tables WHERE table_schema = 'your_database_name' AND NOT ( table_name REGEXP '^[azAZ_][azAZ09_]{0,63}$' OR table_name REGEXP '^[azAZ_][azAZ09_]*$' ) AND table_name NOT IN ( 'information_schema', 'mysql', 'performance_schema', 'sys' );
这个查询语句会返回所有不合法的表名。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复