前提條件: 數(shù)據(jù)庫中現(xiàn)存在3個關(guān)系表 Student (Sno ,Sname,Ssex,Sage,Sdept); 解釋:學(xué)生(學(xué)號,學(xué)生姓名,學(xué)生性別,學(xué)生年齡,學(xué)生專業(yè)); Course(Cno,Cname,Cpno); 解釋:課程(課程號,課程名,可能的先修課程); SC(Sno,Cno,Grade); 解釋:學(xué)生選課情況(學(xué)號,課程號,成績);
一: 插入數(shù)據(jù) 1)插入一個元祖:insert into <表名> [<屬性列1>] [,<屬性列2>…] values (<常量1>[,<常量2>]…) (常量要與屬性列對應(yīng),順序相同) 例1: insert into SC(Sno,Cno) values (‘95020’,’1’) (當(dāng)插入數(shù)據(jù)時未賦值的屬性列要么允許為空,要么有默認(rèn)的初始值,否則數(shù)據(jù)庫將不允許插入) 例2: insert into Student values (‘95020’,’陳冬’,’男’,’IS’,18)
2)插入子查詢結(jié)果 insert into <表名>[<屬性列1>] [,<屬性列2>…] 子查詢 作用:將子查詢查到的結(jié)果按照屬性列的順序插入表中 例:insert into Deptage select Sdept ,avg(Sage) from Student group by Sdept (Deptage關(guān)系表中只有兩個屬性列, 系的名稱和在這個系中學(xué)生的平均年齡)
二:修改數(shù)據(jù) ipdate <表名> set <屬性列1> = <表達(dá)式1> [,<屬性列2> = <表達(dá)式2>]… [where <條件>] 作用:將滿足where條件的記錄的屬性列1和屬性列2的分量值改為表達(dá)式1和表達(dá)式2的值 例1: update Student set Sage=22 where Sno = ‘95001’ (將學(xué)號為95001的學(xué)生的年齡改為22) 例2:update Student set Sage = Sage+1 例3: update SC set Grade=0 where ‘CS’ = (select Sdept from Student where Student.Sno=SC.Sno) ———(將所有CS專業(yè)的學(xué)生的選修課成績置為0)
三:刪除數(shù)據(jù) delete from <表名> [where <條件>] 作用:刪除滿足where條件的記錄 例:delete from Student where Sno = ‘95019’ (刪除學(xué)號為95019的學(xué)生的記錄)
更新記錄時,要注意參照完整性約束條件。當(dāng)a表中的屬性列1是外碼(外碼即表示屬性列1在a表中不是主碼,但在b表中是主碼)則當(dāng)往a表中插入記錄時,必須保證此記錄在屬性列1上的分量在b表中已經(jīng)存在(即為參照完整性約束條件),總的來說,更新a之前必須先更新b。而當(dāng)刪除b表中記錄時,必須先刪除a表中的相關(guān)記錄,再刪除b表的記錄。我們可以將b叫做父(屬性列作為主碼的關(guān)系表),a叫做子(屬性列作為外碼的關(guān)系表),數(shù)據(jù)更新操作時,先更新父,再更新子,而刪除操作時,先殺子,再殺父
新聞熱點
疑難解答