理解MySQL当中的SQL语句
MySQL的sql语句和我们常用的编程语句一样,都是我们输入文本,编译器编译或者解释执行,转化成计算机能识别的语言然后操作计算机资源(磁盘,内存,处理器,计算器等)完成特定功能的操作
平时我们会使用max min IF()等函数为系统自带,而MySQL有可以让我们自定义函数。
MySQL的sql语句执行过程
1,客户端讲sql语句发送给服务端
2,服务端解析sql语句
2.1 查询缓存
查看缓存里面是不是有相同的sql语句执行计划,如果数据高速缓存里面有这个语句,则服务器进程就会直接执行这个SQL 语句,省去后续的工作。省去了语句解析的原因。从内存当中读取数据比磁盘块。注意区分服务端的数据缓存和客户端的缓存是不一样的。
2.2解析语句
2.2.1合法性检查
2.2.2语句含义解析
对sql语句当中涉及的表和库确定
2.3获取对象解析锁
2.4核对权限
2.5确定最佳执行计划
对sql语句进行优化,并把优化的结果放到数据高速缓存里面
2.6语句执行
一是若被选择行所在的数据块已经被读取到数据缓冲区的话,则服务器进程会直接把这个数据传递给客户端,而不是从数据库文件中去查询数据。 二是若数据不在缓冲区中,则服务器进程将从数据库文件中查询相关数据,并把这些数据放入到数据缓冲区中(buffer cache)。
服务端将结果发送给客户端
什么是函数
函数存储着一系列sql语句,调用函数就是一次性执行这些语句。所以函数可以降低语句重复。【但注意的是函数注重返回值,不注重执行过程,所以一些语句无法执行。所以函数并不是单纯的sql语句集合。】