|
sql查詢方式總結(jié)
簡(jiǎn)單查詢 1,檢索表中所有列 select * from <表名> 2,檢索表中特定列 select <列名表列> from <表名> 3,重排列順序 select cloumn_3,cloumn_1 from <表名> 4,用單引號(hào)加入字符串 select cloumn_3,cloumn_1 '所要加的字段名' from<表名> 5,改變列標(biāo)題 select cloumn_3,cloumn_1 as '新列名' from <表名> 6,消除重復(fù)行 select distinct cloumn_3 from <表名> 7,返回有限的結(jié)果 select top n [percent]* from <表名> 8,使用算數(shù)運(yùn)算符操縱列 example: select cloumn_1+'('+cloumn_2+')' [as] '新列名',cloumn_3*cloumn_4 '新列名' from <表名> 9,使用函數(shù)操縱列 --常用函數(shù)有substring()[取子字符串]、getdate()[返回當(dāng)前日期和時(shí)間]、year(data)[返回日期中的年份]、convert()[類型轉(zhuǎn)換] example: select distinct substring(title,1,5) from pubs 又如:返回當(dāng)前服務(wù)器的用戶名 select 'login'=suser_sname() 再如查詢pubs數(shù)據(jù)庫(kù)的titles表中所有書的價(jià)格信息,對(duì)于書名長(zhǎng)度超過(guò)38個(gè)字符的,將其余部分截掉 use pubs select convert(char(38),title)+'IS $'+ convert(varchar(10),price) from titles 選擇行查詢 1,基于比較選擇行 example: select 價(jià)格,* from goods where 價(jià)格>=1000 2,基于范圍選擇行 select * from goods where 價(jià)格 between 20 and 2000 --3,基于列表選擇行 select * from goods where 品名 not in('方正A','聯(lián)想') 4,基于字符串選擇行 --百分號(hào)(%):代表任意多個(gè)字符 --下劃線(_):代表單個(gè)字符 --中括號(hào)([]):代表指定范圍內(nèi)的單個(gè)字符 --復(fù)合符號(hào)([^]):代表不在指定范圍內(nèi)的單個(gè)字符 --5,基于未知選擇行 --使用IS NULL IS not NULL select 姓名,職業(yè) from students where 聯(lián)系電話 IS null --6,基于多個(gè)搜索條件選擇行 select 姓名,職業(yè),聯(lián)系電話,地址 from students where (聯(lián)系電話 like '%3%'or 聯(lián)系電話 like '%5%') and (地址 like '河南') --7,結(jié)果排序 select * from goods select 價(jià)格 from goods order by 價(jià)格 ASC 生成總結(jié)查詢 使用SQL查詢語(yǔ)言,用戶可以方便地為查詢到的結(jié)果進(jìn)行分組、計(jì)算或?qū)ζ溥M(jìn)行過(guò)濾等,從而得到總結(jié)性的數(shù)據(jù)結(jié)果集。 1,使用集合函數(shù)進(jìn)行統(tǒng)計(jì) (1)AVG 該函數(shù)用于計(jì)算查詢結(jié)果的平均值。其語(yǔ)法格式如下: AVG([all | distinct] 算數(shù)表達(dá)式) 其中各參數(shù)的意義如下: all:全部數(shù)據(jù)都參與計(jì)算,為默認(rèn)的選項(xiàng)。 distinct:消除重復(fù)的數(shù)據(jù),只計(jì)算不同的值的平均值。 算數(shù)表達(dá)式:該表達(dá)式即可以只涉及一列,也可涉及多列 example:要計(jì)算Sales數(shù)據(jù)庫(kù)中Goods表中的所有貨品的平均價(jià)格 use Sales select avg(價(jià)格) from goods (2)min、max 這兩個(gè)函數(shù)用于查詢最小值和最大值,語(yǔ)法格式如下: min([all | distinct] 算數(shù)表達(dá)式) (3)sum 該函數(shù)用于計(jì)算查詢到的數(shù)據(jù)值得總和 example:計(jì)算Pubs數(shù)據(jù)庫(kù)中的titles表中所有商業(yè)類書籍的平均預(yù)付款和本年度迄今為止的全部銷售額。 use pubs select avg(advance),sum(ytd_sales) from titles where type='business' (4)count 該函數(shù)可以計(jì)算查詢到的結(jié)果的數(shù)目 example:查詢sales數(shù)據(jù)庫(kù)中customers表中客戶地址的數(shù)量。 use sales select count(distinct 地址) from customers 2,數(shù)據(jù)分組 (1)group by子句 在SQL Sever中,可以按照一定的條件對(duì)查詢到的結(jié)果進(jìn)行分組,然后對(duì)每一組數(shù)據(jù)計(jì)算統(tǒng)計(jì)信息。 說(shuō)明:1,使用group by 子句能按列或表達(dá)式分組,一般與集合函數(shù)一起使用,每組差生一個(gè)值。 2,在包含group by子句的查詢語(yǔ)句中,select語(yǔ)句后的所有字段列表,除集合函數(shù)外,都應(yīng)該包含 在group by子句中,否則會(huì)出錯(cuò)。 3,對(duì)數(shù)據(jù)進(jìn)行分組時(shí),也可以用條件進(jìn)行選擇,這就是having子句。 (2)having子句 having子句可以用來(lái)向使用Group by子句的查詢中添加過(guò)濾準(zhǔn)則,即檢查分組之后的各組是否滿足條件。having子句語(yǔ)法與where子句一樣,但兩者之間還是存在一定區(qū)別,具體如下: 1,where子句的作用是檢查每條記錄是否滿足條件,而having子句是檢查分組之后的各組是否滿足條件。 2,having子句是針對(duì)Group by子句的,沒(méi)有Group by子句時(shí)不能使用having子句。 3,having子句可以在條件中包含集合函數(shù),但where子句不行 exam:顯示sales數(shù)據(jù)庫(kù)中Goods表中存貨量大于70的貨品及庫(kù)存數(shù)量,具體代碼如下: use sales ----select 品名,庫(kù)存數(shù)量 from Goods where 庫(kù)存數(shù)量>70 select 品名,庫(kù)存數(shù)量=sum(庫(kù)存量) from Goods group by 品名 having sum(庫(kù)存量)>7 ①where子句排出不滿足條件的行 ②group by子句收集滿足where子句的搜索行,并將這些行分組 ③having子句排出不符合其條件的組 此外,使用group by all能夠顯示所有的組,即便是被where子句排除的組也將會(huì)顯示出來(lái) 3,計(jì)算匯總數(shù)據(jù) (1)compute子句 可以使用該子句計(jì)算匯總數(shù)據(jù),該匯總數(shù)據(jù)將作為附加的匯總列出現(xiàn)在結(jié)果集的最后 exam:在pubs數(shù)據(jù)庫(kù)的titles表中查詢類型是以cook結(jié)尾的書的價(jià)格和總價(jià) use pubs select type,price from titles where type like '%cook' order by type,price compute sum(price) (2)compute by 子句 在查詢中使用該子句可以按給定的條件將查詢結(jié)果分組,并為每種結(jié)果計(jì)算匯總數(shù)據(jù)。 exam:在pubs數(shù)據(jù)庫(kù)的titles表中查詢類型是以cook結(jié)尾的書的價(jià)格和每種類型的總價(jià) use pubs select type,price from titles where type like '%cook' order by type,price compute sum(price) by type (3)計(jì)算匯總數(shù)據(jù)時(shí)的注意事項(xiàng) 在使用compute子句和compute by 子句時(shí),應(yīng)注意下面的限制條件: 1,關(guān)鍵字distinct不允許同集合函數(shù)一起使用 2,compute子句中的列必須在select后面的選擇列表 3,select into 不能和compute子句一塊使用 4,若使用compute by子句,則必須使用order by子句。此時(shí),compute by子句后出現(xiàn)的列必須與order by后出現(xiàn)的列相同,最少也應(yīng)該是其子集,而且必須具有相同的從左到右的順序并且以相同的表達(dá)式開頭,不能跳過(guò)任何表達(dá)式。 |
|
|