您好,登錄后才能下訂單哦!
T-SQL查詢語句大總結(jié)
防偽碼:有志者事竟成,破釜沉舟,百二秦關(guān)終屬楚
注:表格及語法眾多,因此總結(jié)為sql server 語句,各位朋友如有需要可參考,謝謝!
案例一:表如下圖所示
實驗需求:
1. 在products表中查詢出廠日期晚于2014年4月的水果信息
語句:select * from products
where 出廠日期>'2014-04-30'
and 種類='水果'
2. 在products表中分組查詢所有水果、蔬菜、堅果的總成本
語句: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 種類='水果'
案例二:表如下圖所示
實驗需求:
1、 在products表和sales表中查詢產(chǎn)品的名稱、種類、成本、銷售地點和銷售價格。
語句:select products.名稱,products.種類,products.成本,sales.銷售地點,sales.銷售價格
From products,sales
Where products.名稱=sales.名稱
或者:select a.名稱,a.種類,a.成本,b.銷售地點,b.銷售價格
From products as a inner join sales as b on a.名稱=b.名稱
2、 在products表和sales表中查詢銷往海南的產(chǎn)品名稱、種類、成本和銷售價格。
語句:select products.名稱,products.種類,products.成本,sales.銷售價格
From products,sales
Where products.名稱=sales.名稱 and 銷售地點=’海南’
案例三:表如下圖所示
實驗需求:
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
實驗案例四:表如下圖所示
實驗需求:
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
案例六:表如下圖所示
實驗需求:
1、兩個表查詢
select 學(xué)生表.姓名,學(xué)生表1.電話,學(xué)生表1.家庭住址
from 學(xué)生表,學(xué)生表1
where 學(xué)生表.學(xué)生id=學(xué)生表1.學(xué)生id
2、三個表的查詢
select 學(xué)生表.姓名,課程表.課程名,成績表.分?jǐn)?shù)
from 學(xué)生表,課程表,成績表
where 學(xué)生表.學(xué)生id=成績表.學(xué)生id AND 成績表.課程ID=課程表.課程ID
3、合并兩個結(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、自連接(查找每個員工的上司姓名)
SELECT Y.員工姓名,s.員工姓名 AS 上司姓名
from 員工信息表 as y inner join 員工信息表 as s
on y.上司ID=S.員工ID
9、子查詢(查找每個季度的生產(chǎn)數(shù)量,百分比)
select 季度,sum(生產(chǎn)數(shù)量) AS 每個季度的生產(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
交易失敗:
交易成功:
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。