久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

SQL語(yǔ)句的優(yōu)化方法

時(shí)間:2019-05-13 16:21:54下載本文作者:會(huì)員上傳
簡(jiǎn)介:寫寫幫文庫(kù)小編為你整理了多篇相關(guān)的《SQL語(yǔ)句的優(yōu)化方法》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫(kù)還可以找到更多《SQL語(yǔ)句的優(yōu)化方法》。

第一篇:SQL語(yǔ)句的優(yōu)化方法

SQL語(yǔ)句的優(yōu)化方法

1.1注釋使用

在語(yǔ)句中多寫注釋,注釋不影響SQL語(yǔ)句的執(zhí)行效率。增加代碼的可讀性。

1.2對(duì)于事務(wù)的使用

盡量使事務(wù)處理達(dá)到最短,如果事務(wù)太長(zhǎng)最好按功能將事務(wù)分開(kāi)執(zhí)行(如:可以讓用戶在界面上多幾步操作)。事務(wù)太長(zhǎng)很容易造成數(shù)據(jù)庫(kù)阻塞,用戶操作速度變慢或死機(jī)情況。

1.3對(duì)于與數(shù)據(jù)庫(kù)的交互

盡量減少與數(shù)據(jù)庫(kù)的交互次數(shù)。如果在前端程序?qū)懹醒蛟L問(wèn)數(shù)據(jù)庫(kù)操作,最好寫成將數(shù)據(jù)一次讀到前端再進(jìn)行處理或者寫成存儲(chǔ)過(guò)程在數(shù)據(jù)庫(kù)端直接處理。

1.4對(duì)于SELECT *這樣的語(yǔ)句,不要使用SELECT *這樣的語(yǔ)句,而應(yīng)該使用SELECT table1.column1這樣的語(yǔ)句,明確指出要查詢的列減少數(shù)據(jù)的通訊量并且這樣的代碼可讀性好,便于維護(hù)。

1.5盡量避免使用游標(biāo)

它占用大量的資源。如果需要row-by-row地執(zhí)行,盡量采用非光標(biāo)技術(shù),如:在客戶端循環(huán),用臨時(shí)表,Table變量,用子查詢,用Case語(yǔ)句等等。如果使用了游標(biāo),就要盡量避免在游標(biāo)循環(huán)中再進(jìn)行表連接的操作。

1.6盡量使用count(1)

count函數(shù)只有在統(tǒng)計(jì)表中所有行數(shù)時(shí)使用,而且count(1)比count(*)更有效率。

1.7IN和EXISTS

EXISTS要遠(yuǎn)比IN的效率高。里面關(guān)系到full table scan和range scan。幾乎將所有的IN操作符子查詢改寫為使用EXISTS的子查詢。

1.8注意表之間連接的數(shù)據(jù)類型

避免不同類型數(shù)據(jù)之間的連接。

1.9盡量少用視圖

對(duì)視圖操作比直接對(duì)表操作慢,可以用stored procedure來(lái)代替她。特別的是不要用視圖嵌套,嵌套視圖增加了尋找原始資料的難度。我們看視圖的本質(zhì):它是存放在服務(wù)器上的被優(yōu)化好了的已經(jīng)產(chǎn)生了查詢規(guī)劃的SQL。對(duì)單個(gè)表檢索數(shù)據(jù)時(shí),不要使用指向多個(gè)表的視圖,直接從表檢索或者僅僅包含這個(gè)表的視圖上讀,否則增加了不必要的開(kāi)銷,查詢受到干擾。

1.10沒(méi)有必要時(shí)不要用DISTINCT和ORDER BY

這些動(dòng)作可以改在客戶端執(zhí)行,它們?cè)黾恿祟~外的開(kāi)銷。

1.11避免相關(guān)子查詢

一個(gè)列的標(biāo)簽同時(shí)在主查詢和where子句中的查詢中出現(xiàn),那么很可能當(dāng)主查詢中的列值改變之后,子查詢必須重新查詢一次。查詢嵌套層次越多,效率越低,因此應(yīng)當(dāng)盡量避免子查詢。如果子查詢不可避免,那么要在子查詢中過(guò)濾掉盡可能多的行。

1.1注意UNion和`UNion all 的區(qū)別

UNION all執(zhí)行效率高。

1.1外鍵關(guān)聯(lián)的列應(yīng)該建立索引

(如子表id)主子表單據(jù)肯定要建視圖,2個(gè)表的關(guān)聯(lián)以2個(gè)表中的MainID為關(guān)系,所以,需要給子表的MainID單獨(dú)建索引,這將很大地提高視圖的速度。例如Gy_InOutSub中的InoutMainid增加索引。

第二篇:SQL語(yǔ)句性能優(yōu)化

我也做了很長(zhǎng)時(shí)間醫(yī)療軟件,也寫過(guò)不少sql優(yōu)化,沒(méi)有詳細(xì)記錄下來(lái),個(gè)人感覺(jué)下面轉(zhuǎn)載的更符合醫(yī)院醫(yī)療軟件實(shí)際業(yè)務(wù),很認(rèn)可大部分所寫的原則,固轉(zhuǎn)載過(guò)來(lái),以作借鑒。軟件的根本還是在于更細(xì)更精,在于從客戶的實(shí)際使用考慮問(wèn)題。

性能優(yōu)化原則1:永遠(yuǎn)避免困境

利用緩存把字典數(shù)據(jù)取到中間服務(wù)器或是客戶端替代直接sql查詢,如,門診醫(yī)生站把字典下載到客戶端,減少執(zhí)行次數(shù)。

一次性取數(shù)據(jù)到客戶端,然后再逐條處理,而不是分次取數(shù)據(jù),處理好一條數(shù)據(jù)再取下一條再處理。例:門診收費(fèi)取hjcfmxk例子,原來(lái)是一張?zhí)幏綏l明細(xì)都查詢一次,查詢后再處理,現(xiàn)改為一次把所有明細(xì)都取過(guò)來(lái),然后一條條處理

盡量減少光標(biāo),看能不能用臨時(shí)表

性能優(yōu)化原則2:kiss原則

對(duì)于where 條件中的左邊可以利用索引的字段Keep it simple stupid,左邊盡量避免用函數(shù)(substring,isnull,upper,lower),參加計(jì)算+,-*/

例子1:select * from ZY_BRFYMXK where substring(zxrq,1,8)='20081212‘

select * from ZY_BRFYMXK where zxrq between '2008121200' and '2008121224' 例子2:

select * from zy_detail_charge where SUBSTRING(patient_id,1,10)=

substring('000005090600',1,10)這句耗時(shí)30秒以上

select * from zy_detail_charge where patient_id like substring('000005090600',1,10)+'%' 這句耗時(shí)2秒以內(nèi)

性能優(yōu)化原則3:盡可能利用到索引

例:select * from ZY_BRFYMXK a(nolock),VW_LSYZK b(nolock)where a.syxh=3 and a.yzxh=b.xh and a.fylb=0

select * from ZY_BRFYMXK a(nolock),VW_LSYZK b(nolock)where a.syxh=3 and a.yzxh=b.xh and a.fylb=0 and b.syxh=3

性能優(yōu)化原則4:or,避而遠(yuǎn)之

對(duì)于索引字段盡力避免用or,普通字段可以用or,解決要么分解成多個(gè)sql,要么用業(yè)務(wù)規(guī)則避免,例:declare @rq1 ut_rq16,@syxh ut_syxh

select @rq1='20081201'

select @syxh=157

性能優(yōu)化原則5:避免大批量數(shù)據(jù)取到前臺(tái)

例: select * from ZY_BRSYK cyrq between ‘20080901’ and ‘20081201‘,對(duì)于大醫(yī)院每天100多人,90天是9000條數(shù)據(jù)

性能優(yōu)化原則6:事務(wù),盡可能的短吧

所有計(jì)算、對(duì)臨時(shí)表的更新都應(yīng)但放在事務(wù)外,事務(wù)中最好只有更新和插入正式表操作.因?yàn)槭聞?wù)中產(chǎn)生的鎖只有在commit tran是才會(huì)釋放。

性能優(yōu)化原則7:熱表,留在最后吧

熱表是頻繁調(diào)用的表。如:sf_mzcfk,zy_brfymxk,bq_fyqqk.對(duì)于熱表盡量放在事務(wù)最后:這樣鎖的時(shí)間短。大家都堅(jiān)持這樣,死鎖的可能性就小。如果都是熱表各個(gè)存儲(chǔ)過(guò)程更新表的順序應(yīng)當(dāng)一樣這樣可以避免死鎖

性能優(yōu)化原則8:創(chuàng)建臨時(shí)表一定要避免在事務(wù)中作

如create #tempXX(…)

Select * into #tempXX from …

因?yàn)閯?chuàng)建臨時(shí)表會(huì)鎖tempdb的系統(tǒng)表

例:生成#temp1放在事務(wù)內(nèi)外,用sp_lock2 ‘’觀察結(jié)果

if object_id('tempdb..#temp1','U')is not null

drop table #temp1

begin tran

select * into #temp1 from ZY_BRSYK where ryrq>'20080901‘

select * from #temp1

waitfor delay '00:00:10'

commit

性能優(yōu)化原則9:大的報(bào)表查詢避免與正常業(yè)務(wù)碰撞

如果沒(méi)有查詢服務(wù)器,那要在存儲(chǔ)過(guò)程中限制不能操作加上如:

declare @rq1 ut_rq16,@rq2 ut_rq16,@now ut_rq16

select @rq1=convert(varchar(8),getdate(),112)+'08:00:00'

select @rq1=convert(varchar(8),getdate(),112)+'11:30:00'

select @now=convert(char(8),getdate(),112)+convert(char(8),getdate(),8)

if @now>@rq1 and @now<@rq2

begin

select '上午繁忙時(shí)間段不能作此查詢'

return

end

性能優(yōu)化原則10:存儲(chǔ)過(guò)程避免大的if…else…

這個(gè)常出項(xiàng)在業(yè)務(wù)相同表不同的存儲(chǔ)過(guò)程中,因?yàn)檫@樣常到if …else …原來(lái)醫(yī)技接口中很多這種存儲(chǔ)過(guò)程,當(dāng)時(shí)把門診住院業(yè)務(wù)放在一個(gè)存儲(chǔ)過(guò)程中。這樣最大的問(wèn)題是sql server會(huì)根據(jù)sql語(yǔ)句來(lái)compile存儲(chǔ),這個(gè)過(guò)程會(huì)生成優(yōu)化計(jì)劃,決定用那個(gè)索引。如果存儲(chǔ)過(guò)程用到門診表compile一下,到用到住院表是發(fā)現(xiàn)不對(duì),又會(huì)compile一下,這樣不停compile.compile很號(hào)時(shí)間要1-2秒,而且一個(gè)存儲(chǔ)過(guò)成在compile是,所有調(diào)用這個(gè)存儲(chǔ)過(guò)程的進(jìn)程都要在排隊(duì)等候,因?yàn)樗麜?huì)獨(dú)占鎖這個(gè)存儲(chǔ)過(guò)程

例:usp_yjjk_getwzxxm_old.sql,后改為:

usp_yjjk_getwzxxm.sql, usp_yjjk_getwzxxm_mz.sql,usp_yjjk_getwzxxm_zy.sql

性能優(yōu)化原則11:進(jìn)攻是最好的防守

在普通編程語(yǔ)句對(duì)于數(shù)據(jù)校驗(yàn)總是用防守辦法先判斷,后再作相應(yīng)處理。而在sql中先處理再判斷性能會(huì)好很多。

--更新藥品庫(kù)存。

If exists(select 1 from YK_YKZKC WHERE idm=100 and kcsl>50)

begin

update YK_YKZKC set kcsl=kcsl-50 where idm=100

End

Else begin

rollback tran

Select ‘F庫(kù)存不夠’

return

end

--改為

update YK_YKZKC set kcsl=kcsl-50 where idm=100 and kcsl>50

If @@rowcount<=0

Begin

Rollbakc tran

Select ‘F庫(kù)存不夠’

end

--取未執(zhí)行的醫(yī)技項(xiàng)目,日表沒(méi)有數(shù)據(jù)就到年表中查找

if exists(select a.* from SF_MZCFK a(nolock),SF_CFMXK b(nolock)

begin

select a.* into #temp1 from SF_MZCFK a(nolock),SF_CFMXK b(nolock)

end

else begin

select a.* into #temp1 from SF_NMZCFK a(nolock),SF_NCFMXK b(nolock)

end

--改為

Insert into #temp1 select a.*

from SF_MZCFK a(nolock),SF_CFMXK b(nolock)

If @@rowcount=0

Begin

Insert into #temp1 select a.*

from SF_NMZCFK a(nolock),SF_NCFMXK b(nolock)

end

性能優(yōu)化原則12:trig最后的手段

Trig(觸發(fā)器)的處理的處理機(jī)制是滿足條件時(shí)就會(huì)在源語(yǔ)句后面加上trig中的代碼進(jìn)行執(zhí)行。

它有兩個(gè)致命的弊端:(1)不清楚有trig的人會(huì)對(duì)于執(zhí)行結(jié)果感到迷惑。如常有在插入一張表如果主鍵是indentity的值常取用select @@identity。但如是有trig,tring中有表插入操作,這時(shí)的@@identity可能就不是想要的值。(2)trig會(huì)束縛選擇。如:有一套單據(jù)主表和明細(xì)表,當(dāng)明細(xì)表的金額更新時(shí),要同步主表的金額,當(dāng)程序是一條條更新明細(xì)時(shí)用trig的作法是每當(dāng)更新一條明細(xì)記錄時(shí)都算一處所有明細(xì)表的總金額,再去更新主表的金額。這樣有多少條明細(xì)就要算多少次,好的作法是不要trig,直接在sql語(yǔ)句中明細(xì)更新完明后,一次性算出總金額每條單據(jù)的總金額,再更新主表的金額。

對(duì)于trig如果有其他手段就一定要避免用trig.性能優(yōu)化原則13:用戶說(shuō)好才是真的好

1)有時(shí)sql語(yǔ)句性能難以優(yōu)化,但用戶對(duì)于系統(tǒng)響應(yīng)速度還是不滿意。這時(shí)可以從業(yè)務(wù)分析處理。

如:我們退費(fèi)模塊錄入發(fā)票號(hào)原來(lái)是用fph like ‘XXX%’。用戶報(bào)怨慢,后來(lái)改為先用fph=‘XXX’來(lái)查,如查不到再fph like ‘XXX%’。這樣在絕大部情況下速度都非常快,同時(shí)也滿足小部分情況下模糊查詢的需求。

如:我們的程序要查日表和年表。如果通過(guò)日表union表視圖去查會(huì)非常慢,性能也難以優(yōu)化。程序改為普通情況下不查年表,用戶勾上年表標(biāo)志時(shí)才查年表。

(2)查詢統(tǒng)計(jì)很多數(shù)據(jù)時(shí)間比較長(zhǎng),就以查詢完一部分?jǐn)?shù)據(jù)后可以顯示這部分?jǐn)?shù)據(jù)或是用提示,這樣用戶清楚系統(tǒng)在作事情也知道大概進(jìn)度。這樣情緒上會(huì)好很多。

(3)查詢模塊常有一進(jìn)入時(shí)也默認(rèn)一個(gè)查詢,如果性能好,查詢又合用戶心意,這種設(shè)計(jì)非常好,如果性能不好,那就不是好的設(shè)計(jì)。用戶對(duì)于進(jìn)入都困難的模塊是沒(méi)有好感的。

(4)有戶的耐心與查詢出的記錄成正比。用戶痛恨等待很久卻沒(méi)有查詢出記錄。

對(duì)于非常慢的查詢,如果有些子查詢非常快可以先作這樣查詢以避免查詢很久卻沒(méi)有數(shù)據(jù)出來(lái)的情況。如:按病歷號(hào)查在院病人所有費(fèi)有明細(xì),可以先查一下這個(gè)病歷是不是有對(duì)應(yīng)病人。

實(shí)戰(zhàn)技巧1:用exists、in代替distinct

Distinct實(shí)際上是先收集再刪除這樣兩步都耗資源。

Exists,in會(huì)隱式過(guò)濾掉重復(fù)的記錄

例查自2009年以來(lái)有金額大于100的藥品的病人

select distinct a.blh,a.hzxm from ZY_BRXXK a(nolock),ZY_BRSYK b(nolock),ZY_BRFYMXK c(nolock)where a.patid=b.patid and b.syxh=c.syxh and c.zxrq>'2009' and c.zje>100--改為

select a.blh,a.hzxm from ZY_BRXXK a where exists(select 1 from ZY_BRSYK

b(nolock),ZY_BRFYMXK c(nolock)where a.patid=b.patid and b.syxh=c.syxh and

c.zxrq>'2009'and c.zje>100)

實(shí)戰(zhàn)技巧2:縮短union

select …from A,B,C,D,E1

where(E1的條件)

and(其他表聯(lián)接條件)

union

select …from A,B,C,D,E2

where(E2的條件)

and(其他表接接條件)

改為

select …from A,B,C,D,(select...from E1where(E1條件)

union

select …from E2where(E2條件))E where(其他條件)

當(dāng)涉及ABCD表部分耗資源而E1,E2不耗資源時(shí)是這樣,如果反過(guò)來(lái)則改后的性能不一定好。查2009年4月后入院的在院病人在2905病區(qū)發(fā)生的所有費(fèi)用明細(xì)

select a.hzxm,b.cyrq,d.ypmc,d.ypgg,c.ypsl/c.dwxs ypsl, c.ypdw

select a.hzxm,b.cyrq,d.ypmc,d.ypgg,c.ypsl/c.dwxs ypsl, c.ypdw

from ZY_BRXXK a(nolock),ZY_BRSYK b(nolock),ZY_BRFYMXK c(nolock),YK_YPCDMLK d where a.patid=b.patid and b.ryrq>'200904' and b.brzt not in(3,8,9)and b.syxh=c.syxh and c.bqdm='2905' and c.idm=d.idm

union all

select a.hzxm,b.cyrq,d.name,d.xmgg,c.ypsl/c.dwxs ypsl, c.ypdw

from ZY_BRXXK a(nolock),ZY_BRSYK b(nolock),ZY_BRFYMXK c(nolock),YY_SFXXMK d where a.patid=b.patid and b.ryrq>'200904' and b.brzt not in(3,8,9)and b.syxh=c.syxh and c.bqdm='2905' and c.ypdm=d.id and c.idm=0

--改為

select a.hzxm,b.cyrq,d.ypmc,d.ypgg,c.ypsl/c.dwxs ypsl, c.ypdw

from ZY_BRXXK a(nolock),ZY_BRSYK b(nolock),ZY_BRFYMXK c(nolock),(select ypmc,ypgg,ypdm,idm idm from YK_YPCDMLK union select name,xmgg,id,0 from YY_SFXXMK)d

where a.patid=b.patid and b.ryrq>'200904' and b.brzt not in(3,8,9)and b.syxh=c.syxh and c.bqdm='2905' and c.idm=d.idm and c.ypdm=d.ypdm

實(shí)戰(zhàn)技巧3:合并sql

把表和where條件類似的兩個(gè)或是多個(gè)sql合并為一個(gè)sql.--查2009年以后的普通、急診、專家掛號(hào)人數(shù)

declare @ptghs int,@jzghs int,@zjghs int

select @ptghs=0,@jzghs=0,@zjghs=0

select @ptghs=count(*)from GH_GHZDK where ghrq>'2009' and ghlb=0

select @jzghs=count(*)from GH_GHZDK where ghrq>'2009' and ghlb=1

select @zjghs=count(*)from GH_GHZDK where ghrq>'2009' and ghlb=2

select @ptghs,@jzghs,@zjghs

--改為

select @ptghs=0,@jzghs=0,@zjghs=0

select @ptghs=sum(case when ghlb=0 then 1 else 0 end),@jzghs=sum(case when ghlb=1 then 1 else 0 end), @zjghs=sum(case when ghlb=2 then 1 else 0 end)

from GH_GHZDK where ghrq>'2009'

select @ptghs,@jzghs,@zjghs

實(shí)戰(zhàn)技巧4:去掉游標(biāo)

把游標(biāo)當(dāng)作編程語(yǔ)言的for,do---while的方式,很多情況下都可以去掉,如果光標(biāo)中間sql語(yǔ)句只有一條一般都是可以去掉光標(biāo)改為一句sql。

--查當(dāng)天出院出院日期在2009年4月1到9日間病人的zfdj,zfje置為0

declare @syxh ut_syxh

declare cur1 cursor for select syxh from ZY_BRSYK where cyrq>='20090401' and cyrq<'20090410'

open cur1

fetch cur1 into @syxh

while @@fetch_status=0

begin

fetch cur1 into @syxh

end

close cur1

deallocate cur1

--改為

update ZY_BRFYMXK set zfdj=0,zfje=0

from ZY_BRFYMXK a,ZY_BRSYK b

where a.syxh=b.syxh and b.cyrq>='20090401' and b.cyrq<'20090410'

實(shí)戰(zhàn)技巧5:取代count

利用內(nèi)部函數(shù)代替

declare @count int

select * into #tmep1 from ZY_BRFYMXK WHERE zxrq>'200901'

select @count=@@rowcount—可以得到count值

select @count

select @count=count(*)from #tmep1—可以被取代

select @count

利用exists而不count判斷有沒(méi)有記錄

declare @count int

Select @count=count(1)from ZY_BRFYMXK WHERE zxrq>'2009‘

If @count>0 … else ….--改為

If exists(Select 1 from ZY_BRFYMXK WHERE zxrq>'2009’)… else ….

第三篇:sql常用語(yǔ)句

//創(chuàng)建臨時(shí)表空間

create temporary tablespace test_temp

tempfile 'E:oracleproduct10.2.0oradatatestservertest_temp01.dbf'size 32m

autoextend on

next 32m maxsize 2048m

extent management local;

//創(chuàng)建數(shù)據(jù)表空間

create tablespace test_data

logging

datafile 'E:oracleproduct10.2.0oradatatestservertest_data01.dbf'size 32m

autoextend on

next 32m maxsize 2048m

extent management local;

//創(chuàng)建用戶并指定表空間

create user username identified by password

default tablespace test_data

temporary tablespace test_temp;

//給用戶授予權(quán)限

//一般用戶

grant connect,resource to username;

//系統(tǒng)權(quán)限

grant connect,dba,resource to username

//創(chuàng)建用戶

create user user01 identified by u01

//建表

create table test7272(id number(10),name varchar2(20),age number(4),joindate date default sysdate,primary key(id));

//存儲(chǔ)過(guò)程

//數(shù)據(jù)庫(kù)連接池

數(shù)據(jù)庫(kù)連接池負(fù)責(zé)分配、管理和釋放數(shù)據(jù)庫(kù)連接

//

//創(chuàng)建表空間

create tablespace thirdspace

datafile 'C:/Program Files/Oracle/thirdspace.dbf' size 10mautoextend on;

//創(chuàng)建用戶

create user binbin

identified by binbin

default tablespace firstspace

temporary tablespace temp;

//賦予權(quán)限

GRANT CONNECT, SYSDBA, RESOURCE to binbin

//null與""的區(qū)別

簡(jiǎn)單點(diǎn)說(shuō)null表示還沒(méi)new出對(duì)象,就是還沒(méi)開(kāi)辟空間

個(gè)對(duì)象裝的是空字符串。

//建視圖

create view viewname

as

sql

//建索引

create index indexname on tablename(columnname)

//在表中增加一列

alter table tablename add columnname columntype

//刪除一列

alter table tablename drop columnname

//刪除表格內(nèi)容,表格結(jié)構(gòu)不變

truncate table tableneme

//新增數(shù)據(jù)

insert into tablename()values()

//直接新增多條數(shù)據(jù)

insert into tablename()

selecte a,b,c

from tableabc

//更新數(shù)據(jù) new除了對(duì)象,但是這“”表示

update tablename set columnname=? where

//刪除數(shù)據(jù)

delete from tablename

where

//union語(yǔ)句

sql

union

sql

//case

case

when then

else

end

第四篇:SQL語(yǔ)句

SQL練習(xí)

一、設(shè)有如下的關(guān)系模式,試用SQL語(yǔ)句完成以下操作:

學(xué)生(學(xué)號(hào),姓名,性別,年齡,所在系)

課程(課程號(hào),課程名,學(xué)分,學(xué)期,學(xué)時(shí))

選課(學(xué)號(hào),課程號(hào),成績(jī))

1. 求選修了課程號(hào)為“C2”課的學(xué)生學(xué)號(hào)

2. 求選修了課程號(hào)為“C2”課的學(xué)生學(xué)號(hào)和姓名

3. 求沒(méi)有選修課程號(hào)為“C2”課的學(xué)生學(xué)號(hào)

4. 求選修了課程號(hào)為“C2”,又選修了課程號(hào)為“C3”課的學(xué)生學(xué)號(hào)

5.求選修了課程號(hào)為“C2”或“C3”課的學(xué)生學(xué)號(hào)

6.求選修了全部課程的學(xué)生學(xué)號(hào)

7.求至少選修了學(xué)號(hào)為“98002”的學(xué)生所學(xué)過(guò)的所有課程的學(xué)生的學(xué)號(hào)和姓名。

8.查詢學(xué)生選課表中的全部數(shù)據(jù)

9.查詢計(jì)算機(jī)系學(xué)生的姓名、年齡

10.查詢成績(jī)?cè)?0—80分之間的學(xué)生的學(xué)號(hào)、課程號(hào)和成績(jī)

11.查詢計(jì)算機(jī)系年齡在18—20之間且性別為“男”的學(xué)生的姓名和年齡

12.查詢成績(jī)?cè)?0分以上的學(xué)生的姓名、課程號(hào)和成績(jī),并按成績(jī)的降序排列結(jié)果。

13.查詢哪些課程沒(méi)有人選修,要求列出課程號(hào)和課程名。

14.查詢數(shù)學(xué)系成績(jī)?cè)?0分以上的學(xué)生的學(xué)號(hào),姓名

15.查詢課程號(hào)為“C02”的課程的最高分?jǐn)?shù)。

16.查詢計(jì)算機(jī)系學(xué)生的最大年齡和最小年齡。

17.統(tǒng)計(jì)每個(gè)系的學(xué)生人數(shù)。

18.統(tǒng)計(jì)每門課程的選課人數(shù)和考試最高分。

19.統(tǒng)計(jì)每個(gè)學(xué)生的選課門數(shù)和考試總成績(jī),并按選課門數(shù)的升序顯示結(jié)果。

20.查詢總成績(jī)超過(guò)200分的學(xué)生,要求列出學(xué)號(hào)、總成績(jī)。

21.用子查詢實(shí)現(xiàn)如下查詢:

(1)查詢選修了課程號(hào)“C01”的學(xué)生的姓名和所在系。

(2)查詢數(shù)學(xué)系成績(jī)?cè)?0分以上的學(xué)生的學(xué)號(hào)和姓名。

(3)查詢計(jì)算機(jī)系考試成績(jī)最高的學(xué)生的姓名。

22.刪除選課成績(jī)小于60分的學(xué)生的選課記錄。

23.將所有選修了課程“C01”的學(xué)生的成績(jī)加10分。

24.將計(jì)算機(jī)系所有選修了課程“計(jì)算機(jī)文化基礎(chǔ)”課程的學(xué)生的成績(jī)加10分。

25.創(chuàng)建查詢學(xué)生的學(xué)號(hào)、姓名、所在系、課程號(hào)、課程名、課程學(xué)分的視圖。

26.創(chuàng)建查詢每個(gè)學(xué)生的平均成績(jī)的視圖,要求列出學(xué)生學(xué)號(hào)和平均成績(jī)。

27.創(chuàng)建查詢每個(gè)學(xué)生的選課學(xué)分的視圖,要求列出學(xué)生學(xué)號(hào)及總學(xué)分。

第五篇:SQL語(yǔ)句

SQL語(yǔ)句,用友的SQL2000,通過(guò)查詢管理器寫的語(yǔ)句

1、查詢

2、修改

3、刪除

4、插入

表名:users 包含字段:id,sname,sage

查詢 select * from users查詢users表中所有數(shù)據(jù)

select id,sname,sage from users查詢users表中id,sname,sage字段所有數(shù)據(jù)

可以限定查詢條件比如:

select sname from users where sage>20查詢年齡大于20歲的所有人的名字

修改 update users set sname='李四',sage=22將users表中數(shù)據(jù)都改為姓名李四,年齡22

update users set sname='李四',sage=22 where id=1限定id為1的人的信息修改為

姓名李四,年齡22

可以加where條件。

刪除 delete from users where id=2刪除users表中id為2的一行數(shù)據(jù)delete from users 代表刪除users中所有數(shù)據(jù)

插入 insert into users(id,sname,sage)values(5,'劉三',21)插入一條數(shù)據(jù)

SQL四條最基本的數(shù)據(jù)操作語(yǔ)句:Insert,Select,Update和Delete。

例如:SELECT columns FROM tables;其中columns為列的名稱,tables為表格名稱

1、查詢:select 字段名 from 表名 where 條件

查找在表(如A)中符合條件的字段

2、修改:update 表名 set 字段名=‘所要修改的內(nèi)容’

修改在表(如A)中的字段的值為:所要修改的內(nèi)容

3、刪除: delete from 表名 where 條件

刪除符合條件的表(如A)中的信息

4、插入: insert into 表名(字段名)(‘插入內(nèi)容’)

在表(如A)中插入字段為:插入內(nèi)容 的一條信息

下載SQL語(yǔ)句的優(yōu)化方法word格式文檔
下載SQL語(yǔ)句的優(yōu)化方法.doc
將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
點(diǎn)此處下載文檔

文檔為doc格式


聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

相關(guān)范文推薦

    常用SQL語(yǔ)句

    一、創(chuàng)建數(shù)據(jù)庫(kù) create database 數(shù)據(jù)庫(kù)名 on( name='數(shù)據(jù)庫(kù)名_data', size='數(shù)據(jù)庫(kù)文件大小', maxsize='數(shù)據(jù)庫(kù)文件最大值', filegrowth=5%,//數(shù)據(jù)庫(kù)文件的增長(zhǎng)率 filename......

    sql語(yǔ)句

    簡(jiǎn)單基本的sql語(yǔ)句 幾個(gè)簡(jiǎn)單的基本的sql語(yǔ)句 選擇:select * from table1 where范圍 插入:insert into table1(field1,field2) values(value1,value2) 刪除:delete from table1......

    常用sql語(yǔ)句

    1、查看表空間的名稱及大小 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size from dba_tablespaces t, dba_data_files d where t.tablespace_name = d......

    簡(jiǎn)單SQL語(yǔ)句小結(jié)

    簡(jiǎn)單SQL語(yǔ)句小結(jié) 注釋:本文假定已經(jīng)建立了一個(gè)學(xué)生成績(jī)管理數(shù)據(jù)庫(kù),全文均以學(xué)生成績(jī)的管理為例來(lái)描述。 1.在查詢結(jié)果中顯示列名: a. 用as關(guān)鍵字:select name as '姓名' from s......

    常用SQL語(yǔ)句(最終五篇)

    查詢:select * from table1 where 范圍 select * from table where table001='JSBQF050' and table002='1307050002' and table003='0020' and table004='0030' select * fro......

    sql語(yǔ)句學(xué)習(xí)

    一、選擇題 1、SQL語(yǔ)言是語(yǔ)言。——(SQL特點(diǎn))(易) A)層次數(shù)據(jù)庫(kù) B)網(wǎng)絡(luò)數(shù)據(jù)庫(kù) C)關(guān)系數(shù)據(jù)庫(kù)D)非數(shù)據(jù)庫(kù) 答案:C 2、SQL語(yǔ)言具有兩種使用方式,分別稱為交互式SQL和。 ——(SQL語(yǔ)言使......

    SQL查詢語(yǔ)句

    SQL查詢語(yǔ)句 第一次:查詢(顯示)、條件、排序、空記錄 第二次:通配符、生成表、文件(記事本)、數(shù)組、臨時(shí)表,數(shù)學(xué)函數(shù)、分組、嵌套查詢 第三次:插入記錄、刪除記錄、更新記錄 第四次:......

    基本sql語(yǔ)句

    典型SQL語(yǔ)句匯總 Sys用戶是超級(jí)用戶,具有sysdba的角色,密碼是:change_on_install。 System用戶是管理操作員,具有sysoper的角色,密碼是:manager。 普通登錄用戶: 用戶名:scott,密碼:ti......

主站蜘蛛池模板: 亚洲性啪啪无码av天堂| 久久综合伊人中文字幕| 国产精品人成视频免费软件| 亚洲男女羞羞无遮挡久久丫| 久久久精品妇女99| 国产激情无码一区二区三区| 亚洲国产美女精品久久久久| 777亚洲熟妇自拍无码区| 久久久久亚洲精品成人网| 国产乱码人妻一区二区三区四区| 午夜无码一区二区三区在线观看| 日本电影一区二区三区| 免费国产成人高清在线观看网站| 国产成人精选视频在线观看不卡| 久久久久久亚洲精品中文字幕| www午夜精品男人的天堂| 夜夜未满十八勿进的爽爽影院| 亚洲日韩精品无码一区二区三区| 丁香五香天堂网| 电影内射视频免费观看| 女狠狠噜天天噜日日噜| 最近日本中文字幕免费完整| 亚洲伊人色欲综合网| 成人国内精品久久久久影院| 亚洲人成77在线播放网站| 无码丰满熟妇一区二区| 亚洲国产成人久久综合下载| 亚欧av无码乱码在线观看性色| 国产精品久久人妻无码网站蜜臀| 中文字幕无码成人免费视频| 麻豆传传媒久久久爱| 亚洲欧美日韩国产成人一区| 亚洲国产精品无码av| 久久婷婷五月综合色和啪| 国产高潮国产高潮久久久| 亚洲午夜高清国产拍| 国产白丝精品爽爽久久久久久蜜臀| 亚洲国产精品ⅴa在线播放| 久久九九久精品国产免费直播| 亚洲男同gay在线观看| 中文字幕无码av正片|