数据库作业9:INSERT / UPDATE / DELETE / NULL / VIEW

这篇博客介绍了SQL中数据更新的三大操作:INSERT(插入数据)、UPDATE(修改数据)和DELETE(删除数据),详细阐述了如何处理NULL值以及视图的定义、查询和更新。内容涵盖了插入元组、子查询结果插入、修改单个元组和多个元组的值、带子查询的修改语句,以及删除单个元组和多个元组的值。此外,还讨论了空值的产生、判断和处理,以及视图的创建、查询和更新,强调了视图在简化操作、逻辑独立性和数据安全等方面的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3.5 数据更新

数据更新操作有三种:向表中添加若干行数据、修改表中的数据和删除表中的若干行数据。

3.5.1 插入数据

SQL的数据插入语句INSERT通常有两种形式,一种是插入一个元组,另一种是插入子查询结果(可以一次插入多个元组)。

插入元组

插入元组的INSERT语句的一般格式
INSERT
INTO <表名>(属性列1,属性列2…)
VALUES(常量1,常量2…);

【例3.69】将一个新学生元组(学号:201215133;姓名:陈东;性别:男;所在系:IS;年龄:18岁)插入到Student表中。

INSERT
INTO Student(Sno,Sname,Ssex,Sdept,Sage)
VALUES('201215133','陈东','男','IS',18);

INTO 子句不写属性名的情况
**【3.70】将学生张成民的信息插入到Student表中。 **

INSERT
INTO  Student
VALUES ('201215126','张成民','男',18,'CS');

这个的结果是不能运行,然后稍微改了一下

INSERT
INTO  Student
VALUES (201215126,'张成民','男',18,'CS');

需要注意的地方是:插入值要与表的属性列一一对应,不然可能会因为数据不匹配出错(逻辑上也是不正确的)

【例3.71】插入一条选课记录( ‘200215128’,'1 ')

INSERT
INTO SC(Sno,Cno)
VALUES('201215128','1');

在Grade属性值缺省的情况下,关系数据库管理系统将在新插入记录的Grade列上自动地赋空值。
或者

INSERT
INTO SC(Sno,Cno)
VALUES('201215128','1',NULL);

因为没有指出SC的属性名,在Grade列上要明确的给出空值

插入子查询结果

子查询不仅可以嵌套在SELECT语句中用以构造父查询的条件,也可以嵌套在INSERT语句中用以生成要插入的批量数据。
插入子查询结果的INSERT语句的一般格式
INSERT
INTO<表名>[属性列1,属性列2…]
子查询;
【例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;

在这里插入图片描述

3.5.2 修改数据

修改操作又称为更新操作,其语句的一般格式为
UPDATE 表名
SET <列名1>=<表达式1>,…
WHERE 控制条件;

修改某一个元组的值

【例3.73】将学生201215121的年龄改为22岁。

UPDATE Student
SET Sage = 22
WHERE Sno = '201215121
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值