MySQL学习记录(1)
背景:今天在学习使用sql语句时,发现一个有趣的地方:
# 正常语句
SELECT * from mysql.general_log ORDER BY event_time DESC;
# 报错语句 1146 - Table 'dvwa.mysql.general_log' doesn't exist
SELECT * from `mysql.general_log` ORDER BY event_time DESC;
让我们看下符号`在mysql查询中的意义:
` 是 MySQL 的转义符,避免和 mysql 的本身的关键字冲突,只要你不在列名、表名中使用 mysql 的保留字或中文,就不需要转义。所有的数据库都有类似的设置,不过mysql用的是`而已。通常用来说明其中的内容是数据库名、表名、字段名,不是关键字。
在报错语句中,语句在执行过程中,将mysql.general_log视为一个整体的表名,在当前dvwa数据库中找不到这一表,所以报错
测试:在dvwa新建表mysql.general_log,再次执行,成功