当前位置: 首页 > news >正文

数据库原理及应用_数据库基础_第2章关系数据库标准语言SQL_数据的维护

前言

        "<数据库原理及应用>(MySQL版)".以下称为"本书"中2.4节内容

引入

        本书P60给出数据维护的概念:数据维护是指用INSERT,DELETE,UPDATE语句来插入,删除,更新数据库中记录行的数据,由DML语言实现,他们是数据库的主要功能之一.

一点推导

        假设数据库是有界面的,那么数据的增,删,改首先想到的是直接在界面上操作.所以这部分内容学习重点在于不容易直接在界面操作的部分.因此批量操作是数据维护的重点.

2.4.1插入数据

基本用法

        基本语法:

        INSERT INTO 表名 [列名1],[列名2]...[列名n]

                VALUES (值1,值2...);

        举例:

                建立新表dept_c,是dept的副本

CREATE TABLE dept_c
SELECT * FROM dept;

                插入数据

INSERT INTO dept_c(deptno,dname,loc)
VALUES(50,'PERSONNEL','HONGKONG');

        运行结果:

如前所述,基本用法不存在批量操作(一条条输入不算),所以不是关注的重点.原因是基本用法可以在数据库界面中一条条输入,为了简化学习,基本用法做了解即可.

批量插入数据

利用子查询向表中插入数据

        应用场景:将一张表A(原始表)的部分行(元组)添加到另一个表B(必须已存在)中.

        语法格式(注意本书P61表述有误):                

                INSERT INTO 表名B 

                SELECT * FROM 原始表A
                        WHERE 条件表达式
;

举例

1>不能用的语句,不能在此新建表(dept_d),否则报错

/*以下语句报错*/
INSERT INTO dept_d
SELECT * FROM dept
WHERE deptno=10 OR deptno=20 OR deptno=40;

2>本书例2-43

          先截断表dept_c;

truncate table dept_c;

         注意:在navicat premium lite中,要刷新才看得见效果

        输入插入语句

INSERT INTO dept_c
SELECT * FROM dept
WHERE deptno=10 OR deptno=20 OR deptno=40;

        运行结果(同样需要刷新)

综合来看,利用子查询向表中插入数据,需要两个步骤

        1.建立新表(此时无内容),用CREATE TABLE 新表名 SELECT 语句;

        2.子查询将原始表中的部分行插入新表中.

2.4.2更新数据

基本用法

        基本语法:   

                UPDATE 表名

                SET [列名1=值1], [列名2=值2]   ....

                WHERE 条件表达式

        举例---在本书P62例2-44的基础上加了一条更新dname

UPDATE dept_c
SET loc='CHINA',dname='ACCOUNT'
WHERE deptno=10;

        运行结果,此时deptno=10对应的dname内容也已改变

更新数据的作用很直观,修改某一个元组的一个或多个属性值.

说明:和前面一样,基本用法不存在批量修改的情况,所以也不是关注的重点.

批量更新

        格式:

                UPDATE 表名

                SET [列名1=值1], [列名2=值2]   ....

        ---和基本语法比起来,只需把WHERE去掉即可.

        含义:将全部行(元组)中某属性值改为一个值

        举例:见本书P62例2-45

利用子查询修改记录

        格式:

                UPDATE 表名
                SET 列名= SELECT 语句
                [WHERE 条件表达式]
;

        含义:更新某个属性的值,其值等于SELECT语句计算的单值.

        注意:WHERE条件表达式为可选

                如果有WHERE则表示修改某行的某个属性值,没有则表示所有行的某个属性值被修改

        举例:见本书P62例2-46

2.4.3删除数据

基本用法

        格式:

        DELETE FROM 表名

        [WHERE 条件表达式];

        说明:

        1>DELETE是以行(元组)为单位删除数据,而不是删除某个属性值,给他赋值NULL

        2>WHERE表达式为可选,如果使用则表示删除具体行;如果不用则表示删除表内所有元组,等同于TRUNCATE TABLE 表名,即截断表.

利用子查询删除(批量删除)

        格式:

        DELETE FROM 表名

        WHERE 列(属性)名=(SELECT 语句);

        含义:删除以下行---行的某个属性值等于SELECT语句计算的单值.

        举例:本书P63例2-49

SELECT查询结果的总结

        SELECT语句查询的结果有表,单值和多值.其中单值和多值的概念见上一篇关于子查询的帖数据库原理及应用_数据库基础_第2章关系数据库标准语言SQL_数据查询(4)子查询-CSDN博客

        表:查询出结果为表,就是二维数据

        单值:查询结果为单值,有两种情况:

                1>组成条件表达式(用在WHERE后),形成新的查询条件.

                2>赋值给属性,即"属性=单值",类似于"变量=常量".属性相当于"变量",单值相当于"常量".

                        例如在更新数据的子查询修改数据时,就是这样写的.

        多值:查询结果为多值时,加上IN,ALL,ANY运算符,组成条件表达式用作查询条件.

                例如子查询中会用到.

小结

        表中元组数据增,删,改操作---数据维护的理解和应用,重点放在批量数据操作上.

http://www.dtcms.com/a/348038.html

相关文章:

  • Adobe CS6所有系列绿色免安装版,Photoshop 6 Adobe Illustrator CS6 等绿色版
  • Spring创建的方式
  • 使用 Frida 运行时检测 Android 应用的真实权限状态 (App Ops)
  • 第4章栈和队列:顺序队——基本结构
  • Java 基础学习总结(211)—— Apache Commons ValidationUtils:让参数校验从 “体力活“ 变 “优雅事“
  • Vue状态管理工具pinia的使用以及Vue组件通讯
  • 一个byte表示多个bool属性的功能
  • 高并发AI服务部署方案:vLLM、TGI、FastChat性能压测报告
  • CSS 进阶用法
  • Read View是实现MVCC的三大前提之一,那么它是在什么时候建立的
  • frida安装配置及其使用方法
  • 一个奇怪的问题-Python会替代Java吗?技术语言之争的真相-优雅草卓伊凡
  • Java 大视界 -- Java 大数据在智能交通智能公交系统中的乘客流量预测与车辆调度优化
  • 程序里的依赖和中间件的依赖冲突,怎么解决
  • Docling:一个基于AI驱动的免费文档解析工具
  • Python性能优化实战(二):让循环跑得比博尔特还快
  • [身份验证脚手架] 应用布局如何构建
  • 初学python的我开始Leetcode题-16
  • CTFshow系列——命令执行web49-52
  • assert使用方法
  • Redis 高可用开发指南
  • 力扣594:最和谐子序列
  • 客流特征识别误报率↓76%!陌讯多模态时序融合算法在智慧零售的实战解析
  • Tesla智能座舱域控制器(MCU)的系统化梳理
  • 【网络运维】Shell 脚本编程:if 条件语句
  • 【40页PPT】数字工厂一体化运营管控平台解决方案(附下载方式)
  • Spark04-MLib library01-机器学习的介绍
  • SNMP 协议的总结
  • 每日算法题【链表】:相交链表、环形链表、环形链表II
  • 鸿蒙分布式计算实战:用 ArkTS+Worker 池落地可运行任务管理 Demo,从单设备到跨设备全方案