- pdf下載:密碼7281
- 專欄目錄首頁:【專欄必讀】(考研復試)資料庫系統概論第五版(王珊)專欄學習筆記目錄導航及課后習題答案詳解

- 一:插入資料(INSERT)
- (1)插入元組
- (2)插入子查詢結果
- 二:修改資料(UPDATE)
- (1)修改某一個元組的值
- (2)修改多個元組的值
- (3)帶子查詢的修改陳述句
- 三:洗掉資料(DELETE)
- (1)洗掉某一個元組的值
- (2)洗掉多個元組的值
- (3)帶子查詢的洗掉陳述句
SQL資料更新主要有三種形式
- 插入資料(INSERT)
- 修改資料(UPDATE)
- 洗掉資料(DELETE)
一:插入資料(INSERT)
(1)插入元組
語法:格式如下,用于將新元組插入指定表中,需要注意
INTO子句中沒有出現的屬性列,新元組在這些列上將會取NULL- 若
INTO子句中沒有指明任何屬性列名,則新插入的元祖必須在每個屬性列上均有值

演示:
【例1】將一個新學生元組 (學號:200215128;姓名:陳冬;性別:男;所在系:IS;年齡:18歲) 插入到Student表中
INSERT
INTO student(Sno,Sname,Ssex,Sdept,Sage)
VALUES('201215128','陳冬','男','IS',18);
- 注意順序可以和表不一致

【例2】插入學生張成民
INSERT
INTO student
VALUES('201215126','張成民','男',18,'CS');
- 注意由于沒有指定順序,所以按照必須按照表中屬性列的順序插入,否則會導致插入錯誤

【例3】插入一條選課記錄(201215128,1)
INSERT
INTO sc(Sno,Cno)
values('201215128','1');
- 在這種情況下,
Grade屬性列會設定為NULL - 需要注意如果沒有給出屬性列,則必須執行
Grade為NULL

【例4】插入多條記錄
INSERT
INTO student
VALUES
(201515000,'小趙','男',30,'IS'),
(201515001,'小錢','女',28,'MA'),
(201515002,'小孫','男',33,'MJ'),
(201515003,'小李','女',25,'CS'),
(201515004,'小周','男',41,'LI');
(2)插入子查詢結果
語法:格式如下,子查詢同樣可以嵌套在INSERT陳述句中用于生成待插入的批量資料

演示:
【例5】對每一個系,求學生的平均年齡,并把結果存入資料庫
CREATE TABLE dept_age(
Sdept char(15),
Age SMALLINT
);
INSERT
INTO dept_age(Sdept,Age)
SELECT Sdept,AVG(Sage)
FROM student
GROUP BY Sdept;

二:修改資料(UPDATE)
語法:格式如下,其功能是修改指定表中滿足WHERE子句條件的元組
- 如果省略WHERE子句,則表示要修改表中所有元組

(1)修改某一個元組的值
演示:
【例6】將學生201215121的年齡改為22歲
UPDATE student
set Sage=22
WHERE Sno='201215121';

(2)修改多個元組的值
演示:
【例7】將所有學生的年齡增加1歲
UPDATE student
set Sage=Sage+1;

(3)帶子查詢的修改陳述句
演示:
【例8】將CS系所有學生的成績置0
UPDATE sc
SET Grade=0
WHERE Sno IN
(
SELECT Sno FROM student WHERE Sdept='CS'
);

三:洗掉資料(DELETE)
語法:格式如下,其功能是從指定表中洗掉滿足WHERE子句條件的所有元組,注意
DELETE洗掉的是表的資料,而不是表的定義- 如果省略
WHERE子句,那么就表示洗掉全部元組

(1)洗掉某一個元組的值
演示:
【例9】洗掉學號為201215128的學生記錄
DELETE
FROM student
WHERE Sno='201215128';

(2)洗掉多個元組的值
演示:
【例10】洗掉所有的學生選課記錄
DELETE
FROM SC;
(3)帶子查詢的洗掉陳述句
演示:
【例11】洗掉計算機科學系所有學生的選課記錄
DELETE FROM sc
WHERE Sno IN
(SELECT Sno FROM student WHERE Sdept='CS');
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/544069.html
標籤:其他
