mysql怎么执行过程 mysql怎么执行sql语句脚本( 二 )


验证方法是敲select * from b;回车?。】梢苑⑾諦表由本来插入的2条记录变成3条记录 , 而且用户1的名字也从xxx变成aaa了?。。。?
希望对你有帮助!另外最重要的是MYSQL有一些很好的图形界面客户端工具,不用这个DOS界面的东西,下载个sqlyog什么的软件装上 , 基本一启动就会用了的东西!在SQLYOG的界面直接把example.sql里的内容复制过来粘贴后按F5键运行即可?。。?
mysql怎么执行一个存储过程给你个例子
drop procedure if exists call proc_temp;
delimiter $ //存储过程从$ 开始
create procedure proc_temp(
IN startDate VARCHAR(20),//设置传入的变量,没有可以不要传
IN endDate VARCHAR(20))
BEGIN
DECLARE dflag INT(11); //这里可以定义你需要的仅在存储过程里使用的变量
SET dflag = 0;//初始化
select * from table where time between startDate and endDate ;//你的sql语句 , 可以一句可以多句
END $//存储过程从$ 结束
delimiter ;
当上面的选中运行后没问题 , 可以选中下面的call xx 运行,上面的代码没有改动的话只需要运行一次
call proc_temp("2017-07-05","2017-08-05")
mysql的关键词执行顺序①From:对from左边的表和右边的表计算笛卡尔积,产生虚拟表c1()
②On:对c1中的数据进行on过滤,只有符合过滤条件的数据记录才会记录在虚拟表c2中
③Join:若指定了连接条件(left、right),主表中的未匹配的行就会作为外部行添加到c2中,生成虚拟表c3
④Where:对虚拟表c3中的数据进行条件过滤,符合过滤条件的记录插入到虚拟表c4中
⑤Group by:根据group by子句中的列 , 对c4中的记录进行分组操作,生成c5
⑥Having:对虚拟表c5中的记录进行having过滤,符合筛选条件的记录插入虚拟表c6中
⑦Select:执行select操作 , 选择指定的列,插入到虚拟表c7中
⑧Distinct:对c7中的数据去重,生成虚拟表c8
⑨Order by:对虚拟表c8中的数据按照指定的排序规则进行排序 , 生成虚拟表c9
⑩Limit:取出指定的记录,产生虚拟表c10,将结果返回
上面是我看他们博客都这样写的!但是我觉得不适合我理解 。可能是我太菜,我就以我写的sql理解下执行过程 。
1、首先是找到from字段和join字段后面的所有表,形成笛卡尔积 。student、English、class形成笛卡尔积 。
2、然后是哪种(inner、join、right)join并且根据on字段对笛卡尔积做改变(这个改变因on改变行的条数 , 因为join类型去重某些行和置空某些列) 。
3、是根据where字段去再次筛选上步得到的笛卡尔积 。
4、然后group by去分组 。
5、之后select 列结构(列结构就此不变)
6、因为distinct只能对单个列字段去重,所以肯定的在select后再去执行(行结构就此不变) 。
7、order by是排序,能排序就说明整个表的行的条数不会发生改变了 。
8、limit字段是最后从上面结果选一部分出去 。
执行顺序只是相对的,在mysql优化器语法分析器分析优化的时候会给我们优化,在保证语义不变的情况下,进行语义等价转换 。所以上面的顺序只是一般情况下可以这样分析 。
mysql怎么执行过程的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于mysql怎么执行sql语句脚本、mysql怎么执行过程的信息别忘了在本站进行查找喔 。

推荐阅读