




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 實驗四 完整性 日期 2011-4-6一 實驗?zāi)康?. 熟悉通過SQL對數(shù)據(jù)進(jìn)行完整性控制。2. 深入理解數(shù)據(jù)庫系統(tǒng)的完整性概念。二、實驗原理為維護(hù)數(shù)據(jù)庫的完整性,DBMS必須: 1.提供定義完整性約束條件的機(jī)制 2.提供完整性檢查的方法 3.違約處理Create table 語法中包含了對完整性的定義。CREATE TABLE database_name. owner .| owner. table_name ( < column_definition > | column_name AS computed_column_expression | < table_cons
2、traint > := CONSTRAINT constraint_name | PRIMARY KEY | UNIQUE ,.n ) ON filegroup | DEFAULT TEXTIMAGE_ON filegroup | DEFAULT < column_definition > := column_name data_type COLLATE < collation_name > DEFAULT constant_expression | IDENTITY ( seed , increment ) NOT FOR REPLICATION ROWGUID
3、COL < column_constraint > .n < column_constraint > := CONSTRAINT constraint_name NULL | NOT NULL | PRIMARY KEY | UNIQUE CLUSTERED | NONCLUSTERED WITH FILLFACTOR = fillfactor ON filegroup | DEFAULT | FOREIGN KEY REFERENCES ref_table ( ref_column ) ON DELETE CASCADE | NO ACTION ON UPDATE C
4、ASCADE | NO ACTION NOT FOR REPLICATION | CHECK NOT FOR REPLICATION ( logical_expression ) < table_constraint > := CONSTRAINT constraint_name PRIMARY KEY | UNIQUE CLUSTERED | NONCLUSTERED ( column ASC | DESC ,.n ) WITH FILLFACTOR = fillfactor ON filegroup | DEFAULT | FOREIGN KEY ( column ,.n )
5、REFERENCES ref_table ( ref_column ,.n ) ON DELETE CASCADE | NO ACTION ON UPDATE CASCADE | NO ACTION NOT FOR REPLICATION | CHECK NOT FOR REPLICATION ( search_conditions ) 三、實驗儀器和設(shè)備1. 計算機(jī)2. SQL Server 2000四、預(yù)習(xí)要求復(fù)習(xí)完整性相關(guān)的SQL語句的基本語法。五、實驗內(nèi)容及步驟1. 實體完整性 定義表的主碼關(guān)系模型的實體完整性在 CREATE TABLE 中用 PRIMARY KEY 定義。 定義主碼
6、的方法分為定義為列級約束條件和定義為表級約束條件兩種。 例 4-1定義表 Student,并將其中的 Sno 屬性定義為主碼。 CREATE TABLE STUDENT( SNO CHAR(7) PRIMARY KEY, SNAME CHAR(8) NOT NULL, SSEX CHAR(2), SAGE SMALLINT, SDEPT CHAR(20); 例 4-2定義表 SC,將其中的屬性 Sno,Cno 定義為主碼。 對于多個屬性構(gòu)成的碼, 只能夠?qū)⑵涠x為表級約束條件, 而無法用列級約束條件來實現(xiàn)。 CREATE TABLE SC( SNO CHAR(7) NOT NULL, CNO
7、CHAR(4) NOT NULL, GRADE SMALLINT, PRIMARY KEY (SNO,CNO); 2. 參照完整性定義表的外碼關(guān)系模型的參照完整性是在 CREATE TABLE 中用 FOREIGN KEY 語句來定義的,并用REFERENCES 來指明外碼參照的是哪些表的主碼。 定義表 SC,其中 Sno 參照表 Student 的主碼 Sno,Cno 參照表 Course 的主碼 Cno。 CREATE TABLE SC( SNO CHAR(7) NOT NULL, CNO CHAR(4) NOT NULL, GRADE SMALLINT, PRIMARY KEY (SNO
8、,CNO), FOREIGN KEY (SNO) REFERENCES STUDENT(SNO), FOREIGN KEY (CNO) REFERENCES COURSE(CNO); 3. 用戶定義完整性用戶定義的屬性上的約束條件例 6-1列值非空。在定義 SC 表時,Sno、Cno 和 Grade 屬性都不允許取空值。在不特別聲明的情況下,非碼屬性的值是允許取空值的。 CREATE TABLE SC( SNO CHAR(7) NOT NULL, /*列值非空的約束 NOT NULL*/ CNO CHAR(4) NOT NULL, GRADE SMALLINT NOT NULL); 例 6-2
9、列值唯一。建立部門表 DEPT,要求部門名稱 Dname 取值唯一,部門編號 Deptno 屬性為主碼。 CREATE TABLE DEPT( DEPTNO NUMERIC(7) PRIMARY KEY, DNAME VARCHAR(9) UNIQUE, /*UNIQUE 約束要求 Dname 取值唯一*/ LOCATION VARCHAR(10); 例 6-3CHECK 短語指定列值應(yīng)該滿足的條件。 定義表 Student, 屬性 Ssex 的值只允許取 “男”或“女” ;定義表 SC,屬性 Grade 的值定義在 0100 之間。 CREATE TABLE STUDENT( SNO CHA
10、R(7) PRIMARY KEY, SNAME CHAR(8) NOT NULL, SSEX CHAR(2) CHECK(SSEX IN(男,女), /*CHECK 語句約束條件*/ SAGE SMALLINT, SDEPT CHAR(20); CREATE TABLE SC( SNO CHAR(7) NOT NULL, CNO CHAR(4) NOT NULL, GRADE SMALLINT CHECK (GRADE>0 AND GRADE<100), /*CHECK語句約束條件*/ PRIMARY KEY (SNO,CNO), FOREIGN KEY (SNO) REFEREN
11、CES STUDENT(SNO), FOREIGN KEY (CNO) REFERENCES COURSE(CNO); 用戶定義的元組上的約束條件CHECK 短語不光能夠定義屬性列上的約束條件,還允許用戶定義元組級的約束條件。定義表 Student,要求當(dāng)學(xué)生性別為男時,其名字不能以 Ms.打頭。 CREATE TABLE STUDENT( SNO CHAR(7) PRIMARY KEY, SNAME CHAR(8) NOT NULL, SSEX CHAR(2), SAGE SMALLINT, SDEPT CHAR(20), CHECK (SSEX = 女 OR SNAME NOT LIKE
12、Ms.%); /*定義了 Sname 和 Ssex 之間的約束條件*/ 4. CONSTRAINT 完整性約束命名子句。 在定義表時利用約束命名子句對完整性約束條件命名,能夠靈活地增加或刪除一個完整性約束條件。 例 8-1定義表 Student,要求學(xué)號在 9000099999 之間,姓名不能取空值,年齡小于 30,性別只能是“男”或“女” 。要求全部用約束命名子句實現(xiàn)。 CREATE TABLE STUDENT( SNO NUMERIC(5) CONSTRAINT C1 CHECK (SNO BETWEEN 90000 AND 99999), SNAME VARCHAR(20) CONSTR
13、AINT C2 NOT NULL, SAGE NUMERIC(3) CONSTRAINT C3 CHECK (SAGE < 30), SSEX VARCHAR(2) CONSTRAINT C4 CHECK (SSEX IN (男,女), CONSTRAINT StudentKey PRIMARY KEY(SNO); 在表 Student 上共定義了 5 個約束條件,包括主碼約束以及 C1、C2、C3、C4 四個列級約束。 例 8-2修改表 Student 中的完整性限制,去掉對性別的限制,并將年齡的限制由小于 30 改為小于 40。 ALTER TABLE STUDENT /*去掉對性別
14、的限制條件 C4*/ DROP CONSTRAINT C4; ALTER TABLE STUDENT /*先刪掉原來的約束條件再增加一個新的約束條件*/DROP CONSTRAINT C3; ALTER TABLE STUDENT ADD CONSTRAINT C3 CHECK(SAGE <40); 5. 觸發(fā)器。 觸發(fā)器可以看成是一類特殊的存儲過程, 在滿足某個特定條件時自動觸發(fā)執(zhí)行, 是提高數(shù)據(jù)庫服務(wù)器性能的有力工具。觸發(fā)器分為三類,更新觸發(fā)器、插入觸發(fā)器和刪除觸發(fā)器。能夠定義觸發(fā)器的用戶有: 1) 表的所有者; 2) 系統(tǒng)管理員; 3) 擁有創(chuàng)建觸發(fā)器的權(quán)限,且擁有對操作對象的相應(yīng)
15、的操作權(quán)限的用戶。 定義表 TAB,并在其上定義觸發(fā)器 TRI,在對 TAB 的插入和更新前檢查,如果插入或更新的值在 1001000 之間的話,將值置為 50;如果值大于 1000 的話,則給出新值不允許大于 1000 的提示。 CREATE TABLE tab (col int); INSERT INTO tab VALUES(10); INSERT INTO tab VALUES(20); CREATE TRIGGER tri BEFORE UPDATE OR INSERT ON tab FOR EACH ROW AS BEGIN IF new.col > 100 AND new.
16、col < 1000 THEN new.col := 50; END IF; IF new.col > 1000 THEN RAISE EXCEPTION New values can not more than 1000; END IF; END; 檢測:1)向表 TAB 插入數(shù)據(jù)(150) 執(zhí)行:INSERT INTO TAB VALUES(150); 結(jié)果:插入的數(shù)據(jù)為 150。值在 1001000 之間,觸發(fā)器 TRI 自動執(zhí)行,將插入的值置為 50。 2)對表中的數(shù)據(jù)進(jìn)行更新,將 20 更新為 1500。 執(zhí)行:UPDATE TAB SET COL = 1500 WHER
17、E COL = 20; 結(jié)果:系統(tǒng)報出New values can not more than 1000的錯誤, 對表進(jìn)行查詢后發(fā)現(xiàn),表中的數(shù)據(jù)并沒有發(fā)生改變。說明在更新數(shù)據(jù)時,值大于 1000則觸發(fā)觸發(fā)器 TRI 自動執(zhí)行,系統(tǒng)報錯,更新無效。 刪除觸發(fā)器 TRI。 DROP TRIGGER TRI ON TAB; 刪除觸發(fā)器 TRI 之后,在對 TAB 進(jìn)行插入和更新就不再有以上限制了。 六、心得感受通過本次實驗,我懂得了數(shù)據(jù)庫的完整性語句的書寫,熟悉了通過SQL對數(shù)據(jù)進(jìn)行完整性控制的過程,從而深入理解數(shù)據(jù)庫系統(tǒng)的完整性概念,為以后學(xué)習(xí)和工作奠定了基礎(chǔ)。 實驗五 通過嵌入式SQL訪問數(shù)據(jù)庫
18、 日期 2011-4-13一、實驗?zāi)康氖煜ねㄟ^嵌入式SQL編程訪問數(shù)據(jù)庫。二、實驗原理將SQL嵌入到高級語言中混合編程,程序中會含有兩種不同計算模型的語句。(1)SQL語句² 描述性的面向集合的語句² 負(fù)責(zé)操縱數(shù)據(jù)庫(2)高級語言語句² 過程性的面向記錄的語句² 負(fù)責(zé)控制程序流程執(zhí)行過程:1由DBMS的預(yù)處理程序?qū)υ闯绦蜻M(jìn)行掃描,識別出SQL語句2把它們轉(zhuǎn)換成主語言調(diào)用語句,以使主語言編譯程序能識別它3最后由主語言的編譯程序?qū)⒄麄€源程序編譯成目標(biāo)碼。三、實驗儀器和設(shè)備1. 計算機(jī)2. SQL Server 2000四、預(yù)習(xí)要求嵌入式SQL語句的基本用法。
19、五、實驗內(nèi)容及步驟1. 查詢某一門課程的信息。要查詢的課程由用戶在程序運(yùn)行過程中指定,放在主變量中。EXEC SQL BEGIN DECLARE SECTION; /*說明主變量 deptname, HSno, HSname, *HSsex,HSage,NEWAGE。*/ Char deptname20; char HSno9; char HSname20; char HSsex2; int HSage; int NEWAGE;EXEC SQL END DECLARE SECTION; /*聲明部分結(jié)束*/ long SQLCODE; EXEC SQL INCLUDE sqlca; /*定義
20、SQL 通信區(qū)*/ int main(void) int count = 0; char yn; /*變量 yn 代表 yes 或者 no*/printf("Please choose the department name(CS/MA/IS): "); /*為主變量 deptname 賦值*/ scanf("%s", &deptname); EXEC SQL CONNECT TO 學(xué)生課程數(shù)據(jù)庫localhost:54321 USER "SYSTEM"/"MANAGER" /*連接數(shù)據(jù)庫 TEST*/ E
21、XEC SQL DECLARE SX CURSOR FOR /*說明游標(biāo),為查詢和更新做準(zhǔn)備*/ SELECT Sno, Sname, Ssex, Sage FROM Student WHERE SDept = :deptname; EXEC SQL OPEN SX; /*打開游標(biāo)*/ for ( ; ; ) /*用循環(huán)結(jié)構(gòu)逐條處理結(jié)果集的記錄*/ 2. 查詢選修某一門課程的選課信息,要查詢的課程號由用戶在程序運(yùn)行過程中指定,放在主變量中,然后根據(jù)用戶的要求修改其中某些記錄的成績字段。EXEC SQL FETCH SX INTO :HSno, :HSname, :HSsex,:HSage; /
22、*游標(biāo)向前推進(jìn)一行,取結(jié)果送主變量*/ if (sqlca.sqlcode != 0) break; /*其中參數(shù) 0 代表 SUCCESS*/ if(count+ = 0) /*如果是第一行的話,先打出行頭*/ printf("n%-10s %-20s %-10s %-10sn", "Sno", "Sname", "Ssex", "Sage"); printf("%-10s %-20s %-10s %-10dn", HSno, HSname, HSsex, HSage);
23、printf("UPDATE AGE(y/n)?");do scanf("%c",&yn); while(yn != 'N' && yn != 'n' && yn != 'Y' && yn != 'y'); if(yn = 'y' | yn = 'Y') /*如果選擇修改的操作。*/ printf("INPUT NEW AGE:"); scanf("%d",&
24、;NEWAGE); /*用戶輸入新年齡,存放在主變量 EXEC SQL UPDATE Student * NEWAGE 中*/ SET Sage = :NEWAGE WHERE CURRENT OF SX; /*對 Student 表中的年齡進(jìn)行更新*/ EXEC SQL CLOSE SX; /*關(guān)閉游標(biāo)*/ EXEC SQL COMMIT WORK; /*提交更新*/ EXEC SQL DISCONNECT 學(xué)生課程數(shù)據(jù)庫; /*斷開連接*/ 3.對 C 程序進(jìn)行處理,生成可執(zhí)行文件。 本實驗是在 windows 環(huán)境下對 C 程序進(jìn)行預(yù)編譯和編譯、鏈接的。沒有給出 Linux 環(huán)境下的編譯
25、過程,讀者如果有興趣,可以自行實驗。 1. 預(yù)編譯。 本實驗中,test.pc 存放在 C:Program FilesBasesoftKingbaseES4.1bin 目錄下,與預(yù)處理程序 esqlc 存放在同一目錄下,這樣做的目的是便于之后的三步處理過程,不需要特別指定存放路徑。如果存放在其他目錄下,只需要在文件名前指定完整路徑即可。 (1) “開始” “運(yùn)行” ,輸入 cmd 命令,進(jìn)入命令行編輯器。 (2)命令行編輯器默認(rèn)的路徑為 C:Documents and Settings用戶名>,我們首先需要轉(zhuǎn)到預(yù)處理程序 esqlc 所在的目錄下。鍵入: cd C:Program Fil
26、esBasesoftKingbaseES4.1bin。 (3)進(jìn)行預(yù)編譯。 esqlc -I "C:Program FilesBasesoftKingbaseES4.1include" -o test.c test.pc (4)如果預(yù)編譯成功,則自動生成一個.c 文件。結(jié)果提示可能會有一個“WARNING: EXEC SQL SQLCA: SQL language extension” ,但對結(jié)果不造成影響。 2. 編譯和鏈接。 經(jīng)過預(yù)處理之后,生成了標(biāo)準(zhǔn)的 C 語言程序 test.c,就可以使用標(biāo)準(zhǔn)的 C 語言編譯器進(jìn)行編譯了。本實驗直接使用命令行的方式對該 C 程序進(jìn)行
27、編譯和鏈接。 (1)編譯。 在編譯過程中需要使用到 cl.exe 程序,cl.exe 是 Visual C+ 的編譯器名稱。如果安裝Visual C+在 C:Program FilesMicrosoft Visual StudioVC98 下,則其編譯器 cl.exe 所在路徑應(yīng)該是 C:Program FilesMicrosoft Visual StudioVC98Bin。 在 cl 后面可以加上各類參數(shù)命令,進(jìn)行不同的操作。 本實驗中使用到的 “/c” 命令是表示只編譯, 不鏈接, 相當(dāng)于在 Visual C+ 6.0 中,選擇"Build"菜單下的"Comp
28、ile"。編譯命令如下: cl /c /DWIN32 /I"C:Program FilesBasesoftKingbaseES4.1include" /Fotest.obj test.c (2)鏈接。 由于在編譯時我們選用“/c”命令只對 test.c 進(jìn)行了編譯并沒有進(jìn)行鏈接,而該 C 程序執(zhí)行需要鏈接 esql.lib 函數(shù)庫,所以在鏈接時我們需要指定這個庫文件的路徑。鏈接命令如下:link /out:test.exe test "C:Program FilesBasesoftKingbaseES4.1libesql.lib" 最后生成可執(zhí)
29、行文件 test.exe,即可實現(xiàn)具體功能。六、心得感受 通過此次實驗,我懂得了嵌入式SQL編程訪問數(shù)據(jù)庫所運(yùn)用的語句,知道了其訪問數(shù)據(jù)庫的步驟和過程,為以后做數(shù)據(jù)庫方面的工作打下了基礎(chǔ)。實驗六 編寫存儲過程訪問數(shù)據(jù)庫 日期 2011-5-8一、實驗?zāi)康?. 熟悉使用存儲過程來進(jìn)行數(shù)據(jù)庫應(yīng)用程序的設(shè)計。2. 體會存儲過程的優(yōu)點。二、實驗原理存儲過程(Stored Procedure)是一組為了完成特定功能的SQL 語句集,經(jīng)編譯后存儲在數(shù)據(jù)庫。中用戶通過指定存儲過程的名字并給出參數(shù)(如果該存儲過程帶有參數(shù))來執(zhí)行它。在SQL Server 的系列版本中存儲過程分為兩類:系統(tǒng)提供的存儲過程和用戶
30、自定義存儲過程。系統(tǒng)過程主要存儲在master 數(shù)據(jù)庫中并以sp_為前綴,并且系統(tǒng)存儲過程主要是從系統(tǒng)表中獲取信息,從而為系統(tǒng)管理員管理SQL Server 提供支持。通過系統(tǒng)存儲過程,MS SQL Server 中的許多管理性或信息性的活動(如了解數(shù)據(jù)庫對象、數(shù)據(jù)庫信息)都可以被順利有效地完成。盡管這些系統(tǒng)存儲過程被放在master 數(shù)據(jù)庫中,但是仍可以在其它數(shù)據(jù)庫中對其進(jìn)行調(diào)用,在調(diào)用時不必在存儲過程名前加上數(shù)據(jù)庫名。而且當(dāng)創(chuàng)建一個新數(shù)據(jù)庫時,一些系統(tǒng)存儲過程會在新數(shù)據(jù)庫中被自動創(chuàng)建。用戶自定義存儲過程是由用戶創(chuàng)建并能完成某一特定功能(如查詢用戶所需數(shù)據(jù)信息)的存儲過程。三、實驗儀器和設(shè)備
31、1. 計算機(jī)2. SQL Server 2000四、預(yù)習(xí)要求1. 復(fù)習(xí)創(chuàng)建存儲過程的語法。2. 復(fù)習(xí)存儲過程的特點。五、實驗內(nèi)容及步驟對學(xué)生課程數(shù)據(jù)庫,編寫存儲過程,完成下面功能:1.統(tǒng)計離散數(shù)學(xué)的成績分布情況,即按照各分?jǐn)?shù)段統(tǒng)計人數(shù);1.創(chuàng)建存儲過程 1) 創(chuàng)建需要的表結(jié)構(gòu)。 因為存儲過程在執(zhí)行后在客戶端并沒有返回值,因此需要建立一個表存放執(zhí)行后的結(jié)果,并返回到客戶端顯示。根據(jù)實驗要求,我們要統(tǒng)計選修了離散數(shù)學(xué)的學(xué)生的成績分布,因此我們建立表 Rank,其中第一列 division 顯示成績分段劃分,第二列 number 顯示的是成績在該分?jǐn)?shù)段的學(xué)生人數(shù)。 CREATE TABLE Rank
32、( division CHAR(20), number INT); 2) 編寫存儲過程。 CREATE OR REPLACE PROCEDURE statistic_mark(name CHAR(50) /存儲過程帶有一個字符型參數(shù)值,便于統(tǒng)計不同科目的分?jǐn)?shù)分布情況AS DECLARE less60 INT := 0; /分為五個分?jǐn)?shù)段,并置初始值為 0 b60a70 INT := 0; b70a80 INT := 0; b80a90 INT := 0; more90 INT := 0; curcno CHAR(4); /設(shè)字符型變量 curcno 存放輸入的課程名稱參數(shù) BEGIN SELE
33、CT cno INTO curcno /根據(jù)課程名稱在 Course 表中查詢查詢該課程號 FROM Course WHERE cname = name; IF NOT FOUND THEN /如果不存在用戶輸入的課程名稱,返回錯誤信息RAISE EXCEPTION '輸入錯誤,沒有該課程' END IF; SELECT count(*) INTO less60 /查詢分?jǐn)?shù)低于 60 分的學(xué)生人數(shù) FROM sc WHERE cno = curcno AND grade < 60; SELECT count(*) INTO b60a70 /查詢分?jǐn)?shù)在 60 到 70 之間
34、的學(xué)生人數(shù) FROM sc WHERE cno = curcno AND grade >= 60 AND grade < 70; SELECT count(*) INTO b70a80 /查詢分?jǐn)?shù)在 70 到 80 之間的學(xué)生人數(shù) FROM sc WHERE cno = curcno AND grade >= 70 AND grade < 80; SELECT count(*) INTO b80a90 /查詢分?jǐn)?shù)在 80 到 90 之間的學(xué)生人數(shù) FROM sc WHERE cno = curcno AND grade >= 80 AND grade < 9
35、0; SELECT count(*) INTO more90 /查詢分?jǐn)?shù)高于 90 的學(xué)生人數(shù) FROM sc WHERE cno = curcno AND grade >= 90; /向表 Rank 中插入五條記錄,顯示成績分布情況 INSERT INTO Rank VALUES('0,60)',less60); INSERT INTO Rank VALUES('60,70)',b60a70); INSERT INTO Rank VALUES('70,80)',b70a80); INSERT INTO Rank VALUES('8
36、0,90)',b80a90); INSERT INTO Rank VALUES('90,100',more90); END; 2. 執(zhí)行存儲過程 首先執(zhí)行編寫好的存儲過程 statistic_mark,然后在表 Rank 中查看執(zhí)行結(jié)果。 PERFORM PROCEDURE statistic_mark(離散數(shù)學(xué)); SELECT * FORM Rank; 2)統(tǒng)計任意一門課的平均成績。 1. 創(chuàng)建存儲過程 1) 創(chuàng)建需要的表結(jié)構(gòu)。 根據(jù)實驗要求,我們要統(tǒng)計任意一門課的平均成績,因此我們Avggrade,其中第一列 cname 顯示統(tǒng)計的課程名稱,第二列 avgg 顯示
37、選修了該課程的學(xué)生平均成績。 CREATE TABLE Avggrade( cname CHAR(50), avgg NUMERIC(10, 6); 2) 編寫存儲過程。 CREATE OR REPLACE PROCEDURE collect_avggrade() AS DECLARE /聲明變量 curname CHAR(50); curcno CHAR(4); curavgg NUMERIC(10, 6); CURSOR mycursor FOR /聲明游標(biāo) mycursor 查詢課程號和名稱 SELECT cno, cname FROM course; BEGIN OPEN mycurs
38、or; /打開游標(biāo) IF mycursor%ISOPEN THEN /條件控制,游標(biāo)打開時進(jìn)行以下處理 LOOP /循環(huán)控制 FETCH mycursor INTO curcno, curname; /游標(biāo)推進(jìn)一行,取結(jié)果送變量 EXIT WHEN (mycursor%NOTFOUND); /如果沒有返回值則退出循環(huán) SELECT AVG(grade) INTO curavgg FROM SC /求該課程的平均值送變量 WHERE cno = curcno; /向 Avggrade 表中插入記錄,顯示課程名稱和平均成績 INSERT INTO Avggrade VALUES(curname, curavgg); END LOOP; /結(jié)束循環(huán)控制 END IF; /結(jié)束條件控制 CLOSE mycursor; /關(guān)閉游
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 簽訂經(jīng)紀(jì)服務(wù)合同范本
- 業(yè)務(wù)代管合同樣本
- 寫物業(yè)承包合同樣本
- 分期買號合同標(biāo)準(zhǔn)文本
- 養(yǎng)豬設(shè)備交易合同樣本
- 分期按揭合同樣本
- 農(nóng)戶桉樹出售合同標(biāo)準(zhǔn)文本
- 2025年江蘇建筑安全員《B證》考試題庫及答案
- 低價出售磚機(jī)合同樣本
- 公司股解約合同標(biāo)準(zhǔn)文本
- DB15-T 3967.3-2025 氣候可行性論證技術(shù)規(guī)范 第3部分:水利工程
- 【MOOC】《研究生英語科技論文寫作》(北京科技大學(xué))中國大學(xué)MOOC慕課答案
- 幼兒園4000余冊師生圖書配置一覽表
- 九宮難易數(shù)獨、六宮數(shù)獨打印版
- 北京科技大學(xué)計算機(jī)過程控制
- 學(xué)前衛(wèi)生學(xué)名詞解釋
- 某水電站下閘蓄水方案匯報PPT
- 煉鐵廠車間主任安全生產(chǎn)目標(biāo)責(zé)任書
- 第四章 非金屬及其化合物 思維導(dǎo)圖
- 進(jìn)度保證方案
- 2020年北京中考英語試題及答案
評論
0/150
提交評論