数据库系统概论 ---- 第三章 -- 关系数据库标准语言SQL(3.5-3.7)(一)

简介: 数据库系统概论 ---- 第三章 -- 关系数据库标准语言SQL(3.5-3.7)

使用的数据库为MySQL

3.5 数据更新

数据更新的操作有三种:

  • 插入
  • 修改
  • 删除

3.5.1 插入数据

SQL的数据插入语句INSERT有两种形式:

  • 插入一个元组
  • 插入子查询结果(一次插入多个元组)

1. 插入元组

插入元组的INSERT语句的格式:

INSERT INTO 表名 [ 属性列1[, 属性列2]... ]
VALUES ( 常量1[, 常量2]... )
    [, ( 常量1[, 常量2]... )];
  • 其功能是将新元组插入指定表中。
  • 其中新元组的属性列1的值为常量1,属性列2的值为常量2,…。

INTO子句中没有出现的属性列,新元组在这些列上将取空值。但必须注意的是,在表定义时说明了NOT NULL的属性列不能取空值,否则会出错

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

例:将一个新学生元组(学号:201215128,姓名:陈冬,性别:男,所在系:IS,年龄:18岁)插入到 Student表中。

INSERT INTO Student(Sno, Sname, Ssex, Sage, Sdept)
VALUES ('201215128', '陈东', '男', 18, 'IS');
SELECT * FROM Student;

在 INTO子句中指出了表名Student,并指出了新增加的元组在哪些属性上要赋值属性的顺序可以与CREATE TABLE中的顺序不一样

VALUES子句对新元组的各属性赋值,字符串常数要用单引号(英文符号)括起来

注意:

- VALUES字句提供的值必须与INTO字句相匹配

- 值的个数要与INTO字句相同

- 值的类型要与INTO中对应的属性列相同

2. 插入子查询的结果

子查询不仅可以嵌套在SELECT语句中用以构造父查询的条件,也可以嵌套在 INSERT 语句中用以生成要插入的批量数据

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

INSERT INTO 表名 [ 属性列1[, 属性列2]... ]
子查询;

注意,子查询的目标列必须与INTO字句相匹配( 值的个数,值的类型 )

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

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

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;
SELECT * FROM Dept_age;

3.5.2 修改数据

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

UPDATE 表名
SET 列名 = 表达式 [,列名 = 表达式] ...
[WHERE 条件];
  • 其功能是修改指定表中满足WHERE子句条件的元组。
  • 其中 SET子句给出 表达式 的值用于取代相应的属性列值。
  • 如果省略WHERE子句,则表示要修改表中的所有元组

1. 修改某一个元组的值

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

UPDATE Student
SET Sage = 22
WHERE Sno = '201215121';
SELECT Sno, Sage
FROM Student
WHERE Sno = '201215121';

2. 修改多个元组的值

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

UPDATE Student
SET Sage = Sage+1;
SELECT Sno, Sage
FROM Student;

3. 带子查询的修改语句

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

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

UPDATE SC
SET Grade = 0
WHERE Sno IN (
    SELECT Sno
    FROM Student
    WHERE Sdept = 'CS'
    );
SELECT SC.Sno, Sdept, Grade
FROM SC,Student
WHERE SC.Sno = Student.Sno;

3.5.3 删除数据

删除语句的一般格式为:

DELETE FROM 表名
[WHERE 条件];
  • DELETE语句的功能是从指定表中删除满足WHERE子句条件的所有元组
  • 如果省略WHERE子句则表示删除表中全部元组,但表的定义仍在字典中。
  • DELETE语句删除的是表中的数据,而不是关于表的定义。

1. 删除某一个元组的值

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

DELETE FROM Student
WHERE Sno = '201215128';
SELECT * FROM Student;

2. 删除多个元组的值

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

DELETE FROM SC;
SELECT * FROM SC;

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

相关实践学习
体验RDS通用云盘核心能力
本次实验任务是创建一个云数据库RDS MySQL(通用云盘),并通过云服务器ECS对RDS MySQL实例进行压测,体验IO加速和IO突发带来的性能提升;并通过DMS执行DDL,将数据归档到OSS,再结合云盘缩容,体验数据归档带来的成本优势。
相关文章
|
1天前
|
关系型数据库 OLAP 分布式数据库
瑶池数据库微课堂|PolarDB/RDS+ADB Zero-ETL:一种免费、易用、高效的数据同步方式
瑶池数据库微课堂介绍阿里云PolarDB/RDS与ADB的Zero-ETL功能,实现免费、易用、高效的数据同步。内容涵盖OLTP与OLAP的区别、传统ETL存在的问题及Zero-ETL的优势(零成本、高效同步),并演示了从RDS MySQL到AnalyticDB MySQL的具体操作步骤。未来将优化和迭代此功能,提供更好的用户体验。
|
9天前
|
运维 关系型数据库 MySQL
体验领礼啦!体验自建数据库迁移到阿里云数据库RDS,领取桌面置物架!
「技术解决方案【Cloud Up 挑战赛】」上线!本方案介绍如何将自建数据库平滑迁移至云数据库RDS,解决业务增长带来的运维难题。通过使用RDS MySQL,您可获得稳定、可靠和安全的企业级数据库服务,专注于核心业务发展。完成任务即可领取桌面置物架,每个工作日限量50个,先到先得。
|
27天前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
66 11
|
27天前
|
运维 关系型数据库 MySQL
自建数据库迁移到云数据库RDS
本次课程由阿里云数据库团队的凡珂分享,主题为自建数据库迁移至云数据库RDS MySQL版。课程分为四部分:1) 传统数据库部署方案及痛点;2) 选择云数据库RDS MySQL的原因;3) 数据库迁移方案和产品选型;4) 线上活动与权益。通过对比自建数据库的局限性,介绍了RDS MySQL在可靠性、安全性、性价比等方面的优势,并详细讲解了使用DTS(数据传输服务)进行平滑迁移的步骤。此外,还提供了多种优惠活动信息,帮助用户降低成本并享受云数据库带来的便利。
|
2月前
|
SQL 缓存 监控
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
本文详细解析了数据库、缓存、异步处理和Web性能优化四大策略,系统性能优化必知必备,大厂面试高频。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
|
1月前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
1月前
|
SQL 监控 安全
SQL Servers审核提高数据库安全性
SQL Server审核是一种追踪和审查SQL Server上所有活动的机制,旨在检测潜在威胁和漏洞,监控服务器设置的更改。审核日志记录安全问题和数据泄露的详细信息,帮助管理员追踪数据库中的特定活动,确保数据安全和合规性。SQL Server审核分为服务器级和数据库级,涵盖登录、配置变更和数据操作等事件。审核工具如EventLog Analyzer提供实时监控和即时告警,帮助快速响应安全事件。
|
2月前
|
SQL 关系型数据库 MySQL
体验使用DAS实现数据库SQL优化,完成任务可得羊羔绒加厚坐垫!
本实验介绍如何通过数据库自治服务DAS对RDS MySQL高可用实例进行SQL优化,包含购买RDS实例并创建数据库、数据导入、生成并优化慢SQL、执行优化后的SQL语句等实验步骤。完成任务,即可领取羊羔绒加厚坐垫,限量500个,先到先得。
204 12
|
2月前
|
SQL 存储 BI
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
|
2月前
|
SQL 数据库
gbase 8a 数据库 SQL优化案例-关联顺序优化
gbase 8a 数据库 SQL优化案例-关联顺序优化