数据库系统概论 数据更新、空值处理

目录

1. 数据更新

1.1 插入数据

1.1.1 插入元组

1.1.2 插入子查询结果

1.2 修改数据

1.2.1 修改某一个元组的值

1.2.2 修改多个元组的值

1.2.3 带子查询的修改语句 

1.3 删除数据

1.3.1 删除某一个元组的值

1.3.2 删除多个元组的值

1.3.3 带子查询的删除语句 

2. 空值处理

2.1 空值的产生

2.2 空值的判断

2.3 空值的约束条件

2.4 空值的算术运算、比较运算和逻辑运算


 1. 数据更新

有三种数据更新操作:

插入数据、修改数据、删除数据

1.1 插入数据

  • 两种插入数据的方法
  1. 插入元组
  2. 插入子查询结果(可以一次插入多个元组)

1.1.1 插入元组

  • 语句格式:
INSERT
INTO<表名>[(<属性列1>[,<属性列2>]...)]
VALUES(<常量1>[,<常量2>]...);

功能: 将新元组插入指定表中

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

INSERT
INTO STUDENT(SNO,SNAME,SSEX,SDEPT,SAGE)
VALUES('201215128','陈冬','男','IS',18);

--插入一条选课记录('201215128','1') 

--方法1
INSERT
INTO SC(SNO,CNO)
VALUES('201215128','1');

--方法2
INSERT
INTO SC
VALUES('201215128','1',NULL);

1.1.2 插入子查询结果

子查询嵌套在INSERT语句中以生成要插入的批量数据

  • 语句格式:
INSERT
INTO<表名>[(<属性列1>[,<属性列2>]...)]
子查询;

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

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;

SELECT子句目标列必须与INTO子句匹配  

  • 关系数据库管理系统在执行插入语句时会检查所插元组是否破坏表上已定义的完整性规则 
  1.  实体完整性
  2. 参照完整性(要先在引用外码的表中插入数据)
  3. 用户定义的完整性

1.2 修改数据

又称更新操作,一般格式为

UPDATE <表名>
SET <列名>=<表达式> [,<列名>=<表达式>] ...
[WHERE<条件>] ;

1.2.1 修改某一个元组的值

--将学生201215121的年龄改为22岁

UPDATE STUDENT
SET SAGE=22
WHERE SNO='201215121';

1.2.2 修改多个元组的值

--将所有学生的年龄增加1岁

UPDATE STUDENT SET SAGE=SAGE+1;

1.2.3 带子查询的修改语句 

 --将计算机科学系全体学生的成绩置零

UPDATE SC
SET GRADE=0
WHERE SNO IN(
    SELECT SNO
    FROM STUDENT
    WHERE SDEPT='CS');
  • 关系数据库管理系统在执行修改语句时会检查修改操作是否破坏表上已定义的完整性规则 
  1.  实体完整性
  2. 主码不允许修改
  3. 用户定义的完整性(NOT NULL约束、UNIQUE约束、值域约束)

1.3 删除数据

  • 一般格式:
DELETE
FROM<表名>
[WHERE<条件>];

功能:从指定表中删除满足WHERE子句条件的所有元组 

DEIETE语句删除的是表中的数据,而不是关于表的定义

1.3.1 删除某一个元组的值

--删除学号为201215128的学生记录

DELETE
FROM STUDENT
WHERE SNO='201215128'

1.3.2 删除多个元组的值

--删除所有的学生选课记录

DELETE
FROM SC

1.3.3 带子查询的删除语句 

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

DELETE
FROM SC
WHERE SNO IN(
    SELECT SNO
    FROM STUDENT
    WHERE SDEPT='CS');

2. 空值处理

空值就是“不知道”或“不存在”或“无意义”的值

  • 一般有以下几种情况:
  1. 该属性应该有一个值,但目前不知道它的具体值
  2. 该属性不应该有值
  3. 由于某种原因不便于填写

2.1 空值的产生

--向SC表中插入一个元组,学号是'201215126',课程号是'1',成绩为空

--方法1
INSERT
INTO SC(SNO,CNO)
VALUES('201215126','1');

--方法2
INSERT
INTO SC(SNO,CNO,GRADE)
VALUES('201215126','1',NULL);

--将表中学生号为'201215200'的学生所属的系改为空值

UPDATE STUDENT
SET SDEPT = NULL
WHERE SNO='201215200'

2.2 空值的判断

判断一个属性的值是否为空值,用 IS NULL 或 IS NOT NULL 来表示

--从STUDENT表中找出漏填了数据的学生信息

SELECT *
FROM STUDENT
WHERE SNAME IS NULL OR SSEX IS NULL OR SAGE IS NULL OR SDEPT IS NULL;

2.3 空值的约束条件

有NOT NULL 约束条件的不能取空值

码属性不能取空值

2.4 空值的算术运算、比较运算和逻辑运算

--选出选修了1号课程的不及格的学生以及缺考的学生 

SELECT SNO
FROM SC
WHERE CNO='1' AND(GRADE<60 OR GRADE IS NULL);

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
数据库系统概论(基础篇)教学大纲 数据库系统已经成为现代信息系统的核心和基础设施。数据库技术作为数据管理的最有效的手段,极大地促进了计算机应用的发展。 学习"数据库系统概论"可以帮助你更好地使用数据库,设计适合你需要的数据库应用系统,并进一步科学地管理好数据库系统。 课程概述 "数据库系统概论"是计算机科学与技术专业、软件工程专业、信息系统与信息管理等专业重要的专业基础课程。 本课程将系统讲述数据库系统的基础理论、基本技术和基本方法。本课程的知识内容和技术方法,对从事现代数据管理技术的应用、开发和研究的人员都是重要而必备的基础。 本课程内容丰富全面,分为基础篇和高级篇(2020年9月14日开课)2部分讲解,作为2门课程考核和计分。此外,本课程还开设了新技术篇(2020年9月28日开课),从数据管理和数据分析的角度讨论数据库新技术与大数据技术。 通过数据库系统概论(基础篇)的学习,学员可以系统地掌握数据库系统的基本原理,能熟练使用SQL语言在某一个数据库管理系统上进行数据库检索和操作,掌握数据库安全性和完整性的基本概念和基本方法。并能够在某一个数据库管理系统上进行实验。 通过数据库系统概论(高级篇)的学习,学员可以系统地掌握数据库规范化理论和数据库设计的方法与步骤,具有设计和开发数据库应用系统的基本能力;掌握数据库事务处理、并发控制与恢复的基本技术、初步掌握数据库查询处理和优化的概念。并能够在某一个数据库管理系统上进行实验验证。 通过数据库系统概论(新技术篇)的学习,学员可以系统地掌握传统数据库技术的最新发展,大数据管理与系统的新概念、新技术和新应用。 本课程的特点是,理论联系实际。我们不仅希望学员通过阅读和书面习题掌握本课程的内容,还要求学员完成实验项目。为此我们针对课程知识点设置了相应的实验,锻炼学员实际动手能力,启发学员对理论知识的思考和理解,达到理论联系实际的教学效果。 课程大纲 第一讲:初识数据库系统 引言 数据库的4个基本概念 数据技术的产生,数据系统的特点 第一讲课件 第二讲:数据库系统的核心:数据模型 概念模型,数据模型的组成要素 层次模型,网状模型 关系模型 第二讲课件 第三讲:数据库系统的结构 数据库系统的结构 第三讲课件 第四讲:数据库系统的组成 数据库系统的组成 第四讲课件 单元测验1 第五讲:关系数据结构及关系的完整性 关系数据结构 关系的完整性 第五讲课件 第六讲:关系代数--传统集合操作 关系代数1--传统集合操作 第六讲课件 第七讲:关系代数--关系特有操作 关系代数2--关系特有操作 第七讲课件 第八讲:关系代数--综合训练 关系代数3--综合训练 第八讲课件 第九讲:关系演算--元组关系演算 关系演算1--元组关系演算 第九讲课件 第十讲:关系演算--域关系演算语言QBE 关系演算2--域关系演算语言QBE 第十讲课件 单元测验2 第十一讲:SQL概述与数据定义 SQL概述 数据定义 第十一讲课件 第十二讲:数据查询--单查询 数据查询--单查询 数据查询--单查询2 第十二讲课件 第十三讲:数据查询--连接查询 数据查询--连接查询 第十三讲课件 第十四讲:数据查询--嵌套查询 数据查询--嵌套查询 数据查询--嵌套查询2 第十四讲课件 第十五讲:数据查询--集合查询 数据查询--集合查询 第十五讲课件 第十六讲:数据更新空值处理 数据更新 空值处理 第十六讲课件 第十七讲:视图 视图 视图2 第十七讲课件 第十八讲:数据库安全性概述 数据库安全性概述 第十八讲课件 第十九讲:数据库安全性控制 数据库安全性控制--身份鉴别、存取控制、自主存取控制、授权 数据库安全性控制--数据库角色及强制存取控制 第十九讲课件 第二十讲:视图机制 视图、审计、数据加密及其他安全性保护 第二十讲课件 单元测验3 第二十一讲:数据库的完整性 数据库完整性概述及实体完整性 参照完整性 用户定义的完整性 第二十一讲课件 第二十二讲:约束命名子句及断言 完整性约束命名子句及断言 第二十二讲课件 第二十三讲:触发器 触发器 第二十三讲课件 单元测验4 预备知识 1. 某一种计算机程序设计方法和语言 2. 数据结构 3. 离散数学 4. 操作系统 参考资料 1. 王珊,萨师煊. 《数据库系统概论(第5版)》,高等教育出版社,2014.9 2. 王珊,张俊.《数据库系统概论(第5版)习题解析与实验指导》,高等教育出版社,2015.7

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天天见error

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值