在MySQL中,每当查询被发送到服务端时,服务器在执行语句之前将会进行下面的检查:
用户是否有权限执行该语句?
用户是否有权限访问目标数据?
语句的语法是否正确
如果查询通过了这三个测试,就会被传递给 查询优化器 ,它负责为查询找到最有效率的执行方式。
优化器通常会做诸如确定 from 子句后面各表的连接顺序,或是可以使用哪些索引之类的工作,然后选择一个执行方案,以供服务器执行该查询。
当服务器执行完查询后,将会向调用程序(这里是MySQL工具)返回一个结果集。
如果查询结果并没有找到任何结果,那么mysql工具将会在其后显示一条提示消息,例如:
mysql> SELECT emp_id, fname, lname
-> FROM employee
-> WHERE lname = 'zifeiy';
Empty set (0.00 sec)
如果查询返回了1行或多行记录,那么mysql工具将会使用列名和 -、| 、 + 等符号组成的边框将结果鸽石斛啊输出,例如:
mysql> SELECT * FROM department;
+---------+--------+
| dept_id | name |
+---------+--------+
| 1 | dept 1 |
| 2 | dept 2 |
| 3 | dept 3 |
+---------+--------+
3 rows in set (0.00 sec)
在显示最后一行结果之后,mysql工具会显示一条消息,以提示一共返回了多少行。