T-SQL查詢語句大總結(jié)

2018-06-08 18:16 更新

T-SQL查詢語句大總結(jié)

防偽碼:有志者事竟成,破釜沉舟,百二秦關(guān)終屬楚

 

注:表格及語法眾多,因此總結(jié)為sql server 語句,各位朋友如有需要可參考,謝謝!

 

案例一:表如下圖所示

實(shí)驗(yàn)需求:

1. 在products表中查詢出廠日期晚于2014年4月的水果信息

語句:select * from products

where 出廠日期>'2014-04-30'

 and 種類='水果'

 

2. 在products表中分組查詢所有水果、蔬菜、堅(jiān)果的總成本

語句:select 種類,SUM(成本)

as 總成本 from products

 group by 種類

 

3. 在products表中查詢所有水果的信息,并按照成本從高到低的順序顯示結(jié)果

語句:select * from products

where 種類='水果'  

order by 成本 desc

 

4. 在products表中查詢成本在1—5元之間的蔬菜信息

語句:select * from products

 where 種類='蔬菜'

 and 成本 between 1  and  5

 

5. 將products表中所有水果的名稱、種類和出廠日期信息插入到新表products_new中

語句:select 名稱,種類,出廠日期

into products_new  

from products where 種類='水果'

 

 

案例二:表如下圖所示

 


實(shí)驗(yàn)需求:

1、 在products表和sales表中查詢產(chǎn)品的名稱、種類、成本、銷售地點(diǎn)和銷售價(jià)格。

語句:select products.名稱,products.種類,products.成本,sales.銷售地點(diǎn),sales.銷售價(jià)格

From  products,sales

Where products.名稱=sales.名稱

 

或者:select a.名稱,a.種類,a.成本,b.銷售地點(diǎn),b.銷售價(jià)格

From  products as a  inner join sales as b  on  a.名稱=b.名稱

 

 

2、 在products表和sales表中查詢銷往海南的產(chǎn)品名稱、種類、成本和銷售價(jià)格。

語句:select products.名稱,products.種類,products.成本,sales.銷售價(jià)格

From products,sales

Where products.名稱=sales.名稱 and 銷售地點(diǎn)=’海南’

 

案例三:表如下圖所示

實(shí)驗(yàn)需求:

1、查詢王明的成績?結(jié)果:王明 90

Select 姓名,成績  

from  student where 姓名=王明

 

2、 給王明加2分?

Update student set 成績=成績+2

 where 姓名=’王明’

 

3、 查詢備注不為空的學(xué)生?

Select  *  from  student

 where 備注  is not null

 

4、 查詢成績大于95分以上的學(xué)生?

Select  *  from  student  

where 成績>95

 

5、 王明轉(zhuǎn)學(xué),把王明刪掉?

Delete from student

 where 姓名=‘王明’

 

6、 來了一位新同學(xué),名字叫于美麗?

Insert into student  

values(20,’于美麗’,’110110110’,3,100,’勤奮好學(xué)’)

 

7、 查詢成績大于95分,并且班級是2班的都有誰?

Select * from student

where 成績>95 and 所在班級=2

 

8、 查詢成績大于95分,并且班級是1、2班的都有誰?

Select * from student  

where 成績>95

and 所在班級 between 1  and  2

 

9、 查詢平均成績?

Select avg(成績) as 平均成績  from student

 

 

10、使用truncate刪除所有的數(shù)據(jù)

Truncate  table  student

 

 

實(shí)驗(yàn)案例四:表如下圖所示

 

實(shí)驗(yàn)需求:

1、顯示表中全部內(nèi)容

select * from 員工信息表

 

2、顯示工資大于5000員工的所有信息

select * from 員工信息表

where 工資>=5000

 

3、顯示所有在1950到1988年之間出生員工的所有信息

select * from 員工信息表

where 出生日期>='1950' and 出生日期<='1988'

 

4、查詢出所有住在昌平的員工

select * from 員工信息表

where 家庭住址 like '%昌平%'

 

5、所有銷售員的工資漲幅1000

update 員工信息表

set 工資=工資+1000

where 職位='銷售員'

 

6、刪除工資小于3000員工的記錄

delete from 員工信息表

where 工資<=3000

 

7、所有經(jīng)理的工資下調(diào)10%

update 員工信息表

set 工資=工資*0.9

where 職位 like '%經(jīng)理'

案例五:表如下圖所示


1、查詢年齡大于35,小于 50,并且職位是員工?

語句:select * from 員工信息表

where 年齡>35 and 年齡<50

and 職位='員工'

 

2、查詢員工的平均年齡?

語句:select AVG(年齡) as 平均年齡  from 員工信息表

 

3、查詢各種職位的平均年齡,并且按照每種職位的平均年齡降序排序?

語句:select 職位,AVG(年齡) as 平均年齡  from 員工信息表

group by 職位

order by AVG(年齡) desc

 

4、查詢年齡最大和最小的人是誰?

語句:select 員工姓名,年齡 from 員工信息表

where 年齡=(select MAX(年齡)

from 員工信息表) or

年齡=(select MIN(年齡)

from 員工信息表)

 

 

5、查詢每種職位有多少人?并且按每種職位的人數(shù)升序排序?

語句:select 職位,COUNT(員工id) as 人數(shù)

from 員工信息表

group by 職位

order by COUNT(員工id)

 

6、查詢年齡大于等于50歲和小于30歲的都有哪些人?

語句:select * from 員工信息表

where 年齡>=50 or 年齡<30

 

 

 

案例六:表如下圖所示

 


實(shí)驗(yàn)需求:

1、兩個(gè)表查詢

select 學(xué)生表.姓名,學(xué)生表1.電話,學(xué)生表1.家庭住址

from 學(xué)生表,學(xué)生表1

where 學(xué)生表.學(xué)生id=學(xué)生表1.學(xué)生id

 

2、三個(gè)表的查詢

select 學(xué)生表.姓名,課程表.課程名,成績表.分?jǐn)?shù)

from 學(xué)生表,課程表,成績表

where 學(xué)生表.學(xué)生id=成績表.學(xué)生id AND 成績表.課程ID=課程表.課程ID

 

3、合并兩個(gè)結(jié)果集

SELECT 姓名,學(xué)號,班級,國籍

FROM 二班

UNION

select 姓+' '+名,學(xué)號,班級,國籍

from 一班

order by 班級 desc,學(xué)號 asc

 

4、內(nèi)聯(lián)接(查找參加考試的學(xué)生的姓名和CNT成績,電話)

select s.姓名,s.電話,c.CNT

FROM 學(xué)生基本信息表 AS S INNER JOIN 學(xué)生成績表 AS C

ON S.姓名=C.姓名

 

5、左外連接(查找本班學(xué)生的姓名和CNT才成績,電話)

select s.姓名,s.電話,c.CNT

FROM 學(xué)生基本信息表 AS S LEFT OUTER  JOIN 學(xué)生成績表 AS C

ON S.姓名=C.姓名

 

6、右外連接(查找參加本次考試的學(xué)生的姓名和CNT才成績,電話)

select s.姓名,s.電話,c.CNT

FROM 學(xué)生基本信息表 AS S RIGHT OUTER JOIN 學(xué)生成績表 AS C

ON S.姓名=C.姓名

 

7、完全連接(查找所有學(xué)生的考試情況)

select s.姓名,s.電話,c.CNT

FROM 學(xué)生基本信息表 AS S FULL OUTER JOIN 學(xué)生成績表 AS C

ON S.姓名=C.姓名

 

8、自連接(查找每個(gè)員工的上司姓名)

SELECT Y.員工姓名,s.員工姓名 AS 上司姓名

from 員工信息表 as y inner join 員工信息表 as s

on y.上司ID=S.員工ID

 

9、子查詢(查找每個(gè)季度的生產(chǎn)數(shù)量,百分比)

select 季度,sum(生產(chǎn)數(shù)量) AS 每個(gè)季度的生產(chǎn)數(shù)量,

str((sum(生產(chǎn)數(shù)量)/(select sum(生產(chǎn)數(shù)量) from 生產(chǎn)表))*100)+'%' AS 百分比

from 生產(chǎn)表

group by 季度

order by 季度

 

10、在where子句中使用SELECT ,查找課程ID=1并且成績〉80的學(xué)生

select 學(xué)生表.姓名

from 學(xué)生表

where 80<(select 分?jǐn)?shù) from 成績表

where 學(xué)生表.學(xué)生ID=成績表.學(xué)生ID AND 成績表.課程ID=1)

 

11、 交叉連接

SELECT T.教師姓名,c.課程名

from 教員基本信息表 AS t cross join 課程表 AS C

案例七:

事務(wù),完成轉(zhuǎn)賬

注意:編輯事務(wù),如果轉(zhuǎn)賬1000會回滾,提示失敗,如果轉(zhuǎn)賬800,提示成功。

創(chuàng)建bank表,設(shè)置約束currentMoney>=1,執(zhí)行以下語句:

print '查看轉(zhuǎn)賬事務(wù)前的余額'

select * from bank

go

begin transaction

declare @errorsum int

set @errorsum =0

update bank set customermoney =customermoney -1000

where customername ='張三'

set @errorsum =@errorsum +@@ERROR

update bank set customermoney =customermoney +1000

where customername ='李四'

set @errorsum =@errorsum +@@ERROR

print '查看轉(zhuǎn)賬事務(wù)過程中的余額'

select * from bank

if @errorsum <>0

begin

print '交易失敗,回滾事物'

rollback transaction

end

else

begin

print '交易成功,提交事務(wù),寫入鍵盤,永久保存'

commit transaction

end

go

print '查看轉(zhuǎn)賬事務(wù)后的余額'

select * from bank

go



交易失敗:

交易成功:



本文出自 “一盞燭光” 博客,請務(wù)必保留此出處http://yw666.blog.51cto.com/11977292/1840932

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號