?? 博客主頁:博主鏈接
?? 本文由 M malloc 原創(chuàng),首發(fā)于 CSDN??
?? 學(xué)習(xí)專欄推薦:LeetCode刷題集!
?? 歡迎點(diǎn)贊 ?? 收藏 ?留言 ?? 如有錯(cuò)誤敬請(qǐng)指正!
?? 未來很長(zhǎng),值得我們?nèi)Ρ几案篮玫纳?
------------------??分割線??-------------------------
————————————————
??大家好呀,今天是我第四次寫sql_server,也是最近才學(xué)習(xí)sql_server,也想著記錄一下自己的學(xué)習(xí)過程,并且分享給大家尼!
??查詢語句
?? 一、sql_server技術(shù)介紹
SQL Server 是由微軟公司(Microsoft)開發(fā)的關(guān)系型數(shù)(RDBMS)。RDBMS 是 SQL 以及所有現(xiàn)代數(shù)據(jù)庫系統(tǒng)的基礎(chǔ),比如 MS SQL Server,IBM DB2,Oracle,MySQL 以及微軟的 Microsoft Access。
??二、學(xué)習(xí)前的準(zhǔn)備工作
編程軟件:SQL Server Management Studio 2012
帶好你的小板凳,我們一起揚(yáng)帆起航!
??模糊查詢
在SQL中有一種查詢叫模糊查詢,是什么樣子的呢?接下來我們就來詳細(xì)的看幾道例題吧!
??三、模糊查詢的及其語法講解
如下圖所示,正是我們會(huì)在查詢中遇到的一些語法問題啦!
接下來我們來看幾個(gè)例子吧!
1.查詢出姓劉的員工信息
語法:select * from 表名 where like 條件
select * from People where PeopleName like '劉%'
2.查詢出名字字中含有尚的員工信息
select * from People where PeopleName like '%尚%'
3.查詢出名字中含有尚或者史的員工信息
注意看這里是或者,所以我們用到的關(guān)鍵字就得有or這個(gè)關(guān)鍵字啦!
select * from People where PeopleName like '%尚%' or PeopleName like '%羽'
4.查詢出姓劉的員工,名字時(shí)兩個(gè)字 _下劃線代表有且僅有一個(gè)字符
注意看,這個(gè)時(shí)候我們只想查詢劉后面接一個(gè)字的名字,例如劉備,假設(shè)是劉大漢就不行啦!
select * from People where PeopleName like '劉_'
5.查詢名字最后一個(gè)字為香,名字一共三個(gè)字的員工信息
那么根據(jù)上述描寫,一個(gè)下劃線代表著一個(gè)字,那么這個(gè)時(shí)候我們用兩個(gè)下劃線是不是就行啦!
select * from People where PeopleName like '__香'
6.查詢出電話號(hào)碼開頭為138的員工信息
select * from People where PeoplePhone like '138%'
7.查詢出電話號(hào)碼開頭為138的,第四位好像是7或者8,最后一個(gè)號(hào)碼是5
此時(shí)我們發(fā)先題目要求我們呢帶有查詢的一個(gè)范圍,這個(gè)時(shí)候我們就需要用到[]這個(gè)語法就行啦!
[]這個(gè)代表的是通配符的意思,里面填寫的是數(shù)的范圍
select * from People where PeoplePhone like '138[7,8]%5'
此時(shí)我們發(fā)現(xiàn)我們建立的表中是沒有這樣的數(shù)據(jù)的。
8.查詢出電話號(hào)碼開頭為138的,第四位好像是2者5,最后一個(gè)號(hào)碼不是2和3
select * from People where PeoplePhone like '138[2,3,4,5]%[^2,3]'
??聚合函數(shù)
下圖是聚合函數(shù)的幾個(gè)函數(shù)名!
接下來我?guī)Т蠹伊私鈳讉€(gè)例子吧!
1.求員工的總數(shù)
select count(*) 人數(shù) from People
2.求最大值,求最高的工資
select max(PeopleSalary) 最高工資 from People
3.求最小值,求最小的工資
select min(PeopleSalary) from People
4.求和,求所有員工的工資總和
select sum(PeopleSalary) 總和工資 from People
5.求平均值,求所有員工的平均工資
select avg(PeopleSalary) 平均工資 from People
我們會(huì)發(fā)現(xiàn)這后面會(huì)有很多小數(shù)點(diǎn),這時(shí)候我們可以用到一個(gè)函數(shù)啦!round這個(gè)函數(shù)
select round(avg(PeopleSalary),2) from People
6.求數(shù)量,最大值,最小值,總和,平均值,在一行顯示
select count(*) 人數(shù),max(PeopleSalary) 最高工資,min(PeopleSalary),sum(PeopleSalary) 總和工資,round(avg(PeopleSalary),2) from People
這一題就是把前面的全部整合到一起啦!
7.查出武漢地區(qū)的數(shù)量,最大值,最小值,總和,平均值,在一行顯示
這里我們發(fā)現(xiàn)還多加了一個(gè)條件,需要有指定的城市也很簡(jiǎn)單啦!
select count(*) 人數(shù),max(PeopleSalary) 最高工資,min(PeopleSalary),sum(PeopleSalary) 總和工資,round(avg(PeopleSalary),2) from People where PeopleAddress = '武漢'
8.求出工資比平均工資高的人員信息
select * from People where PeopleSalary >
(select avg(PeopleSalary) from People)
這里運(yùn)用到了一個(gè)子查詢,首先我們可以先把工資求出來,然后再通過子查詢查詢到平均工資,這樣在做一個(gè)比較就行啦!
9.求數(shù)量,年齡最大值,最小值,年齡總和,年齡平均值
在查詢年齡的時(shí)候,我們可以運(yùn)用到一個(gè)函數(shù),year(),它可以返回對(duì)應(yīng)的年份,在運(yùn)用一個(gè)函數(shù)getdate(),這個(gè)函數(shù)的作用就是求出實(shí)時(shí)的年月日,再用實(shí)時(shí)的年月減去出生的年就行啦!
select *,year(getdate()) - year(PeopleBirth) 年齡 from People
select count(*),
max(year(getdate()) - year(PeopleBirth)) 最高年齡,
min(year(getdate()) - year(PeopleBirth)) 最低年齡,
sum(year(getdate()) - year(PeopleBirth)) 年齡總和,
avg(year(getdate()) - year(PeopleBirth)) 平均年齡
from People
10.計(jì)算出月薪在10000以上的男性,年齡最大值,最小值,年齡總和,年齡平均值
這一道題目就是做了一個(gè)條件的限制,我們需要在后面加上限制條件就行啦!
select '月薪在10000以上' 月薪,'男' 性別,
count(*),
max(year(getdate()) - year(PeopleBirth)) 最高年齡,
min(year(getdate()) - year(PeopleBirth)) 最低年齡,
sum(year(getdate()) - year(PeopleBirth)) 年齡總和,
avg(year(getdate()) - year(PeopleBirth)) 平均年齡
from People where PeopleSalary > 10000 and PeopleSex = '男'
11.統(tǒng)計(jì)出所在地在武漢或者北京’,年齡最大值,最小值,年齡總和,年齡平均值
select count(*),
max(year(getdate()) - year(PeopleBirth)) 最高年齡,
min(year(getdate()) - year(PeopleBirth)) 最低年齡,
sum(year(getdate()) - year(PeopleBirth)) 年齡總和,
avg(year(getdate()) - year(PeopleBirth)) 平均年齡
from People where PeopleAddress in('武漢','北京') and PeopleSex = '女'
我們會(huì)發(fā)現(xiàn)此時(shí)我們的表中無值的!
12.求出年齡比平均年齡高的員工信息
這里首先我們可以先通過子查詢查出平均年齡的信息,然后再用表中的年齡信息與平均年齡信息進(jìn)行比較,如果大于平均年齡則輸出就行啦!
select * from People where (year(getdate()) - year(PeopleBirth)) > (select avg(year(getdate())- year(PeopleBirth)) from People)
??分組查詢(group by)
1.根據(jù)員工所在地區(qū)分組統(tǒng)計(jì)員工人數(shù),員工工資總和,平均工資,最高工資,最低工資
首先在分組查詢的過程中,我們需要先看題目要求對(duì)誰分組,這里是對(duì)地區(qū)分組,所以我們group by的就是PeopleAddress
select PeopleAddress 地區(qū), count(*),sum(PeopleSalary),avg(PeopleSalary),max(PeopleSalary),min(PeopleSalary) from People
group by PeopleAddress
2.根據(jù)員工所在地區(qū)分組統(tǒng)計(jì)員工人數(shù),員工工資總和,平均工資,最高工資,最低工資,1985年以后出身的員工不參與統(tǒng)計(jì)
從這里我們看到,這里還加了一些個(gè)條件,此時(shí)我們就需要用where來進(jìn)行限制啦!
select PeopleAddress 地區(qū), count(*),sum(PeopleSalary),avg(PeopleSalary),max(PeopleSalary),min(PeopleSalary) from People
where PeopleBirth < '1985-1-1'
group by PeopleAddress
3.根據(jù)員工所在地區(qū)分組統(tǒng)計(jì)員工人數(shù),員工工資總和,平均工資,最高工資,最低工資,要求員工人數(shù)至少在兩個(gè)人及以上的,1985年以后出身的員工不參與統(tǒng)計(jì)
select PeopleAddress 地區(qū), count(*),sum(PeopleSalary),avg(PeopleSalary),max(PeopleSalary),min(PeopleSalary) from People
where PeopleBirth < '1985-1-1'
group by PeopleAddress having count(*) >= 2
當(dāng)我們用了group by時(shí),我們的where里面就不可以用聚合函數(shù)了,所以此時(shí)我們需要用having這個(gè)關(guān)鍵字!
??總結(jié)
今天的分享就到此為止啦!我們下期再見啦!一定要好好吸收啊!我是愛你們的M malloc
文章來源:http://www.zghlxwxcb.cn/news/detail-474124.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-474124.html
到了這里,關(guān)于[MySQL]不允許你不會(huì)SQL語句之查詢語句的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!