標籤:資料庫 刪除 更新 修改 values
插入資料
兩種插入資料方式
1. 插入元組
2. 插入子查詢結果
可以一次插入多個元組
語句格式
INSERT INTO <表名> [(<屬性列1>[,<屬性列2 >…)] VALUES (<常量1> [,<常量2>] … )
功能
將新元組插入指定表中
[例1] 將一個新學生元組(學號:200215128;姓名:陳冬;性別:男;所在系:IS;年齡:18歲)插入到Student表中。 INSERT INTO Student (Sno,Sname,Ssex,Sdept,Sage) VALUES (‘200215128‘,‘陳冬‘,‘男‘,‘IS‘,18);
[例2] 將學生張成民的資訊插入到Student表中。 INSERT INTO Student VALUES (‘200215126’, ‘張成民’, ‘男’,18,‘CS‘);
[例3] 插入一條選課記錄( ‘200215128‘,‘1 ‘)。 INSERT INTO SC(Sno,Cno) VALUES (‘ 200215128 ’,‘ 1 ’); RDBMS將在新插入記錄的Grade列上自動地賦空值。 或者: INSERT INTO SC VALUES (‘ 200215128 ‘,‘ 1 ‘,NULL);
插入子查詢結果
語句格式 INSERT INTO <表名> [(<屬性列1> [,<屬性列2>… )] 子查詢;功能 將子查詢結果插入指定表中
INTO子句(與插入元組類似) 子查詢SELECT子句目標列必須與INTO子句匹配值的個數值的類型
[例4] 對每一個系,求學生的平均年齡,並把結果存入資料庫。第一步:建表 CREATE TABLE Dept_age (Sdept CHAR(15) /* 系名*/ Avg_age SMALLINT); /*學生平均年齡*/
第二步:插入資料 INSERT INTO Dept_age(Sdept,Avg_age) SELECT Sdept,AVG(Sage) FROM Student GROUP BY Sdept;
修改資料
語句格式
UPDATE <表名>
SET <列名>=<運算式>[,<列名>=<運算式>]…
[WHERE <條件>];
功能修改指定表中滿足WHERE子句條件的元組
SET子句指定修改方式要修改的列修改後取值WHERE子句指定要修改的元組預設表示要修改表中的所有元組
三種修改方式
1. 修改某一個元組的值
[例5] 將學生200215121的年齡改為22歲 UPDATE Student SET Sage=22 WHERE Sno=‘ 200215121 ‘;
- 修改多個元組的值
[例6] 將所有學生的年齡增加1歲 UPDATE Student SET Sage= Sage+1;
- 帶子查詢的修改語句
[例7] 將電腦科學系全體學生的成績置零。 UPDATE SC SET Grade=0 WHERE ‘CS‘= (SELECT Sdept FROM Student WHERE Student.Sno = SC.Sno);
[例8] 將選修了課程名為DB的不及格的成績全部改為60分。 UPDATE SC SET Grade=60 WHERE Grade<60 AND Cno IN (SELECT Cno FROM COURSE WHERE Cname = ‘DB’);
RDBMS在執行修改語句時會檢查修改操作
是否破壞表上已定義的完整性規則
實體完整性
主碼不允許修改
使用者定義的完整性
NOT NULL約束
UNIQUE約束
範圍約束
刪除資料
語句格式
DELETE FROM <表名> [WHERE <條件>];
功能
刪除指定表中滿足WHERE子句條件的元組
WHERE子句
指定要刪除的元組
預設表示要刪除表中的全部元組,表的定義仍在字典中
三種刪除方式
1. 刪除某一個元組的值
[例8] 刪除學號為200215128的學生記錄。 DELETE FROM Student WHERE Sno= 200215128 ‘;
- 刪除多個元組的值
[例9] 刪除所有的學生選課記錄。 DELETE FROM SC;
- 帶子查詢的刪除語句
[例10] 刪除電腦科學系所有學生的選課記錄。 DELETE FROM SC WHERE ‘CS‘= (SELETE Sdept FROM Student WHERE Student.Sno=SC.Sno);
資料庫 - 資料更新(插入、修改、刪除)