《數據庫系統概論》 -- 3.3 DML之增刪改
數據更新操作有三種:添加、修改、刪除
INSERT 格式 INSERT
INTO <表名> [(<屬性列1>[,<屬性列2>...])]
VALUES (<常量1>[,<常量2>...]);
或
INSERT
INTO <表名> [(<屬性列1>[,<屬性列2>...])]
<select子查詢>;
註意 在INTO子句中沒有出現的屬性列,新元組取空值;
如果某列不允許為空,則會報錯
如果INTO子句只有表名,則數據的順序必須與創建語句的順序一致
舉例
將一個新學生元組(201215128,陳冬,男,IS,18)插入Student表
INSERT INTO Student (Sno,Sname,Ssex,Sdept,Sage) VALUES (‘201215128‘,‘陳冬‘,‘男‘,‘IS‘,18);
將學生張成民的信息(201215126,張成民,男,CS,18)插入到Student表中
INSERT INTO Student (Sno,Sname,Ssex,Sdept,Sage) VALUES (‘201215126‘,‘張成民‘,‘男‘,‘CS‘,18);
插入一條選課記錄(‘201215128‘,‘1‘)
INSERT INTO SC (Sno,Cno) VALUES (‘201215128‘,‘1‘);
對每一個系,求學生的平均年齡,並將結果存入數據庫
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 格式 UPDATE <表名>
SET <列名>=<表達式>[, <列名>=<表達式>...]
[WHERE <條件表達式>];
舉例
將學生201215121的年齡改為22歲
UPDATE Student SET Sage=22 WHERE Sno=‘201215122‘;
將所有學生年齡增加1歲
UPDATE Student SET Sage=Sage+1;
將計算機科學系全體學生的成績置零
UPDATE SC SET Grade=0 WHERE Sno IN (
SELECT Sno FROM Student WHERE Sdept=‘CS‘
);
DELETE 格式 DELETE FROM <表名>
[WHERE <條件表達式>];
說明 如果沒有WHERE子句,則刪除表中所有數據,該表還在
舉例
刪除學號為201215128的學生記錄
DELETE FROM Student WHERE Sno=‘201215128‘;
刪除所有學生的選課記錄
DELETE FROM SC;
刪除計算機科學系所有學生的選課記錄
DELETE FROM SC WHERE Sno IN (
SELECT Sno FROM Student WHERE Sdept=‘CS‘
);
《數據庫系統概論》 -- 3.3 DML之增刪改