news 2026/4/24 7:48:00

数据库----表内容的增删查改

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数据库----表内容的增删查改

这里写目录标题

  • <font color="FF00FF">1. Create
    • <font color="FF00FF"> 1. 单行数据全列插入
    • <font color="FF00FF"> 2. 多行数据 + 指定列插入
    • <font color="FF00FF">3. 插入否则更新
    • <font color="FF00FF">4. replace
    • <font color="FF00FF">5. Retrieve
      • <font color="FF00FF">1. select
        • <font color="FF00FF">1. 全列查询
        • <font color="FF00FF">2. 指定列查询
        • <font color="FF00FF">3. 查询字段为表达式
        • <font color="FF00FF">4. where 条件
    • <font color="FF00FF">3. 结果排序
    • <font color="FF00FF">4. 筛选分页结果
    • <font color="FF00FF">5. update
    • <font color="FF00FF">6. Delete
    • <font color="FF00FF">7. 截断表
    • <font color="FF00FF">8. 插入查询结果
    • <font color="FF00FF">9. 聚合函数
    • <font color="FF00FF">10. group by子句的使用
  • <font color="FF00"> where vs having

1. Create

1. 单行数据全列插入

这里的y1(id,name)可以不写,默认就是全列插入

2. 多行数据 + 指定列插入

3. 插入否则更新

1. 由于 主键 或者 唯一键 对应的值已经存在而导致插入失败



1. 0 row affected: 表中有冲突数据,但冲突数据的值和 update 的值相等
2. 1 row affected: 表中没有冲突数据,数据被插入
3. 2 rows affected: 表中有冲突数据,并且数据已经被更新

这个数据被插入,不用写后面的on duplicate key update 那些东西,因为没冲突就直接插入了

select row_count()可以看到表被影响的行数

4. replace

1. 主键 或者 唯一键 没有冲突,则直接插入;
2. 主键 或者 唯一键 如果冲突,则删除后再插入

1. row affected: 表中没有冲突数据,数据被插入
2. rows affected: 表中有冲突数据,删除后重新插入

5. Retrieve

1. select

1. 全列查询

2. 指定列查询

3. 查询字段为表达式

1. 表达式不包含字段

2. 表达式包含一个字段

3. 表达式包含多个字段

4. 为查询结果指定别名

这里的as可以省略

5. 结果去重

4. where 条件

比较运算符:

逻辑运算符:

1. 英语不及格的同学:英语成绩 ( < 60 )

2. 语文成绩在 [80, 90] 分的同学及语文成绩


3. 数学成绩是 73 或者 78 或者 98 或者 99 分的同学及数学成绩


4. 姓孙的同学 及 孙某同学

1. 姓孙的同学

2. 孙某同学和孙xx同学

5. 语文成绩好于英语成绩的同学

6. 总分在 200 分以下的同学


这里的total不能直接用where查,因为先执行from,然后再where,最后select,所以不认识total,但是可以在select那里重命名

7. 语文成绩 > 80 并且不姓孙的同学

8. 孙某同学,否则要求总成绩 > 200 并且 语文成绩 < 数学成绩 并且 英语成绩 > 80

9. NULL 的查询

null不能用=比较,可以用<=>和 is null,is not null

3. 结果排序

ASC 为升序(从小到大)
– DESC 为降序(从大到小)
– 默认为 ASC

没有 ORDER BY 子句的查询,返回的顺序是随机的

1. 同学及数学成绩,按数学成绩升序显示


2. null排序

null比任何值都要小,排在最下面,即便是‘’,也比null大

2. 查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示

如果数学成绩全相等,才能轮到英语升序,英语成绩全相等,才能轮到语文升序,否则就只能实现数学降序了

3. 查询同学及总分,由高到低

这里可以使用total,因为先from,在select,最后排序,先有数据再排序,否则先排序了,再查数据,效率低,因为会对指定的数据排序,不是全部排序后,再去找指定的数据

查询姓孙的同学或者姓曹的同学数学成绩,结果按数学成绩由高到低显示

这里加了where,from是1,where是2,select 是3,order by是4,如果有limit是5

需要有数据才能排序,只有数据准备好了,才能显示,limit的本质功能是显示

4. 筛选分页结果

起始下标为0--从 s 开始,筛选 n 条结果 SELECT...FROM table_name[WHERE...][ORDER BY...]LIMIT s,n;--0开始,筛选 n 条结果 SELECT...FROM table_name[WHERE...][ORDER BY...]LIMIT n;--从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用 SELECT...FROM table_name[WHERE...][ORDER BY...]LIMIT n OFFSET s;

对未知表进行查询时,最好加一条 LIMIT 1,避免因为表中数据过大,查询全表数据导致数据库卡死,从0号下标开始,连续读取1行

从指定下标开始,连续获取多少条记录

按 id 进行分页,每页 3 条记录,分别显示 第 1、2、3 页

5. update

1. 将孙悟空同学的数学成绩变更为 80 分

将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分

将总成绩倒数前三的 3 位同学的数学成绩减去 30 分


将所有同学的语文成绩更新为原来的 2 倍
更新全表的语句慎用!

6. Delete

删除孙悟空同学的考试成绩


删除整张表数据
注意:删除整表操作要慎用


7. 截断表



但是在centos7这个截断的计数器是清空的,就是下图的default

1. 只能对整表操作,不能像 DELETE 一样针对部分数据操作;

2. 实际上 MySQL 不对数据操作,所以比 DELETE 更快,但是TRUNCATE在删除数据的时候,
并不经过真正的事物,所以无法回滚

3. 会重置 AUTO_INCREMENT 项

相当于delete的历史SQL语句会被bin.log的磁盘文件储存起来,这叫主从同步,bin log默认是被关闭的,回源时,直接把磁盘文件加载到内存,把SQL语句全部执行一遍,就恢复了

8. 插入查询结果

INSERT INTO table_name[(column[,column...])]SELECT

我们要把一个表去重


这个是查询时把表去重,我们要的是改变原表

1. 创建一张空表 no_duplicate_table,结构和 duplicate_table 一样


2. 将 duplicate_table 的去重数据插入到 no_duplicate_table

3. 通过重命名表,实现原子的去重操作


为什么用rename呢?

因为rename是原子的,如果要上传文件到linux,假如数据很大,所以上传很慢,想把这个文件上传到linux的一个特定目录下,就是写入数据,它一定不是原子的,所以一般把这个文件上传到临时目录下,等全部上传成功后,直接mv到特定的目录,rename是同样的原理,只是改文件名,就是把文件系统的inode和目录的映射关系改了,就是把inode改成和这个临时目录进行映射

用rename就是单纯的想等一切都就绪了,然后统一放入,更新,生效等

9. 聚合函数

1. 统计班级共有多少同学

count(*) 和count(1) 忽略了对null的影响

2. 统计本次考试数学成绩分数个数

3. 统计的是去重数学成绩的数量

4. 统计数学成绩总分

5. 英语成绩>=80分,的总成绩

6. 统计平均分

7. 返回英语最高分

8. 返回 > 70 分以上的数学最低分

10. group by子句的使用

建一个雇员信息表(来自oracle 9i的经典测试表)
EMP员工表
DEPT部门表
SALGRADE工资等级表

1. 显示每个部门员工的平均工资和最高工资

2. 显示每个部门的每种岗位的平均工资和最低工资

显示平均工资低于2000的部门和它的平均工资

统计各个部门的平均工资

显示除了smith以外,显示平均工资低于2000的部门和岗位和它的平均工资

SQL查询中各个关键字的执行先后顺序 :
from > on > join > where > group by > with > having > select > distinct > order by > limit

分组的目的是为了进行分组之后,方便进行聚合统计

分组:group by deptno,指定列名,实际分组,是用该列的不同行数据来进行分组的

分组的条件deptno,组内一定是相同的,可以被聚合压缩

分组 (分表):就是把一张表按照条件在逻辑上拆分了多个子表,然后分别对各自的子表进行聚合统计


这条SQL语句的执行顺序:

1. from emp

2. where ename!=‘SMITH’

3. group by deptno,job

4. avg(sal)

5. having 平均工资<2000

6. select deptno,job

1. 先分组再聚合
2. having是对聚合之后的结果进行条件筛选

where vs having

执行顺序的不同

1. where:对具体任意列进行条件筛选
2. having:对聚合之后的结果进行条件筛选

不是只有磁盘上的表结构导入到mysql,真实存在的表才叫表

中间筛选出来的,包括最终结果,都是逻辑上的表,MYSQL一切皆表

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 7:47:03

DownKyi终极指南:5步掌握B站视频下载与处理全流程

DownKyi终极指南&#xff1a;5步掌握B站视频下载与处理全流程 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#xff0…

作者头像 李华
网站建设 2026/4/24 7:41:36

2026拉勾网JA4+指纹反爬机制突破:10万条岗位数据分析实战

前言 又到了金三银四跳槽季,网上铺天盖地的薪资报告看得人眼花缭乱:有人说AI工程师年薪百万起步,有人说后端开发已经卷到35岁失业,到底哪个是真的? 作为一个写了10年代码的老程序员,我从来不信第三方的行业报告——数据只有自己爬的才最真实。于是我花了整整一周时间,…

作者头像 李华
网站建设 2026/4/24 7:41:20

人形机器人模仿学习

在具身智能和智能制造的语境下&#xff0c;模仿学习&#xff08;Imitation Learning, IL&#xff09;是让人形机器人从“特定程序控制”跨越到“泛化任务处理”的关键技术。它解决了离散制造中大量非标工序难以通过手写代码实现的痛点。以下是人形机器人模仿学习的核心逻辑、主…

作者头像 李华
网站建设 2026/4/24 7:41:18

TVA时代企业IT工程师的转型之路(八)

前沿技术背景介绍&#xff1a;AI 智能体视觉检测系统&#xff08;Transformer-based Vision Agent&#xff0c;缩写&#xff1a;TVA&#xff09;&#xff0c;是依托 Transformer 架构与“因式智能体”范式所构建的高精度智能体。它区别于传统机器视觉与早期 AI 视觉&#xff0c…

作者头像 李华
网站建设 2026/4/24 7:40:20

时间复杂度讲解

一、基础概念数据结构是计算机存储、组织数据的方式&#xff0c;指相互之间存在一种或多种特定关系的数据元素的集合。而算法是定义良好的计算过程&#xff0c;简单来说就是将输入转化为输出的一系列计算步骤。我们用复杂度来衡量算法的优劣。复杂度分为时间复杂度&#xff08;…

作者头像 李华
网站建设 2026/4/24 7:38:19

合约编译失败却找不到原因?C++26合约诊断工具链首曝:`contract-linter` + `clang-contract-trace` 双引擎精准定位隐式合约传播瓶颈

第一章&#xff1a;C26合约编程实战教程成本控制策略C26 引入的合约&#xff08;Contracts&#xff09;机制并非仅用于运行时断言验证&#xff0c;其核心价值在于编译期契约建模与可配置的开销裁剪能力——这为构建高可靠性、低延迟系统提供了精细化的成本控制路径。开发者可通…

作者头像 李华