第3章 关系数据库标准语言SQL——3.5 数据更新

简介: 第3章 关系数据库标准语言SQL——3.5 数据更新

3.5  数据更新

   

     数据更新操作有三种:向表中添加若干行数据、修改表中的数据和删除表中的若干行数据。在SQL中有相应的三类语句。


3.5.1  插入数据


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


01 插入元组

     插入元组的insert语句的格式为

    insert into <表名> [(<属性列1> [,<属性列2>]···)]

     values (<常量1> [,<常量2>]···);


     其功能是将新元组插入指定表中。其中新元组的属性列1的值为常量1,属性列2的值为常量2,···。into子句中没有出现的属性列,新元组在这些列上将取空值。但必须注意的是,在表定义时说明了not null的属性列不能取空值,否则会出错。

     如果into子句中没有指明任何属性列名,则新插入的元组必须在每个属性列上均有值。


例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’);

例3.71  插入一条选课记录(‘201215128’,‘1’)。

insert into SC(Sno,Cno)
values(‘201215128’,’1’);


    关系数据库管理系统将在新插入记录的Grade列上自动地赋空值。

     或者:insert into SC values(‘201215128’,’1’,null);

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


02 插入子查询结果

     子查询不仅可以嵌套在select语句中用以构造父查询的条件(如3.4.3小节所述),也可以嵌套在insert语句中用以生成要插入的批量数据


插入子查询结果的insert语句格式为

insert

into <表名> [(<属性列1>  [,<属性列2>···])]

子查询;


例3.72  对每一个系,求学生的平均年龄,并把结果存入数据库。

     首先在数据库中建立一个新表,其中一列存放系名,另一列存放相应的学生平均年龄。


create table Dept_age
        (Sdept char(15)
        Avg_age smallint);

     然后对Student表按系分组求平均年龄,在把系名和平均年龄存入新表中。


insert
into Dept_age(Sdept,Avg_age)
select Sdept,avg(Sage)
from Student
group by Sdept;


3.5.2  修改数据


     修改操作又称为更新操作,其语句的一般格式为

update <表名>

set <列名> = <表达式> [,<列名> = <表达式>]···

[where <条件>];


     其功能是修改指定表中满足where子句条件的元组。其中set子句给出<表达式>的值用于取代相应的属性列值。如果省略where子句,则表示要修改表中的所有元组。


01 修改某一个元组的值


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

update Student
set Sage = 22
where Sno = ‘201215121’;


02 修改多个元组的值


例3.74  将所有学生的年龄增加1岁。

update Student
set Sage = Sage + 1;

03 带子查询的修改语句


     子查询也可以嵌套在update语句中,用以构造修改的条件。


例3.75  将计算机科学系全体学生的成绩置零。

update SC
set Grade = 0
where Sno in
        (select Sno
        from Student
        where Sdept = ‘CS’);



3.5.3  删除数据


     删除语句的一般格式为

     delete

     from <表名>

     [where <条件>];


     delete语句的功能是从指定表中删除满足where子句条件的所有元组。如果省略where子句则表示删除表中全部元组,但表的定义仍在字典中。也就是说,delete语句删除的是表中的数据,而不是关于表的定义。


01 删除某一个元组的值


例3.76  删除学号201215128的学生记录。

delete
from Student
where Sno = ‘201215128’;


02 删除多个元组的值


例3.77  删除所有的学生选课记录。

delete
from SC;


     这条delete语句将使SC成为空表,它删除了SC的所有元组。


03 带子查询的删除语句


     子查询同样也可以嵌套在delete语句中,用以构造执行删除操作的条件。


例3.78  删除计算机科学系所有学生的选课记录。

delete
from SC
where Sno in
        (select Sno
        from Student
        where Sdept = ‘CS’);

    对某个基本表中数据的增、删、改操作有可能会破坏参照完整性,第5章5.2节  参照完整性将详细讲解如何进行参照完整性检查和控制。


相关实践学习
MySQL数据库快速部署实践
本场景主要介绍如何在一台配置了CentOS 7.7版本的ECS实例(云服务器)上安装mysql,执行mysql的常用操作,学习基本的SQL语句。
相关文章
|
3月前
|
SQL 机器学习/深度学习 人工智能
从“写SQL”到“聊数据”:NL2SQL如何用自然语言解锁数据库?
本文系统性地阐述了自然语言转SQL(NL2SQL) 技术如何让非技术背景的业务分析师实现数据自助查询,从而提升数据驱动决策的效率与准确性。
从“写SQL”到“聊数据”:NL2SQL如何用自然语言解锁数据库?
|
2月前
|
SQL 数据管理 关系型数据库
SQL 语言入门:开启数据管理的大门
在数字化时代,数据已成为核心资产,而 SQL 作为操作关系型数据库的标准语言,是数据从业者、程序员及办公人员必备技能。本文从基础概念讲起,详解 SQL 的核心用法,包括数据查询、插入、修改、删除及表结构操作,并通过实例演示帮助读者快速上手。掌握 SQL,不仅能提升数据处理效率,更为深入理解数据管理打下坚实基础。
|
2月前
|
SQL 人工智能 Linux
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
345 5
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
|
1月前
|
SQL 存储 监控
SQL日志优化策略:提升数据库日志记录效率
通过以上方法结合起来运行调整方案, 可以显著地提升SQL环境下面向各种搜索引擎服务平台所需要满足标准条件下之数据库登记作业流程综合表现; 同时还能确保系统稳健运行并满越用户体验预期目标.
177 6
|
2月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
|
1月前
|
SQL Oracle 关系型数据库
SQL语言小结
针对数据库、表单和数据行的增删改,没有涉及到sql真正的用途也就是查询,sql提供的查询语句的关键字占 sql 语言的一半之多,查询语句还是得单拿出来讲,不然太多了。 因为没有涉及到查询,所以sql的新增和修改都是很笼统的做法,drop、alter drop、delete这些很容易,逻辑性也不强,再次说明sql的真正精髓在于查询,不然为啥叫做结构化查询语言
262 0
|
1月前
|
SQL 关系型数据库 MySQL
(SQL)SQL语言中的查询语句整理
查询语句在sql中占了挺大一部分篇幅,因为在数据库中使用查询语句的次数远多于更新与删除命令。而查询语句比起其他语句要更加的复杂,可因为sql是数据库不可或缺的一部分,所以即使不懂,也必须得弄懂,以上。
199 0
|
3月前
|
SQL 人工智能 Java
用 LangChain4j+Ollama 打造 Text-to-SQL AI Agent,数据库想问就问
本文介绍了如何利用AI技术简化SQL查询操作,让不懂技术的用户也能轻松从数据库中获取信息。通过本地部署PostgreSQL数据库和Ollama模型,结合Java代码,实现将自然语言问题自动转换为SQL查询,并将结果以易懂的方式呈现。整个流程简单直观,适合初学者动手实践,同时也展示了AI在数据查询中的潜力与局限。
406 8
|
3月前
|
SQL 人工智能 Linux
SQL Server 2025 RC0 发布 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 RC0 发布 - 从本地到云端的 AI 就绪企业数据库
259 5
|
2月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。

热门文章

最新文章