數(shù)據(jù)庫基礎(chǔ)教程_第1頁
數(shù)據(jù)庫基礎(chǔ)教程_第2頁
數(shù)據(jù)庫基礎(chǔ)教程_第3頁
數(shù)據(jù)庫基礎(chǔ)教程_第4頁
數(shù)據(jù)庫基礎(chǔ)教程_第5頁
已閱讀5頁,還剩148頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、nSQL: Struceured Query Languangn1974年,由Boyce和Chamber提出n1975-1979年,在System R上實(shí)現(xiàn),由IBM的San Jose研究室研制,稱為Sequel用戶1用戶2用戶4視圖V1視圖V1用戶3基本表B1基本表B2基本表B4基本表B3存儲(chǔ)文件S1存儲(chǔ)文件S2存儲(chǔ)文件S4存儲(chǔ)文件S3SQL數(shù)據(jù)庫體系結(jié)構(gòu)SQL用戶VIEWBase TableStored filen有關(guān)組織nANSI(American Natural Standard Institute)nISO(International Organization for Standar

2、dization)n有關(guān)標(biāo)準(zhǔn)nSQL-86n“數(shù)據(jù)庫語言SQL”nSQL-89n“具有完整性增強(qiáng)的數(shù)據(jù)庫語言SQL”,增加了對(duì)完整性約束的支持nSQL-92n“數(shù)據(jù)庫語言SQL”,是SQL-89的超集,增加了許多新特性,如新的數(shù)據(jù)類型,更豐富的數(shù)據(jù)操作,更強(qiáng)的完整性、安全性支持等。nSQL-3n正在討論中的新的標(biāo)準(zhǔn),將增加對(duì)面向?qū)ο竽P偷闹С謓一體化n集DDL,DML,DCL于一體n單一的結(jié)構(gòu)-關(guān)系,帶來了數(shù)據(jù)操作符的統(tǒng)一n面向集合的操作方式n一次一集合n高度非過程化n用戶只需提出“做什么”,無須告訴“怎么做”,不必了解存取路徑n兩種使用方式,統(tǒng)一的語法結(jié)構(gòu)nSQL既是自含式語言(用戶使用),

3、又是嵌入式語言(程序員使用)n語言簡潔,易學(xué)易用nchar(n):固定長度的字符串nvarchar(n):可變長字符串nint:整數(shù)nsmallint:小整數(shù)類型nnumeric(p,d):定點(diǎn)數(shù),小數(shù)點(diǎn)左邊p位,右邊q位nreal:浮點(diǎn)數(shù)ndouble precision:雙精度浮點(diǎn)數(shù)ndate:日期(年、月、日)ntime:時(shí)間(小時(shí)、分、秒)ninterval:兩個(gè)date或time類型數(shù)據(jù)之間的差n格式 域名 數(shù)據(jù)類型n示例create domain person-name char(20) 類似C語言中:typedef ADDRESS_LISTchar name10;char tel

4、ephone20;char location20char email20;ADDRESS_LIST tom;n格式 表名( 列名 數(shù)據(jù)類型 缺省值 ,列名 數(shù)據(jù)類型 缺省值 ,(列名 ,列名 ) , (列名 ,列名 ) 表名 (列名 ,列名 ) ,(條件)n示例CREATE TABLE S( S# CHAR(4), SNAME CHAR(8) NOT NULL, AGE SMALLINT, SEX CHAR(1), PRIMARY KEY (S#), CHECK (SEX=0 OR SEX=1)CREATE TABLE C( C# CHAR(4), CNAME CHAR(10) NOT NUL

5、L, TEACHER CHAR(8), PRIMARY KEY (C#),)CREATE TABLE SC(S# CHAR(4), C# CHAR(4), GRADE SAMLLINT, PRIMARY KEY (S#,C#), FOREIGN KEY (S#)REFERENCES S(S#), FOREIGN KEY (C#)REFERENCES C(S#), CHECK(GRADE IS NULL) OR GRADE BETWEEN 0 AND 100)n示例 create domain person_name char(20)create table PROF( PNO char10,

6、person_name PNAME not null, SAL int, AGE int, DNO char10, primary key (PNO), foreign key (DNO) references DEPT(DNO), check (SAL 0)n格式: 表名 子句增加新列子句刪除列 子句修改列定義n示例alter table PROFadd LOCATION char30n格式 表名n示例 drop table DEPT 撤消基本表后,基本表的定義、表中數(shù)據(jù)、索引、以及由此表導(dǎo)出的視圖的定義都被刪除n格式 / 索引名 表名 (列名 / , 列名/) unique(distinc

7、t):):唯一性索引,不允許表中不同的行在索引列上取相同值。若已有相同值存在,則系統(tǒng)給出相關(guān)信息,不建此索引。系統(tǒng)并拒絕違背唯一性的插入、更新 cluster:聚集索引,表中元組按索引項(xiàng)的值排序并物理地聚集在一起。一個(gè)基本表上只能建一個(gè)聚集索引 asc/desc:索引表中索引值的排序次序,缺省為ascn示例: create cluster index s-index on S(S#)n格式 索引名n可以動(dòng)態(tài)地定義索引,即可以隨時(shí)建立和刪除索引n不允許用戶在數(shù)據(jù)操作中引用索引。索引如何使用完全由系統(tǒng)決定,這支持了數(shù)據(jù)的物理獨(dú)立性n應(yīng)該在使用頻率高的、經(jīng)常用于連接的列上建索引n一個(gè)表上可建多個(gè)索引

8、。索引可以提高查詢效率,但索引過多耗費(fèi)空間,且降低了插入、刪除、更新的效率 數(shù)據(jù)庫名 數(shù)據(jù)庫名 數(shù)據(jù)庫名 數(shù)據(jù)庫名select A1 , A2 , , Anfrom r1 , r2 , , rmwhere P A1 , A2 , , An(p(r1 r2 rm)給出所有老師的姓名select PNAMEfrom PROF 可以為列名,* ,算術(shù)表達(dá)式,聚集函數(shù)n“*”:表示“所有的屬性”給出所有老師的信息select *fromPROFn帶, , 的算術(shù)表達(dá)式給出所有老師的姓名及稅后工資額select PNAME,SAL 0.95from PROF 缺省為保留重復(fù)元組,也可用關(guān)鍵字all顯式指

9、明。若要去掉重復(fù)元組,可用關(guān)鍵字distinct或unique指明 找出所有選修課程的學(xué)生 select distinct SNO from SCnfrom子句列出查詢的對(duì)象表n當(dāng)目標(biāo)列取自多個(gè)表時(shí),在不混淆的情況下可以不用顯式指明來自哪個(gè)關(guān)系n例:找出工資低于500的職工的姓名、工資、系別 selectPNAME , SAL , DNAME from PROF , DEPT where SAL P2.SAL n格式列名 “字符串”找出滿足給定匹配條件的字符串n匹配規(guī)則n “%” n匹配零個(gè)或多個(gè)字符n “”n匹配任意單個(gè)字符nEscapen定義轉(zhuǎn)義字符,以去掉特殊字符的特定含義,使其被作為普

10、通字符看待n如escape “”,定義 作為轉(zhuǎn)義字符,則可用%去匹配%,用去匹配思考:用什么去匹配 ?n列出姓名以“張”打頭的教師的所有信息 select * from PROF where PNAME like “張%”n列出名稱中含有4個(gè)字符以上,且倒數(shù)第3個(gè)字符是d,倒數(shù)第2個(gè)字符是_的系的所有信息 select * from PROF where PNAME like “% d ”n按系名升序列出老師姓名,所在系名,同一系中老師按姓名降序排列 select DNAME,PNAME from PROF,DEPT where PROF.DNO = DEPT.DNO order by DNA

11、ME asc,PNAME descn提示 集合操作自動(dòng)去除重復(fù)元組,如果要保留重復(fù)元組的話,必須用all關(guān)鍵詞指明n求選修了001或(且)002號(hào)課程的學(xué)生號(hào)(select SNOfrom SC where CNO = 001)union (intersect)(select SNO from SC where CNO = 002)n求選修了001和002號(hào)而沒有選003號(hào)課程的學(xué)生號(hào)(select SNOfrom SC where CNO = 001 or CNO = 002 )except(select SNOfrom SC where CNO = 003) group by將表中的元組按

12、指定列上值相等的原則分組,然后在每一分組上使用聚集函數(shù),得到單一值having則對(duì)分組進(jìn)行選擇,只將聚集函數(shù)作用到滿足條件的分組上列出每個(gè)學(xué)生的平均成績列出每門課程的平均成績group by S#group by C#928590929290n平均值:avgn最小值:minn最大值:maxn總和:sumn記數(shù):countcount(*)與)與count(列名)的差別(列名)的差別n列出各系的老師的最高、最低、平均工資 select DNO,max(SAL),min(SAL),avg(SAL) from PROF group by DNOn火眼金睛火眼金睛 求選修了課程的學(xué)生人數(shù) select

13、count (SNO ) from SC select PNAME,max(SAL) from PROF select DNO,avg(SAL) from PROF group by DNO where AGE 60n列出及格的學(xué)生的平均成績 select SNO,avg(SCORE) from SC group by SNO having min(SCORE) = 60select SNO,avg(SCORE) from SCwhere SCORE =60 group by SNOn列出每一年齡組中男學(xué)生(超過50人)的人數(shù) select AGE,count(S#) from S where

14、 SEX = M group by AGE having count(*) 50測試指定列的值是否為空值找出年齡值為空的老師姓名 select PNAME from PROF where AGE is null不可寫為where AGE = nulln除is not null之外,空值不滿足任何查找條件n如果null參與算術(shù)運(yùn)算,則該算術(shù)表達(dá)式的值為nulln如果null參與比較運(yùn)算,則結(jié)果可視為false。在SQL-92中可看成unknownn如果null參與聚集運(yùn)算,則除count(*)之外其它聚集函數(shù)都忽略null 例:select sum(G) from SC例:select coun

15、t(*) from SCn測試集合是否為空n測試集合是否存在重復(fù)元組表達(dá)式表達(dá)式 (子查詢)(子查詢)判斷表達(dá)式的值是否在子查詢的結(jié)果中n列出張軍和王紅同學(xué)的所有信息 select * from S where SNAME in (“張軍”,“王紅”)n選修了001號(hào)課程的學(xué)生的學(xué)號(hào)及姓名 select SNO,SNAME from S where SNO in (select SNO from SC where CNO = 001)n列出選修了001號(hào)和002號(hào)課程的學(xué)生的學(xué)號(hào) select SNO from SC where SC.CNO = 001 and SNO in (select

16、SNO from SC where CNO = 002)n表達(dá)式表達(dá)式 比較運(yùn)算符比較運(yùn)算符 (子查詢)(子查詢) 表達(dá)式的值至少與子查詢結(jié)果中的一個(gè)值相比滿足比較運(yùn)算符 n表達(dá)式表達(dá)式 比較運(yùn)算符比較運(yùn)算符 (子查詢)(子查詢) 表達(dá)式的值與子查詢結(jié)果中的所有的值相比都滿足比較運(yùn)算符n找出平均成績最高的學(xué)生號(hào) select SNO from SC group by SNO having avg(SCORE) = all(select avg(SCORE) from SC group by SNO)判斷子查詢的結(jié)果集合中是否有任何元組存在in后的子查詢與外層查詢無關(guān),每個(gè)子查詢執(zhí)行一次,而ex

17、ists后的子查詢與外層查詢有關(guān),需要執(zhí)行多次,稱之為n列出選修了01號(hào)課程的學(xué)生的學(xué)號(hào)及姓名 select SNO,SNAME from S where exists (select * from SC where CNO = 01 and SNO = S.SNO)n列出選修了001號(hào)和002號(hào)課程的學(xué)生的學(xué)號(hào) select SNO from SC SC1 where SC1.CNO = 001 and exists (select SNO from SC SC2 where SC2. CNO = 002 and SC2.SNO = SC1.SNO)n列出選修了全部課程的學(xué)生姓名 selec

18、t SNAME from S where not exists(select C# from C where not exists(select * from SC where SC.C# = C.C# and SC.S# = S.S# )任意課程,所求學(xué)生選之 不存在任何一門課程,所求學(xué)生沒有選之n列出至少選修了001號(hào)學(xué)生選修的所有課程的學(xué)生名 select SNAME from S where not exists(select CNO from COURSE where exists(select * from SC where SC.CNO = COURSE.CNO and SC.S

19、NO = 001) and not exists(select * from SC where SC.CNO = COURSE.CNO and SC.SNO = S.SNO)任意課程,001號(hào)學(xué)生選之,所求學(xué)生選之 不存在任何一門課程,001號(hào)學(xué)生選之,所求學(xué)生沒有選之如果子查詢結(jié)果中沒有重復(fù)元組,則返回truen找出所有只教授一門課程的老師姓名 select PNAME from PROF where unique(select PNO from PC where PC.PNO = PROF.PNO)n找出至少選修了兩門課程的學(xué)生姓名 select SNAME from S where no

20、t unique(select SNO from SC where SC.SNO = S.SNO)unique (a , b , null) , (a , b , null) ? SQL-92中,允許在from子句中使用子查詢表達(dá)式,這時(shí)可將該子查詢的結(jié)果命名為一個(gè)臨時(shí)關(guān)系臨時(shí)關(guān)系加以引用n找出平均成績及格的學(xué)生 先求出每個(gè)學(xué)生的平均成績,再從中找出及格的學(xué)生 select SNAME , avg(SCORE) from S,SC where SC.SNO = S.SNO group by SC .SNOselect SNAME , AVG_SCOREfrom (select SNAME ,

21、avg(SCORE) from S,SC where SC.SNO = S.SNO group by SC .SNO) as result(SNAME , AVG_SCORE )where AVG_SCORE = 60視圖的屬性名缺省為子查詢結(jié)果中的屬性名,也可以顯式指明 with check option指明當(dāng)對(duì)視圖進(jìn)行insert,update時(shí),要檢查是否滿足視圖定義中的條件create view COMPUTER_PROFas (select PNO , PNAME , SAL from PROF,DEPT where PROF.PNO = DEPT.PNO and DEPT.DNAM

22、E = “計(jì)算機(jī)系”)create view DEPTSAL( DNO, LOW, HIGH, AVERAGE, TOTAL )as ( select DNO, min(SAL), max(SAL), avg(SAL), sum(SAL) from PROF group by DNO )n給出計(jì)算機(jī)系工資超過800的老師姓名select PNAMEfrom COMPUTER_PROFwhere SAL 800n給出計(jì)算機(jī)系老師的最低、最高、平均工資以及工資總額select LOW , HIGH , AVERAGE , TOTALfrom DEPTSAL , DEPTwhere DEPTSAL.

23、DNO = DEPT.DNO and DEPT.DNAME =“計(jì)算機(jī)系”n連接成分n包括兩個(gè)輸入關(guān)系、連接條件、連接類型n連接條件連接條件n決定兩個(gè)關(guān)系中哪些元組相互匹配,以及連接結(jié)果中出現(xiàn)哪些屬性n連接類型連接類型n決定如何處理與連接條件不匹配的元組n自然連接自然連接n出現(xiàn)在結(jié)果關(guān)系中的兩個(gè)連接關(guān)系的元組在公共屬性上取值相等,且公共屬性只出現(xiàn)一次non n出現(xiàn)在結(jié)果關(guān)系中的兩個(gè)連接關(guān)系的元組在公共屬性上取值滿足謂詞條件P,且公共屬性出現(xiàn)兩次nusing (A1, A2 , An)n (A1, A2 , An)是兩個(gè)連接關(guān)系的公共屬性的子集,元組在(A1, A2 , An)上取值相等,且(A

24、1, A2 , An)只出現(xiàn)一次n內(nèi)連接內(nèi)連接n舍棄不匹配的元組n左外連接左外連接n內(nèi)連接 + 左邊關(guān)系中失配的元組(缺少的右邊關(guān)系屬性值用null表示)n右外連接右外連接n內(nèi)連接 + 右邊關(guān)系中失配的元組(缺少的左邊關(guān)系屬性值用null表示)n全外連接全外連接n內(nèi)連接 + 左邊關(guān)系中失配的元組(缺少的右邊關(guān)系屬性值用null表示)+ 右邊關(guān)系中失配的元組(缺少的左邊關(guān)系屬性值用null表示)ncross joinn兩個(gè)關(guān)系的笛卡兒積nunion joinn左邊關(guān)系中失配的元組+ 右邊關(guān)系中失配的元組n對(duì)于外連接,連接條件是必須的n對(duì)于內(nèi)連接,連接條件是可選的,沒有連接條件等價(jià)于兩個(gè)關(guān)系的笛卡

25、兒積n列出老師的教工號(hào)、姓名、工資、所教課程號(hào)select PNO,PNAME,SAL,CNOfrom (PROF nature left outer join PC)ABCa1b1c1a2b2c2a3b3c3CDc1d1c2d2c4d3R inner join S on R.C = S.CABCCDa1b1c1c1d1a2b2c2c2d2RSR left outer join S on R.C = S.CABCCDa1b1c1c1d1a2b2c2c2d2a3b3c3nullnullR nature right outer join SABCDa1b1c1d1a2b2c2d2nullnullc

26、4d3R full outer join S on R.C = S.CABR.CS.CDa1b1c1c1d1a2b2c2c2d2a3b3c3nullnullnullnullnullc4d3ninsert into PROF values ( P123, “王明”, 35, D08, 498 )ninsert into PROF (PNO, PNAME, DNO)values ( P123, “王明”, D08 ) 思考:SAL取何值?n將平均成績大于90的學(xué)生加入到EXCELLENT中insert into EXCELLENT ( SNO, GRADE)select SNO , avg(SCO

27、RE)from SCgroup by (SNO)having avg(SCORE) 90不支持修改在子查詢中出現(xiàn)的表insert into PROFselect *from PROF若支持,則完成查詢后,再執(zhí)行修改操作 表名 條件表達(dá)式從表中刪除符合條件的元組,如果沒有where語句,則刪除所有元組n清除所有選課記錄delete from SCn刪除王明老師所有的任課記錄delete from PCwhere PNO in (select PNO from PROF where PNAME = “王明”) n刪除低于平均工資的老師記錄delete from PROFwhere SAL (sel

28、ect avg(SAL) from PROF) 思考:是先找到所有符合條件的元組,一并刪除,還是找到一個(gè)刪除一個(gè)?update 表名 set 列名 = 表達(dá)式 | 子查詢 列名 = ,表達(dá)式 | 子查詢where 條件表達(dá)式指定對(duì)哪些列進(jìn)行更新,以及更新后的值是什么n老師工資上調(diào)5%update PROFset SAL = SAL * 1.05n將D01系系主任的工資改為該系的平均工資update PROFset SAL = (select avg(SAL) from PROFwhere DNO = D01)where PNO = (select DEAN from DEPT where DN

29、O = D01)n當(dāng)C1課程的成績小于該課程的平均成績時(shí),將該成績提高5%update SCset GRADE = GRADE * 1.05 where C# = C1and GRADE 2000 update PROF set SAL = SAL * 0.95 where SAL 15)n域約束子句n用CREATE DOMAIN定義域時(shí),可以出現(xiàn) CHECK AGE SMALLINT(VALUE = 15) AND VALUE = 25)n全局約束涉及多個(gè)屬性間的或多個(gè)關(guān)系間的聯(lián)系CREATE TABLE SC(S# CHAR(4), C# CHAR(4), GRADE SMALLINT,

30、PRIMARY KEY (S#, C#), (S# IN (SELECT S# FROM S), (C# IN (SELECT C# FROM C)如果S中刪除元組,不會(huì)觸發(fā)CHECK子句,只有對(duì)SC表的更新才會(huì)觸發(fā)n命名 約束名 n示例S# CHAR(4) S_PK AGE SAMLLINT AGE_VAL (AGE = 15 AND AGE = 25)n關(guān)系上約束的撤消與添加撤消用添加用n示例 table S S_PK table SC SC_CHECK (S# in select S# from S)n域約束的創(chuàng)建、撤消與添加 AGE_DOMAIN smallintDC_AGE (val

31、ue = 15) AGE_DOMAIN DC_AGE check(value = 15) AGE_DOMAIN DC_AGEn定義 斷言是謂詞,表達(dá)數(shù)據(jù)庫總應(yīng)該滿足的條件n一旦定義了斷言,系統(tǒng)驗(yàn)證其有效性,并且對(duì)每個(gè)可能違反該斷言的更新操作都進(jìn)行檢查n這種檢查會(huì)帶來巨大的系統(tǒng)負(fù)載,因此應(yīng)該謹(jǐn)慎使用斷言n對(duì)斷言“所有X, P(X)”,是通過檢查“not exists X, P(X)”來實(shí)現(xiàn)的n示例:不允許男同學(xué)選修張老師課程 ASSE2 (not exists(select * from SC where C# in(select C# from C where TEACHER = 張) and

32、 S# in(select S# from S where SEX = M)n示例:每門課最多50名男同學(xué)選修 ASSE1 (50 = all (select count(SC.S#) from S, SC where S.S# = SC.S# and SEX = M group by C#)n撤消:斷言名 ASSE1n觸發(fā)器是一條語句,當(dāng)對(duì)數(shù)據(jù)庫做修改時(shí),它自動(dòng)被系統(tǒng)執(zhí)行n觸發(fā)器的定義n指明什么條件下觸發(fā)器被執(zhí)行n指明觸發(fā)器執(zhí)行的動(dòng)作是什么n觸發(fā)器的作用n示警n滿足特定條件時(shí)自動(dòng)執(zhí)行某項(xiàng)任務(wù)n觸發(fā)器事件nInsertInsert、 deletedelete、updateupdatecreat

33、e trigger trigger-namebeginafterinsertdeleteupdateon table-nameof column-namereferencingold row as identifiernew row as identifiertriggered-SQL-statementfor each rowwhen(search-condition)begin atomicendnSQL的表達(dá)能力相比高級(jí)語言有一定的限制,有些數(shù)據(jù)訪問要求單純使用SQL無法完成。一方面,SQL在逐漸增強(qiáng)自己的表達(dá)能力(參見習(xí)題4.10),另一方面,太多的擴(kuò)展會(huì)導(dǎo)致優(yōu)化能力及執(zhí)行效率的降低n

34、實(shí)際的應(yīng)用系統(tǒng)是非常復(fù)雜的,數(shù)據(jù)庫訪問只是其中一個(gè)部件。有些動(dòng)作如與用戶交互、圖形化顯示數(shù)據(jù)等只能用高級(jí)語言實(shí)現(xiàn)主語言主語言 + + 嵌入嵌入SQLSQL 預(yù)處理預(yù)處理 主語言主語言 + + 函數(shù)調(diào)用函數(shù)調(diào)用 主語言編譯器主語言編譯器 主語言執(zhí)行程序主語言執(zhí)行程序 嵌入的SQL語句以EXEC SQL開始,以分號(hào)(;) 或END_EXEX結(jié)束EXEC SQL delete from PROF where DNO = 10;n宿主變量nC變量,既可以用在C語句中,也可用在SQL語句中,用來在兩者之間傳遞數(shù)據(jù)n宿主變量的聲明n聲明為通常的C變量,并將其放在下列標(biāo)識(shí)語句之間EXEC SQL BEGIN

35、 DECLARE SECTIONint prof_no;char prof_name30;int salary;EXEC SQL END DECLARE SECTION注:宿主變量出現(xiàn)于SQL語句中時(shí),前面加(:)以區(qū)別列名 宿主變量可出現(xiàn)的地方:SQL的數(shù)據(jù)操縱語句中可出現(xiàn)常數(shù)常數(shù)的任何地方,select,fetch等語句的into字句中示例:EXEC SQL select PNAME , SAL into :prof_name , :salary from PROF where PNO = prof_no ; n指示變量nC變量,用來指示返回給宿主變量的值是否為null值,以及返回給宿主變

36、量的字符串是否發(fā)生了截?cái)鄋指示變量應(yīng)用場合n如果一個(gè)宿主變量所對(duì)應(yīng)的數(shù)據(jù)庫字段允許空值,或字符串類型的宿主變量的長度可能小于所對(duì)應(yīng)的數(shù)據(jù)庫字段的長度,則需要一個(gè)指示變量來指明數(shù)據(jù)庫訪問的返回狀態(tài)n指示變量的返回值n= 0:取到主變量的值不空,沒有發(fā)生截?cái)鄋= 1:取到主變量的值為空值n 0:取到主變量的值發(fā)生了截?cái)?,指示變量的值是截?cái)嗲暗淖址膶?shí)際長度n指示變量的用法n聲明與宿主變量的聲明方式一樣,在數(shù)據(jù)操縱語句中,在宿主變量和指示變量之間加( : )或關(guān)鍵字indicatorEXEC SQL BEGIN DECLARE SECTIONint prof_no;char prof_name30

37、;int salary;short name_id;short sal_id;EXEC SQL END DECLARE SECTIONEXEC SQL select PNAME , SAL into :prof_name : name_id , :salary: sal_id from PROF where PNO = prof_no ; n執(zhí)行方式的差別nSQL:一次一集合nC語言:一次一記錄n游標(biāo)n在查詢結(jié)果的記錄集合中移動(dòng)的指針n若一個(gè)SQL語句返回單個(gè)元組,則不用游標(biāo)n若一個(gè)SQL語句返回多個(gè)元組,則使用游標(biāo)n不需要游標(biāo)的數(shù)據(jù)操作n結(jié)果是一個(gè)元組的select語句EXEC SQL select PNAME , SALinto :prof_name : name_id, :salary : sal_id from PROFwhere PNO = prof_no ;ninsert語句 EXEC SQL insert into PROF values (:prof_no, :prof

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論