电竞比分网-中国电竞赛事及体育赛事平台

分享

sql查詢方式總結(jié)

 昵稱7196596 2011-06-23
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á)式。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多