![c9fcbcb7b00663b56e477ff83d4045ec.png](https://i-blog.csdnimg.cn/blog_migrate/ee3e5a158f7556efd644d9c647dc09ae.png)
一、练习
1.查询学生表
![071ae834de5db4cc04f0b37cc175f7ca.png](https://i-blog.csdnimg.cn/blog_migrate/f6d328beb20f8ed8ffd6fb54a7a9c7dd.png)
![dfcf48e4a2503b0503b74e2ccff56dc3.png](https://i-blog.csdnimg.cn/blog_migrate/664861a3a447681caaafd60c66bb94fc.png)
2.理解sql运行顺序
sql的书写顺序:select->from->where->group by->having->order by->limit
其中注意点是where 需要书写在group by前面,having需要写在group by 的后面。
一开始对于sql的书写顺序其实很迷糊,总是会将where写在group by 的后面,或者将having加在group by 前面,然后就抓耳挠腮了,只能看着报错信息痴痴疑惑。
不过后来知晓了sql的内部执行顺序之后,这类错误几乎不会再犯了。
sql执行顺序:from->where->group by->having->select->order by->limit
第一步先从数据库中找到一张数据表,接着系统会执行where对数据表中的数据进行初步筛选,然后对筛选出来的数据执行group by 进行分组,接着对分组过后的数据执行having进行二次筛选,然后执行select初步选出数据表中的数据,order by 对数据进行排序,最后的话就是执行limit,限制对数据的条数啦~
where和having都是用来进行筛序的,功能其实差不多,只不过where中不能使用聚类函数如count、sum、avg需要所有数据参与运算的函数,但是having中可以使用,所以having需要写在数据分组之后。
where子句 = 指定行所对应的条件;
having子句 = 指定组所对应的条件;
3.算数运算符、比较运算符和逻辑运算符
算数运算符
![a548a632da2227e2b7333a23c8b718d5.png](https://i-blog.csdnimg.cn/blog_migrate/1b0f7b70cca3abd208c5711b5c27d5ba.png)
比较运算符
数据进行大于小于时,需要使用and符号进行连接
![e44daa62191e37c32de55edca98a1a08.png](https://i-blog.csdnimg.cn/blog_migrate/ef8cf1e8ca79caa0af7ad3a0a27d4d3a.png)
![80662f0c1e5313e79671c4d830d4970a.png](https://i-blog.csdnimg.cn/blog_migrate/125d8eb1b02c6b909e610b8a05db99be.png)
逻辑运算符
and 运算符两个条件都需要满足,or运算符两个条件只需满足一个,and优先级大于or。
between 是筛选位于两个数据之间的数据。
not 是否定这个条件,指这个条件的反面。
like 是对数据进行模糊筛选,"%like%",指查找包含like的数据字段。
![b63764d0bf62547565cc9ad6538d8b85.png](https://i-blog.csdnimg.cn/blog_migrate/0d0a0bc7d028f015ef3d10404f738580.png)
![be90710b1e2e760f22d811e1833d6b47.png](https://i-blog.csdnimg.cn/blog_migrate/bcf1bef05364ea65997e763803777e7e.png)
![ab7983e006bfa1d1057b3c62c5c8c849.png](https://i-blog.csdnimg.cn/blog_migrate/e9b82828dc32c090b3168bc50b9712d0.png)
![ac7850f5a3be5da41c446c650e0f6809.png](https://i-blog.csdnimg.cn/blog_migrate/be2f4c82458eb21d12bcf79179ed248f.png)