select語(yǔ)句執(zhí)行流程:
專注于為中小企業(yè)提供網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)湖口免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了1000+企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。START------>1.FROM
------>2.WHERE(選擇,合適的行)
------>3.GROUP BY(分組)
------>4.HAVING(對(duì)分組進(jìn)行過(guò)濾)
------>5.ORDER BY(排序)
------>6.SELECT(投影,合適的字段)
------>7.LIMIT ------>end result
select單表查詢:
關(guān)鍵字:
DISTINCT #數(shù)據(jù)去重 例:select DISTINCT gender from students; VARIABLES #mysql服務(wù)器自身內(nèi)置變量 例:select variables like 'query%'; AS #顯示時(shí)使用別名 例:select name as stuname from students; IN 例:select name,age from students where age in (18,19,25); IS NULL #取值為空,IS NOT NULL: 取值不為空 like #%任意長(zhǎng)度任意字符 _任意單個(gè)字符 RLIKE #使用正則表達(dá)式 GROUP #根據(jù)指定的條件把查詢結(jié)果進(jìn)行分組以用于做聚合運(yùn)算 內(nèi)置函數(shù):avg() , max() , min() , count() , sum() order by #根據(jù)指定字段對(duì)查詢結(jié)果進(jìn)行排序 升序:ASC(默認(rèn)) 降序:DESC LIMIT [[offset,]row_count] #對(duì)查詢的結(jié)果進(jìn)行輸出行數(shù)數(shù)量的限制 對(duì)查詢結(jié)果中的數(shù)據(jù)請(qǐng)求施加‘鎖’: FOR UPDATE :寫鎖,獨(dú)占鎖,排他鎖 LOCK IN SHARE MODE :讀鎖,共享鎖例:查看男女同學(xué)的平均年齡
select avg(age),gender from students group by gender ;例:查看平均年齡大于20的性別
select avg(age),gender as '年齡' from students group by gender having 年齡>20;例:查看姓名,年齡以年齡倒序排序
select name,age from students order by age desc;例:年齡從小到大查看排名11至20的同學(xué)的姓名
select name,age from students order by age limit 10,10 ;練習(xí)題:
1. 在students表中,年齡大于25,且為男性的同學(xué)的姓名和年齡
select name,age from students where gender='m' and age>25;2. 以classID為分組依據(jù),顯示每組的平均年齡
select avg(age),classID from students where classID is not null group by classID;3. 顯示第二題中平均年齡大于30的分組及平均年齡
select avg(age),classID from students group by classID having avg(age)>30;4. 顯示名字以L開(kāi)頭的同學(xué)的相關(guān)信息
select * from students where name like 'L%';5. 顯示teacherID非空的同學(xué)的相關(guān)信息
select * from students where teacherID is not null;6. 以年齡排序后顯示年齡大的前10位同學(xué)的信息
select * from students order by age DESC limit 10;7. 查詢年齡大于等于20歲,小于等于25歲的同學(xué)的信息,用三種方法
select * from students where age>=20 and age<=25; select * from students where age between 20 and 25; select * from students where age in (20,21,22,23,24,25);select多表查詢:
例:
select * from students,teachers where students.teacherID=teachers.TID ; #相當(dāng)于內(nèi)連接 select s.name,c.class from students as s,classes as c where s.classID=c.classID;不等值連接:
自然連接:
自連接:一張表中一個(gè)字段的值等于另一個(gè)字段的值。
例:
select s.name,t.name from students as s,teacher as t where s.TeacherID=t.stuID;外連接:
左外連接:以左側(cè)表為準(zhǔn),以某一字段等值建立連接關(guān)系,如左表有的右表也有就一一對(duì)應(yīng),如左表有右表沒(méi)有左表顯示所有,右表留空對(duì)應(yīng)。(顯示左表所有,右表有的就對(duì)應(yīng)沒(méi)有就留空)
使用方法:FROM tb1 LEFT JOIN tab2 ON tab1.col1=tab2.col;例:
select s.name,c.class from students as s LEFT JOIN classes as c ON s.classID=c.classID;右外連接:
使用方法:FROM tb1 RIGHT JOIN tab2 ON tab1.col1=tab2.col子查詢:在查詢語(yǔ)句中嵌套著查詢語(yǔ)句(mysql支持不好,少用)
基于某語(yǔ)句結(jié)果再次進(jìn)行查詢
用在where子句中的子查詢:
(1) 用在比較表達(dá)式中的子查詢,子查詢僅能返回單個(gè)值:
例查找大于平均年齡的同學(xué)名字和年齡:
select name,age from students where age>(select avg(age) from students);(2)用在IN中的子查詢:子查詢應(yīng)該單鍵查詢并返回一個(gè)或多個(gè)值構(gòu)成列表
例:查找老師年齡和同學(xué)年齡相等的
select name,age from students where age in (select age from teachers);(3)用于EXISTS
用于from子句中的子查詢:
例查找平均年齡是30的班級(jí):
select s.aage,s.classID from (select avg(age) as aage,classID from students where classID is not null group by classID) as s where s.aage=30;聯(lián)合查詢:把兩個(gè)表查詢的結(jié)果合并成一個(gè)。以前面表的字段為準(zhǔn),后面的表填充內(nèi)容。
例:
select name,age from students UNION select name,age from teachers;另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。