数据更新
对表操作
CREAT、ALTER、DROP
对数据操作
INSERT、UPDATE、DELETE
插入数据——INSERT
①插入元组:语句格式:INSERT INTO <表名> [(<属性列1>[,<属性列2 >…)] VALUES (<常量1> [,<常量2>]… );
可以将每个属性名都列出来,属性值与之相对应;也可以不全部列出,只按照顺序列出属性值,没有的写作NULL即可。
对于外码,可以先设为NULL,确定后再进行修改。外码会受到限制,外码要么为空,要么源自于被参照关系的主码。
【例3.69】将一个新学生元组(学号:201215128;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中。
INSERT
INTO Student(Sno,Sname,Ssex,Sdept,Sage)
VALUES('201215128','陈冬','男','IS',18);
【例3.70】将学生张成民的信息插入到Student表中。
INSERT
INTO Student
VALUES('201215126','张成民','男',18,'CS');
//注意,INTO 不加属性名会按表中属性顺序插入
【例3.71】插入一条选课记录( ‘201215128’,'1 ')。
INSERT
INTO SC
VALUES ('201215128','1',NULL);
插入数据-插入子查询结果
②插入子查询结果:(要插入的内容在其他的表中有数据)
语句格式:INSERT
INTO <表名> [(<属性列1> [,<属性列2>… )]
子查询;
子查询SELECT子句目标列必须与INTO子句在值的个数和值的类型上匹配
【例3.72】对每一个系,求学生的平均年龄,并把结果存入数据库.
//第一步:建个表
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 <表名>