where、groupy、having、order by篩選條件
一、where子句
where字句中可以使用
比較運(yùn)算符: >、 <、 = 、!= ?、<= 、>=
between 80 and 100 ?值在80~100之間
in(80.90,100) 值是 80或90或100
like 'auto_inc%':(pattem可以是%或_、?%表示任意多字符、 _表示一個字符)
邏輯運(yùn)算符:在多個條件直接可以使用邏輯運(yùn)算符 ,and or not
1、單條件查詢:

null 不等于 ‘’? ?空字符,判斷null用 post_comment is Null;
2、模糊匹配

二、group by
單表查詢:
1、group by
首先找到表,然后根據(jù)約束條件where過濾出想要的,在運(yùn)行g(shù)roup by 分組查詢打印
首先明確,分組發(fā)生在where之后,即分組時基于where之后得到的記錄進(jìn)行的。
2、什么是分組?
就是把一張表中的記錄按照相同的字段進(jìn)行分類。
分組一般找重復(fù)內(nèi)容多的字段進(jìn)行
3、為何要分組?
取每個部門的最高工資;
取每個部門的員工數(shù);
取男人數(shù)和女人數(shù);
小竅門: ‘每’這個字后面的字段。就是我們分組的依據(jù)
4、可以按照任意字段分組,但是分組完畢后,比如groupy by post,只能看post字段,如果想查看組內(nèi)信息,需要借助與聚合函數(shù)。
實(shí)例1:

此時,只是取出每個post分組類型的第一個人,這樣運(yùn)行沒有意義
處理辦法:
exit 重新登錄生效
在運(yùn)行 select * from employee group by post;

發(fā)現(xiàn)嚴(yán)格按照分組模式進(jìn)行,只能得到分組依據(jù),得不到數(shù)據(jù)

聚合函數(shù):
實(shí)例2:每個職位有多少個員工

求部門員工最大工資、部門平均工資、部門工資總和如下:
分組一般不選unique字段, 沒有意義
分組之后,只能取分組的字段,以及每個組聚合的結(jié)果
沒有g(shù)roup by 則默認(rèn)整體算作一組,所以也可以用聚合函數(shù)
如:取所有員工的最高工資
group_concat
功能:將group by產(chǎn)生的同一個分組中的值連接起來,返回一個字符串結(jié)果。
上述只能顯示分組依據(jù)的post和聚合函數(shù)的結(jié)果數(shù)值,如果想查詢分組下面的name,直接這樣:
發(fā)現(xiàn)會報錯,那么該如何查詢name呢?這時,group_concat就派上用場:
功能:將每個部門的post和name拼接成一個虛擬表,顯示如下:

將每個部門的職位、最大工資、員工名字查詢出來

查詢秘書部門的員工名字和最高工資

練習(xí):
1、查看崗位名稱以及崗位包含所有員工的名字
2、查詢崗位名字機(jī)翼崗位內(nèi)員工個數(shù)
3、查詢公司男員工和女員工的員工個數(shù)
4、查詢崗位名字以及崗位的平均工資
5、查詢崗位名字以及各崗位的最高薪資
6、查詢崗位名字以及各崗位的最低薪資
7、查詢男員工與男員工的平均薪資,女員工與女員工的平均薪資
三、having
與where區(qū)別:
having過濾是在分組之后過濾
where是在分組之前過濾
where不能用聚合函數(shù)當(dāng)作條件
having 可以用聚合函數(shù)
實(shí)例;
1、查詢各崗位包含的員工個數(shù)小于2的崗位名、崗位內(nèi)包含員工名字、個數(shù)

2、查詢各崗位平均薪資大于1005的崗位名、平均工資

3、查詢各崗位平均薪資大于1000且小于1004的崗位名,平均工資

四、order by排序
表中排序默認(rèn)是按照id字段升序排列
實(shí)例: 表中按照年紀(jì)升序 排列


select max(salary) from employee; 這是是對的, 分組采用默認(rèn),可以用聚合函數(shù)
select max(salary) from employee where max(salary)>1000; 是錯的where運(yùn)行時候,分組還沒運(yùn)行,不能用聚合函數(shù)。


limit
用來限制最終打印到屏幕上的條數(shù)

實(shí)例:
取出工資最高的人的詳細(xì)信息

分頁功能: ?limit 0,5起始排序位置+ 個數(shù)限制