版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、中國地質(zhì)大學(xué)計(jì)算機(jī)學(xué)院數(shù)據(jù)庫系統(tǒng)概論實(shí)習(xí)指導(dǎo)書編制:張夏林2010年11月數(shù)據(jù)庫系統(tǒng)概論實(shí)習(xí)一、實(shí)習(xí)目的與任務(wù)通過實(shí)習(xí)教學(xué),使學(xué)生進(jìn)一步加深理解數(shù)據(jù)庫系統(tǒng)的基本理論,學(xué)會(huì)數(shù)據(jù)庫設(shè)計(jì)方法、dbms的使用,數(shù)據(jù)庫系統(tǒng)的管理和維護(hù),熟悉數(shù)據(jù)庫技術(shù)的應(yīng)用。二、實(shí)習(xí)室要求裝有win2000及sql server 2000的計(jì)算機(jī)。三、主要教材及參考書教材:數(shù)據(jù)庫系統(tǒng)概論(第四版) 王珊,薩師煊 高等教育出版社 參考書目: sql server 圖解教程 北京希望電子出版社;sql server 2000簡(jiǎn)明教程,清華大學(xué)出版社。四、考核形式 1、平時(shí)實(shí)習(xí)完成情況(實(shí)習(xí)報(bào)告質(zhì)量) 20% 2、每人獨(dú)立開發(fā)
2、一套數(shù)據(jù)庫應(yīng)用系統(tǒng) 80%五、實(shí)習(xí)項(xiàng)目與要求序號(hào)實(shí)習(xí)項(xiàng)目名稱時(shí)數(shù)目的及要求實(shí)習(xí)類型1sql server 2000基本操作4了解sql server2000安裝過程,掌握軟件的組成,啟動(dòng),運(yùn)行。在圖形界面下建立數(shù)據(jù)庫及基本數(shù)據(jù)表,及其表的定義、刪除與修改操作。認(rèn)識(shí)2sql 語言綜合實(shí)習(xí)4掌握使用sql語言創(chuàng)建刪除數(shù)據(jù)庫,建立基本數(shù)據(jù)表,建立索引,更新數(shù)據(jù);掌握sql的數(shù)據(jù)各種查詢;掌握連接、嵌套和集合查詢綜合3數(shù)據(jù)庫應(yīng)用系統(tǒng)4提高學(xué)生數(shù)據(jù)庫系統(tǒng)的綜合設(shè)計(jì)和開發(fā)應(yīng)用能力,解決實(shí)際問題設(shè)計(jì)實(shí)習(xí)一實(shí)習(xí)名稱: sql server 2000基本操作實(shí)習(xí)主要內(nèi)容及方法: 數(shù)據(jù)表的定義、刪除及修改實(shí)習(xí)要求
3、:(1) 了解并掌握sql企業(yè)管理器的使用;(2) 掌握在圖形界面方式下的數(shù)據(jù)創(chuàng)建,基本表的定義、刪除與修改。(3) 掌握sqlserver的基本功能和使用。實(shí)習(xí)目的:了解sql server2000安裝過程,掌握軟件的組成,啟動(dòng),運(yùn)行。在圖形界面下建立數(shù)據(jù)庫及基本數(shù)據(jù)表,及其表的定義、刪除與修改操作。為后繼學(xué)習(xí)作準(zhǔn)備。實(shí)習(xí)設(shè)備:裝有sqlserver2000的電腦實(shí)習(xí)步驟:(1)啟動(dòng)sql server企業(yè)管理器;(2)新建數(shù)據(jù)庫 studydb;(3) 新建數(shù)據(jù)表,修改,刪除;(4) 數(shù)據(jù)錄入:建議的數(shù)據(jù)表樣式表3.3 關(guān)系studentssnosnamessexsagesdepts01s
4、02s03s04s05s06王建平劉華范林軍李偉黃河長(zhǎng)江男女女男男男211918191820自動(dòng)化自動(dòng)化計(jì)算機(jī)數(shù)學(xué)數(shù)學(xué)數(shù)學(xué)表3.4 關(guān)系coursescnocnamepre_cnocreditsc01c02c03c04c05c06c07英語數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)庫db_設(shè)計(jì)c+網(wǎng)絡(luò)原理操作系統(tǒng)c05c02c03c07c054223333表3.5 關(guān)系reportssnocnogrades01s01s02s02s02s03s03s04c01c03c01c02c03c01c02c039284909482729075操作參考資料:sql server 2000看圖教程(pdf) 中 sql01,03sql s
5、erver 2000簡(jiǎn)明教程_03,04實(shí)習(xí)二實(shí)習(xí)名稱: sql綜合應(yīng)用實(shí)習(xí)主要內(nèi)容及方法: sql語言的綜合應(yīng)用 首先驗(yàn)證性試驗(yàn)教材中所有sql 語句的實(shí)例,然后選擇性試驗(yàn)本指導(dǎo)書中的示例。實(shí)習(xí)要求:(1) 了解并掌握sql查詢分析器及企業(yè)管理器的使用。(2) 掌握用sql語言對(duì)基本表的定義、刪除與修改。教材82頁數(shù)據(jù)表的定義。(3) 掌握sql數(shù)據(jù)插入、修改和刪除語句的一般格式及使用方法。教材82頁數(shù)據(jù)表數(shù)據(jù)的插入。(4) 掌握建立索引的二種方法,即在基本表創(chuàng)建過程中建立和用命令方式建立。(5) 掌握sql 查詢語句的一般格式;掌握無條件、有條件查詢及查詢結(jié)果排序與分組。(6) 掌握連接、
6、嵌套和集合查詢語句的一般格式及使用方法。(7) 掌握sql視圖建立、修改和刪除。(8) 邊實(shí)習(xí)邊寫實(shí)習(xí)報(bào)告,將實(shí)習(xí)過程和實(shí)習(xí)中采用的語句,運(yùn)行結(jié)果,出現(xiàn)的問題及解決辦法都寫到實(shí)習(xí)報(bào)告中。實(shí)習(xí)目的:熟練掌握sql語句的使用方法,為后繼學(xué)習(xí)作準(zhǔn)備。實(shí)習(xí)設(shè)備:裝有sqlserver2000的電腦實(shí)習(xí)步驟:(1) 啟動(dòng)sql查詢分析器;(2) 編寫sql語句完成實(shí)習(xí)要求的各項(xiàng)內(nèi)容;(3) 編寫實(shí)習(xí)報(bào)告。建議的基本表樣式表3.3 關(guān)系studentssnosnamessexsagesdepts01s02s03s04s05s06王建平劉華范林軍李偉黃河長(zhǎng)江男女女男男男211918191820自動(dòng)化自動(dòng)化計(jì)
7、算機(jī)數(shù)學(xué)數(shù)學(xué)數(shù)學(xué)表3.4 關(guān)系coursescnocnamepre_cnocreditsc01c02c03c04c05c06c07英語數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)庫db_設(shè)計(jì)c+網(wǎng)絡(luò)原理操作系統(tǒng)c05c02c03c07c054223333表3.5 關(guān)系reportssnocnogrades01s01s02s02s02s03s03s04c01c03c01c02c03c01c02c039284909482729075用sql語言對(duì)基本表的定義、刪除與修改。1 定義基本表例3.1 建立表3.3所示的學(xué)生表students,每個(gè)屬性名的意義為sno-學(xué)號(hào)、sname-姓名、ssex-性別、sage-年齡、sdept-
8、所在系。這里要求sno和sname不能為空值,且取值唯一。create table students /*列級(jí)完整性約束條件*/ (sno char(5) not null, /* sno不能為空值*/ sname char(20) not null, /*sname不能為空值*/ ssex char(2), sage int, sdept char(15), constraint un_sno unique(sno), /* sno取值唯一的約束*/ constraint un_sname unique(sname); /* sname取值唯一的約束*/說明:在microsoft sql s
9、erver 2000的查詢分析器(query analyzer)中使用單條sql語句,其末尾不需要分號(hào)“;”作為命令結(jié)尾標(biāo)記。通常,sql server 2000對(duì)大多數(shù)末尾帶有分號(hào)的sql命令都能順利執(zhí)行,但對(duì)少數(shù)的sql命令,末尾若帶分號(hào),則sql server 2000會(huì)給出錯(cuò)誤信息提示。 比如,若在例3.59的sql命令末尾加上一個(gè)分號(hào)“;”,sql server 2000就會(huì)出現(xiàn)“incorrect syntax near ;”的提示,雖然sql server 2000實(shí)際上已經(jīng)執(zhí)行了該命令。例3.1-1 建立表3.4所示的課程表courses,其屬性名意義分別為cno-課程號(hào), c
10、name-課程名, pre_cno-先修課程號(hào), credits-學(xué)分。create table courses (cno char(5) not null, /* cno不能為空值*/ cname char(20) not null, /*cname不能為空值*/ pre_cno char(5), credits int, constraint un_cno unique(cno); /*cno取值唯一的約束*/例3.1-2 建立表3.5所示的成績(jī)表reports。其中的屬性名意義分別為sno-學(xué)號(hào),cno-課程號(hào)和grade-考試成績(jī)。 create table reports ( sno
11、 char(5) not null, /* sno不能為空值*/ cno char(5) not null, /* cno不能為空值*/ grade int, constraint sno_cno unique(sno,cno); /*sno+cno取值唯一的約束*/2 修改基本表例3.2 向基本表students中增加“入學(xué)時(shí)間”屬性列,其屬性名為sentrancedate,數(shù)據(jù)類型為datetime型。alter table students add sentrancedate datetime; 例3.3 將sage(年齡)的數(shù)據(jù)類型改為smallint型。alter table stu
12、dents alter column sage smallint;例3.4 刪除sname(姓名)必須取唯一值的約束。alter table students drop constraint un_sname;注意:sql server 2000 增加了刪除屬性的命令。比如,刪除屬性列sentrancedate的命令為:alter table students drop column sentrancedate;說明: 為了保證后面例子能夠順利運(yùn)行,請(qǐng)大家一定將屬性列sentrancedate從students表中刪除。 為了調(diào)試sql語句方便,這里沒有在表reports中增加參照完整性約束,
13、甚至沒有定義主鍵。等本章學(xué)完后,第7章的實(shí)習(xí)系統(tǒng)就是把這些約束全部加上了。3 刪除基本表例3.5 刪除students表。drop table students;說明:此表刪除后,請(qǐng)立即用例3.1將其建立起來,以便后面的例子使用。4 向表中添加元組例3.6 將一個(gè)學(xué)生元組(s01,王建平,男,21,計(jì)算機(jī))添加到基本表students中。insertinto studentsvalues (s01,王建平,男,21,自動(dòng)化);說明: 請(qǐng)讀者用這個(gè)命令將其余5個(gè)學(xué)生的元組也添加到基本表students中。 向courses表插入元組(c01,英語,4)的命令為:insertinto course
14、svalues (c01,英語,4);請(qǐng)大家將其余6門課程的信息插入courses表中。例3.7 將學(xué)習(xí)成績(jī)的元組(s01, c01)添加到基本表reports中。insertinto reports(sno, cno)values (s01,c01);說明:請(qǐng)大家用這個(gè)命令將其余7個(gè)選課元組也添加到基本表reports中.建立索引1 建立索引例3.8 為學(xué)生選課數(shù)據(jù)庫中的students,courses,reports三個(gè)表建立索引。其中students表按sno(學(xué)號(hào))升序建唯一索引,courses表按cno(課程號(hào))升序建唯一索引,reports表按sno(學(xué)號(hào))升序和cno(課程號(hào))號(hào)
15、降序建唯一索引。其語句為:create unique index stu_sno on students(sno);create unique index cou_cno on courses(cno);create unique index rep_scno on reports(sno asc, cno desc);例3.9 在基本表students的sname(姓名)和sno(學(xué)號(hào))列上建立一個(gè)聚簇索引,而且students中的物理記錄將按照sname值和sno值的升序存放。其語句為:create clustered index stu_sname_sno on students(sna
16、me, sno);2 刪除索引例3.10 刪除基本表reports上的rep_scno索引。drop index reports.rep_scno;sql查詢1 無條件查詢例3.11 查詢?nèi)w學(xué)生的詳細(xì)記錄。這是一個(gè)無條件的選擇查詢,其命令為:select * /*這里的“*”等價(jià)于all*/from students;其結(jié)果為表3.3中的全部數(shù)據(jù)。例3.12 查詢?nèi)w學(xué)生的姓名(sname)、學(xué)號(hào)(sno)、所在系(sdept)。這是一個(gè)無條件的投影查詢,其命令為:select sname, sno, sdeptfrom students;例3.13 查詢?nèi)w學(xué)生的姓名(sname)、出生年
17、份及學(xué)號(hào)(sno)。由于select子句的不僅可以是表中的屬性列,也可以是表達(dá)式,故可以查詢經(jīng)過計(jì)算的值。其命令為:select sno, sname, 2001-sagefrom students;例3.14 查詢?nèi)w學(xué)生的姓名、出生年份和學(xué)號(hào),要求用小寫字母表示學(xué)號(hào)中的字母。其命令為:select sname, birth: title, 1996-sage birthyear, lower(sno) lsnofrom students;例3.15 查詢選修了課程的學(xué)生學(xué)號(hào)。其命令為:select distinct snofrom reports;2 條件查詢例3.16 查詢數(shù)學(xué)系全體學(xué)生
18、的學(xué)號(hào)(sno)和姓名 (sname)。其命令為:select sno, snamefrom studentswhere sdept=數(shù)學(xué);例3.17 查詢所有年齡在1822歲(包括18歲和22歲)之間的學(xué)生姓名(sname)及年齡(sage)。其命令為:select sname, sagefrom studentswhere sage=18 and sage連接、嵌套和集合查詢一、連接查詢1 不同表之間的連接查詢例3.37 查詢每個(gè)學(xué)生及其選修課程的情況。本查詢實(shí)際上是涉及students與reports兩個(gè)表的連接操作。這兩個(gè)表之間的聯(lián)系是通過公共屬性sno實(shí)現(xiàn)的,因此,其操作命令為:se
19、lect students.*, reports.*from students, reportswhere students.sno = reports.sno; 說明:若在以上等值連接中把目標(biāo)列中重復(fù)的屬性列去掉則為自然連接,其命令為select students.sno, sname, ssex, sage, sdept, cno, gradefrom students, reportswhere students.sno= reports.sno;例3.38 查詢每個(gè)學(xué)生的學(xué)號(hào)(sno)、姓名(sname)、選修的課程名(cname)及成績(jī)(grade)。本查詢涉及到三個(gè)表的連接操作,完
20、成該查詢的sql語句如下:select students.sno, sname, cname, gradefrom students, reports, courseswhere students.sno= reports.sno and reports.cno=courses.cno;2 自身連接例3.39 查詢每一門課的間接先修課(即先修課的先修課)。在courses表關(guān)系中,只有每門課的直接先修課信息,而沒有先修課的先修課。要得到這個(gè)信息,必須先對(duì)一門課找到其先修課,再按此先修課的課程號(hào),查找它的先修課程。這就需要要將courses表與其自身連接。為方便連接運(yùn)算,這里為courses表取
21、兩個(gè)別名分別為a,b。則完成該查詢的sql語句為:select a.cno, a.cname, b.pre_cnofrom courses a, courses bwhere a.pre_cno =b.cno;3 外連接例3.40把例3.37中的等值連接改為左連接。該左連接操作在sql server 2000中的命令格式為:select students.sno, sname, ssex, sdept, cno, gradefrom studentsleft join reports onstudents.sno= reports.sno;說明:以上左連接操作也可以用如下的右連接操作代替,其結(jié)
22、果完全一樣。select students.sno, sname, ssex, sdept, cno, gradefrom reportsright join students onreports.sno=students.sno;二、嵌套查詢1 帶謂詞in的嵌套查詢例3.41 查詢選修了編號(hào)為“c02”的課程的學(xué)生姓名(sname)和所在系(sdept)。select sname, sdeptfrom studentswhere sno in (select sno from reports where cno=c02);例3.42 查詢與“李偉”在同一個(gè)系學(xué)習(xí)的學(xué)生學(xué)號(hào)(sno)、姓名(s
23、name)和系名(sdept)。該查詢可構(gòu)造嵌套查詢實(shí)現(xiàn),其sql語句如下:select sno, sname, sdeptfrom studentswhere sdept in (select sdept from students where sname=李偉);說明:本例中的查詢也可以用自身連接來完成,其sql語句如下:select a.sno , a.sname , a.sdeptfrom students a , students bwhere a.sdept=b.sdept and b.sname=李偉;例3.43 查詢選修了課程名為“數(shù)據(jù)結(jié)構(gòu)”的學(xué)生學(xué)號(hào)(sno)和姓名(snam
24、e)。本查詢涉及學(xué)號(hào)、姓名和課程名(cname)三個(gè)屬性。學(xué)號(hào)和姓名存放在students表中,課程名的存放在courses表中,但students與courses兩個(gè)表之間沒有公共屬性,必須通過reports表建立它們之間的聯(lián)系。所以本查詢實(shí)際上涉及三個(gè)關(guān)系的連接操作。select sno, sname /* 最后在studenst關(guān)系中 */from students /* 取出sno和sname */where sno in (select sno /* 然后在sc關(guān)系中找出 */ from reports /*選修了3號(hào)課程的學(xué)生學(xué)號(hào)*/ where cno in (select cn
25、o /* 首先在courses關(guān)系中 */ from courses /*找出“數(shù)據(jù)結(jié)構(gòu)”的課程號(hào),*/ where cname = 數(shù)據(jù)結(jié)構(gòu)); /*結(jié)果為c02號(hào) */說明:本查詢同樣可以用連接查詢實(shí)現(xiàn):select s.sno, snamefrom students s, reports r, courses cwhere s.sno=r.sno and r.cno=c.cno and c.cname=數(shù)據(jù)結(jié)構(gòu);2 帶有比較運(yùn)算符的嵌套查詢例3.44 將例3.42改為帶有比較運(yùn)算符的嵌套查詢。由于一個(gè)學(xué)生只可能在一個(gè)系學(xué)習(xí),因此子查詢的結(jié)果是一個(gè)值,因此可以用=代替in,其sql語句如下
26、:select sno , sname, sdeptfrom studentswhere sdept = (select sdept from students where sname=李偉);3 帶謂詞any或all的嵌套查詢例3.45 查詢非自動(dòng)化系的不超過自動(dòng)化系所有學(xué)生的年齡的學(xué)生姓名(sname)和年齡(sage)。其查詢命令為select sname, sagefrom studentswhere sdept自動(dòng)化 and sage=all (select sage from students where sdept= 自動(dòng)化);說明:本查詢也可以用集函數(shù)來實(shí)現(xiàn)。其sql語句如下:
27、select sname, sagefrom studentswhere sdept自動(dòng)化 and sage= (select min(sage) from students where sdept=自動(dòng)化);4 帶謂詞exists的嵌套查詢例3.46 查詢所有選修了編號(hào)為“c01”課程的學(xué)生姓名(sname)和所在系(sdept)。本查詢的sql語句是:select sname, sdeptfrom studentswhere exists (select * from reports where sno=students.sno and cno=c01);例3.47 將例3.42改為帶謂詞
28、exists的查詢,其sql語句如下select sno, sname, sdeptfrom students awhere exists (select * from students b where b.sdept=a.sdept and b.sname=李偉);例3.48 查詢選修了所有課程的學(xué)生姓名(sname)和所在系。由于沒有全稱量詞,可將題目的意思轉(zhuǎn)換成等價(jià)的用存在量詞的形式:查詢這樣的學(xué)生,沒有一門課程是他不選修的。其sql語句為:select sname, sdeptfrom studentswhere not exists (select * from courses wh
29、ere not exists (select * from reports where sno=students.sno and cno=courses.cno);三、集合查詢例3.49 查詢計(jì)算機(jī)科學(xué)系的學(xué)生或年齡不大于20歲的學(xué)生信息。select *from studentswhere sdept=計(jì)算機(jī)unionselect *from studentswhere sage=20;例3.50 查詢數(shù)學(xué)系的學(xué)生且年齡不大于20歲的學(xué)生的交集,這實(shí)際上就是查詢數(shù)學(xué)系中年齡不大于20歲的學(xué)生。select *from studentswhere sdept=數(shù)學(xué) and sage20;sql
30、的數(shù)據(jù)更新1 插入數(shù)據(jù)例3.52 設(shè)數(shù)據(jù)庫中已有一個(gè)關(guān)系history_student,其關(guān)系模式與students完全一樣,試將關(guān)系students中的所有元組插入到關(guān)系history_student中去,其sql命令為:insertinto history_studentselect *from students;2 修改數(shù)據(jù)例3.53 將學(xué)號(hào)為“s03”的學(xué)生年齡改為22歲,即要修改滿足條件的一個(gè)元組的屬性值。update studentsset sage=22where sno=s03;例3.54 將所有學(xué)生的年齡增加1歲。即要修改多個(gè)元組的值。update studentsset s
31、age=1+sage;例3.55 將數(shù)學(xué)系所有學(xué)生的成績(jī)置零。由于學(xué)生所在系的信息在students表中,而學(xué)習(xí)成績(jī)?cè)趓eports表中,因此,可以將select子查詢作為where子句的條件表達(dá)式。故該更新要求的sql命令為:update reportsset grade=0where 數(shù)學(xué)=(select sdeptfrom studentswhere students.sno=reports.sno);3 刪除數(shù)據(jù)例3.56 刪除學(xué)號(hào)為“s04”的學(xué)生選修的課號(hào)為“c02”的記錄。deletefrom reportswhere sno=s04 and cno=c02;例3.57 刪除所有
32、學(xué)生的選課記錄。deletefrom reports;這條delete語句將刪除reports的所有元組,使reports成為空表。例3.58 刪除數(shù)學(xué)系所有學(xué)生的選課記錄。deletefrom reports where 數(shù)學(xué)=(select sdeptfrom studentswhere students.sno=reports.sno); sql視圖一 定義視圖1 建立視圖例3.59 建立數(shù)學(xué)系學(xué)生的視圖,并要求進(jìn)行修改和插入操作時(shí)仍需保證該視圖只有數(shù)學(xué)系的學(xué)生,視圖的屬性名為sno,sname,sage,sdept。create view c_studentasselect sno,
33、sname, sage, sdept from studentswhere sdept=數(shù)學(xué)with check option例3.60 建立學(xué)生的學(xué)號(hào)(sno)、姓名(sname)、選修課程名(cname)及成績(jī)(grade)的視圖。本視圖由三個(gè)基本表的連接操作導(dǎo)出,其sql語句如下:create view student_crasselect students.sno, sname, cname, gradefrom students, reports, courseswhere students.sno= reports.sno and reports.cno=courses.cno例3
34、.61 定義一個(gè)反映學(xué)生出生年份的視圖。create view student_birth(sno, sname, sbirth)as select sno, sname, 1996-sagefrom students2 刪除視圖例3.62 刪除視圖student_cr。drop view student_cr;二 查詢視圖例3.63 在數(shù)學(xué)系的學(xué)生視圖c_student中找出年齡(sage)小于20歲的學(xué)生姓名(sname)和年齡(sage)。select sname, sagefrom c_studentwhere sage20;說明:本例轉(zhuǎn)換后的查詢語句為:select sname, s
35、age from studentswhere sdept=數(shù)學(xué) and sage85; 三 更新視圖例3.65 將數(shù)學(xué)系學(xué)生視圖c_student中學(xué)號(hào)為s05的學(xué)生姓名改為“黃?!?。update c_studentset sname=黃海where sno=s05;說明:dbms自動(dòng)轉(zhuǎn)換為對(duì)基本表的更新語句如下:update studentsset sname=黃海where sno=s05 and sdept=數(shù)學(xué);例3.66 向數(shù)學(xué)系學(xué)生視圖c_student中插入一個(gè)新的學(xué)生記錄,其中學(xué)號(hào)為“s09”,姓名為“王海”,年齡為20歲。insertinto c_studentvalues
36、(s09, 王海, 20, 數(shù)學(xué));例3.67 刪除數(shù)學(xué)系學(xué)生視圖c_student中學(xué)號(hào)為“s09”的記錄。deletefrom c_studentwhere sno=s09參考實(shí)習(xí) 在powerbuilder中的嵌入式sql語句說明:本節(jié)的例子必須在powerbuilder環(huán)境中才能運(yùn)行,不懂powerbuilder的初學(xué)者沒有必要對(duì)其做上機(jī)實(shí)習(xí)。以下這些材料對(duì)制作多媒體教案有用。1 檢索單行數(shù)據(jù)的select語句例3.76 查詢學(xué)號(hào)為“s01”的學(xué)生選修課程號(hào)“c01”課程的考試成績(jī)。string xno,kno /powerbuilder 聲明兩個(gè)字符串變量,分別存放學(xué)號(hào)和課程號(hào)int
37、 cgrage / powerbuilder 聲明一個(gè)整型變量,用于存放學(xué)習(xí)成績(jī)select sno,cno,grade /本行開始的4行為一條完整的嵌入式sql語句into :xno, :kno, :cgrage /sql中引用powerbuilder的主變量前要加冒號(hào) from reports where sno=s01 and cno=c01; /powerbuilder使用sql時(shí)以分號(hào)結(jié)束以上程序段將select取得的一條記錄賦值給主變量xno, kno和cgrage。2 insert語句例3.77 向表reports中添加一條記錄(s12,c05,87)。insert into r
38、eports(sno,cno,grade) values (s12,c05,87);或者string xno,kno /powerbuilder 聲明兩個(gè)字符串變量,分別存放學(xué)號(hào)和課程號(hào)int cgrage / powerbuilder 聲明一個(gè)整型變量,用于存放學(xué)習(xí)成績(jī)xno=s12 /將欲插入的值賦給主變量xno, kno和cgragekno=c05cgrage=87insert into reports(sno,cno,grade) /將主變量xno, kno和cgrage的值插入表中values (:xno, :kno, :cgrage);3 update語句例3.78 將表“repo
39、rts”中所有成績(jī)低于90的學(xué)生加5分。update reports set grade=grade+5 where grade90;4 delete語句例3.79 刪除“reports”表中所有選“c03”課程的學(xué)生信息。delete from reports where cno=c03;5 游標(biāo)的使用例3.80 查詢關(guān)系reports中的grade信息,如果grade的值小于85,則將其在原來基礎(chǔ)上增加5,否則將該記錄刪除。這個(gè)更新操作可以通過使用游標(biāo)的以下程序?qū)崿F(xiàn)。int cgrade /聲明一個(gè)整型變量,作為sql的主變量declare report_cur cursor for /聲
40、明游標(biāo)report_curselect grade /并將查詢結(jié)果數(shù)據(jù)集相聯(lián)系 from reports;open report_cur; /打開游標(biāo)report_curfetch report_cur into :cgrade; /讀取游標(biāo)的第一條記錄,并存入主變量do while sqlca.sqlcode = 0 /循環(huán)結(jié)構(gòu)開始,若讀取成功則進(jìn)入循環(huán) if cgrade85 then /若讀出的該記錄成績(jī)(cgrade)低于85分 update reports /則該記錄的成績(jī)(grade)增加85分 set grade = grade+5 where current of report
41、_cur; /這是current型update語句else /否則刪除該記錄 delete from reports where current of report_cur;end if fetch report_cur into :cgrade; /讀取游標(biāo)的下一條記錄loop /循環(huán)結(jié)構(gòu)結(jié)束符close report_cur; /關(guān)閉游標(biāo)report_cur二 在delphi中使用sql語句說明:本節(jié)的例子必須在delphi環(huán)境中才能運(yùn)行,不懂delphi的初學(xué)者沒有必要對(duì)其做上機(jī)實(shí)習(xí),第7章有一個(gè)完整的應(yīng)用系統(tǒng)例子供上機(jī)實(shí)習(xí)之用。以下這些材料對(duì)制作多媒體教案有用。本節(jié)后面每個(gè)例子都需要的
42、-步語句定義如下,在后面的例子中不再給出。myquery: =tquery.create(application); /聲明并創(chuàng)建一個(gè)tquery類的控件myquerymyquery.databasename :=student; / myquery控件要訪問的數(shù)據(jù)庫別名為student 1檢索單行數(shù)據(jù)的select語句例3.81 查詢學(xué)號(hào)為“s01”的學(xué)生選修課程號(hào)“c01”課程的考試成績(jī),請(qǐng)與例3.76比較。varxno:ansistring; kno:ansistring; /delphi 聲明兩個(gè)字符串變量,分別存放學(xué)號(hào)和課程號(hào)cgrage:integer /delphi 聲明一個(gè)整型變量,用于存放學(xué)習(xí)成績(jī)myquery.sql.add(select sno,cno,grade /指定myquery控件使用的sql語句from reports where sno=s01 and cno=c01);myquery.open; /執(zhí)行myquery控件中的sql語句xno:=myquery.fieldb
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024廣西公務(wù)員考試及答案(筆試、申論A、B類、行測(cè))4套 真題
- 2025年粵教新版選修化學(xué)下冊(cè)月考試卷
- 2025年粵教新版七年級(jí)物理下冊(cè)階段測(cè)試試卷含答案
- 2025版無人駕駛技術(shù)研發(fā)內(nèi)部員工入股分紅合同4篇
- 二零二五版農(nóng)業(yè)用地經(jīng)營(yíng)權(quán)流轉(zhuǎn)與生態(tài)補(bǔ)償合同3篇
- 2025年度婚姻登記證丟失補(bǔ)發(fā)服務(wù)合同4篇
- 2025年度藝術(shù)工作室租賃服務(wù)合同4篇
- 2025年度企業(yè)間綠色信貸借款合同
- 二零二五年度裝配式建筑抹灰勞務(wù)分包技術(shù)合同4篇
- 二零二五年度兒童營(yíng)養(yǎng)面包研發(fā)及訂購合同4篇
- 2024年社區(qū)警務(wù)規(guī)范考試題庫
- 2024年食用牛脂項(xiàng)目可行性研究報(bào)告
- 2024-2030年中國戶外音箱行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- GB/T 30306-2024家用和類似用途飲用水處理濾芯
- 家務(wù)分工與責(zé)任保證書
- 消防安全隱患等級(jí)
- 溫室氣體(二氧化碳和甲烷)走航監(jiān)測(cè)技術(shù)規(guī)范
- 2023山東春季高考數(shù)學(xué)真題(含答案)
- 為加入燒火佬協(xié)會(huì)致辭(7篇)
- 職業(yè)衛(wèi)生法律法規(guī)和標(biāo)準(zhǔn)培訓(xùn)課件
- 高二下學(xué)期英語閱讀提升練習(xí)(二)
評(píng)論
0/150
提交評(píng)論