# 查詢(xún)結(jié)果'SELECT*FROM t_student;-- =在where 子句后面表示 等于SELECT*FROM t_student WHERE stu_sex='男';-- 不等于男SELECT*FROM t_student WHERE stu_sex<>'男';SELECT*FROM t_student WHERE stu_sex!='男';SELECT*FROM t_student WHERE stu_score>60;SELECT*FROM t_student WHERE stu_score>=60;-- 邏輯運(yùn)算-- and 與 or 或 not 非-- and 多個(gè)條件并列,必須全部成立SELECT*FROM t_student WHERE stu_score>=60AND stu_sex='男';-- or多個(gè)條件 符合一個(gè)就行SELECT*FROM t_student WHERE stu_score>=60OR stu_sex='男';# 查詢(xún)成績(jī)合格學(xué)生>=60 <=100SELECT*FROM t_student WHERE stu_score>=60AND stu_score<=100SELECT*FROM t_student WHERE stu_score BETWEEN60AND100;
模糊查詢(xún)
like 是否匹配一個(gè)模式 一般和通配符搭配使用 可以判斷字符數(shù)值或者數(shù)值型
通配符: % 任意多個(gè)字符,包含0個(gè)字符 _ 只能匹配單個(gè)字符
between and 兩者直接 閉區(qū)間
in 判斷某字段的值是否屬于in列表中的某一項(xiàng)
is null (為空) 或者is not null(不為空)
SELECT*FROM t_student WHERE stu_name LIKE'聶%'SELECT*FROM t_student WHERE stu_name LIKE'聶_'SELECT*FROM t_student WHERE stu_name LIKE'%聶%'-- 查詢(xún)成績(jī)?yōu)?0和90的學(xué)生SELECT*FROM t_student WHERE stu_score=80OR stu_score=90OR stu_score=100;SELECT*FROM t_student WHERE stu_score IN(80,90,100)SELECT*FROM t_student WHERE stu_score NOTIN(80,90,100)-- 查詢(xún)性別不為空的-- is null (為空) 或者is not null(不為空)SELECT*FROM t_student WHERE stu_sex ISNULL;SELECT*FROM t_student WHERE stu_sex ISNOTNULL;
UNION和UNION ALL
union用的比較多的是union all是直接連接,取到得得所有得值,記錄可能重復(fù)
union是取唯一值,記錄沒(méi)有重復(fù)
UNION Union將會(huì)按照字段的順序進(jìn)行排序;UNION ALL只是簡(jiǎn)單的將兩個(gè)結(jié)果合并后就返回。
1、對(duì)重復(fù)結(jié)果的處理:UNION在進(jìn)行表鏈接后會(huì)篩選掉重復(fù)的記錄,Union All不會(huì)去除重復(fù)記錄。 2、對(duì)排序的處理:Union將會(huì)按照字段的順序進(jìn)行排序;UNION ALL只是簡(jiǎn)單的將兩個(gè)結(jié)果合并后就返回。 從效率上說(shuō),UNION ALL 要比UNION快很多,所以,如果可以確認(rèn)合并的兩個(gè)結(jié)果集中不包含重復(fù)數(shù)據(jù)且不需要排序時(shí)的話(huà),那么就使用UNION ALL。
/*
UNION
Union將會(huì)按照字段的順序進(jìn)行排序;UNION ALL只是簡(jiǎn)單的將兩個(gè)結(jié)果合并后就返回。
*/# union是取唯一值 記錄沒(méi)有重復(fù) sql1與 sql2 查詢(xún)列 必須一一對(duì)應(yīng) 負(fù)責(zé)出現(xiàn)數(shù)據(jù)混亂2q/*
union語(yǔ)法
sql1
union
sql2union all語(yǔ)法
sql1
union all
sql2
*/SELECT`stu_num`,`stu_name`,`stu_birth`FROM t_student WHERE stu_name LIKE'聶%'UNIONSELECT`stu_name`,`stu_num`,`stu_phone`FROM t_student WHERE stu_name LIKE'聶%'SELECT`stu_num`,`stu_name`FROM t_student WHERE stu_name LIKE'聶%'UNIONALLSELECT`stu_num`,`stu_name`FROM t_student WHERE stu_name LIKE'聶%'
排序
查詢(xún)結(jié)果排序
,使用 ORDER BY 子句排序 order by 排序列 ASC/DESC
asc代表的是升序,desc代表的是降序,如果不寫(xiě),默認(rèn)是升序
order by子句中可以支持單個(gè)字段、多個(gè)字段、表達(dá)式、函數(shù)、別名
-- order by DESC 降序 asc代表的是升序-- 默認(rèn)是按照主鍵-- 指定排序序列,排序規(guī)則SELECT*FROM t_student ORDERBY`stu_num`DESCSELECT*FROM t_student ORDERBY`stu_num`ASC-- 在條件后添加 排序SELECT*FROM t_student WHERE stu_sex='男'ORDERBY`stu_num`ASC
分組查詢(xún)中的篩選條件分為兩類(lèi): 數(shù)據(jù)源 源位置 關(guān)鍵字 分組前篩選 原始表 group by子句的前面 where 分組后篩選 分組后的結(jié)果集 group by的后面 having
SELECT stu_sex ,COUNT(*)FROM t_student GROUPBY stu_sex;SELECT stu_sex ,MAX(`stu_score`)FROM t_student GROUPBY stu_sex;-- 添加查詢(xún)條件SELECT stu_sex ,COUNT(*) c
FROM t_student
WHERE stu_score>0-- 分組前對(duì)數(shù)據(jù)進(jìn)行篩選過(guò)濾GROUPBY stu_sex -- 分組ORDERBY c DESC-- 對(duì)組后的結(jié)果進(jìn)行排序LIMIT1;-- 查詢(xún)性別人數(shù)大于2的 是哪個(gè)性別 對(duì)分組后的結(jié)果進(jìn)行條件篩選SELECT stu_sex ,COUNT(*) c
FROM t_student
WHERE stu_score>0-- 分組前對(duì)數(shù)據(jù)進(jìn)行篩選過(guò)濾GROUPBY stu_sex
HAVING c>2-- 對(duì)分組后進(jìn)行條件過(guò)濾ORDERBY c DESC-- 對(duì)組后的結(jié)果進(jìn)行排序