MySQL -- 表的增删查改

news2024/12/26 21:51:31

MySQL – 表的增删查改

文章目录

  • MySQL -- 表的增删查改
  • 一、Create创建
    • 1.插入数据
    • 2.插入否则更新
    • 3.替换
  • 二、Retrieve查找
    • 1.select列
      • 1.1.全列查询
      • 1.2.指定列查询
      • 1.3.查询字段为表达式
      • 1.4.为查询结果指定别名
      • 1.5.结果去重
    • 2.where条件
      • 2.1.英语不及格的同学(英语<60)
      • 2.2.语文成绩在 [80, 90] 分的同学及语文成绩
      • 2.3.数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩
      • 2.4.姓孙的同学 及 孙某同学
      • 2.5.语文成绩好于英语成绩的同学
      • 2.4.总分在 200 分以下的同学
      • 2.5.语文成绩 > 80 并且不姓孙的同学
      • 2.6.孙某同学,否则要求总成绩 > 200 并且 语文成绩 < 数学成绩 并且 英语成绩 > 80
      • 2.7.NULL 的查询
    • 3.结果排序
      • 3.1.同学及数学成绩,按数学成绩升序显示
      • 3.2.同学及 qq 号,按 qq 号排序显示
      • 3.3.查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示
      • 3.4.查询同学及总分,由高到低
      • 3.5.查询姓孙的同学或者姓曹的同学数学成绩,结果按数学成绩由高到低显示
    • 4.筛选分页结果
  • 三、Update更新
    • 1.将孙悟空同学的数学成绩变更为 80 分
    • 2.将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分
    • 3.将总成绩倒数前三的 3 位同学的数学成绩加上 30 分
    • 4.将所有同学的语文成绩都加10分
  • 四、Delete删除
    • 1.删除数据
      • 1.1.删除孙悟空的成绩
      • 2.2.删除整张表的数据
    • 2.截断表
  • 五、插入查询结果(数据备份)
  • 六、聚合函数
    • 1.统计班级共有多少同学
    • 2.统计班级收集的qq有多少
    • 3.统计本次考试的数学成绩分数个数
    • 4.统计数学成绩总分
    • 5.统计平均总分
    • 6.返回英语最高分
    • 7.返回 > 70 分以上的数学最低分
  • 七.group by子句的使用
    • 1.准备数据
    • 2.显示每个部门的平均工资和最高工资
    • 3.显示每个部门的每种岗位的平均工资和最低工资
    • 4.显示平均工资低于2000的部门和它的平均工资
    • 5.总结
  • 八、MySQL语句执行顺序
    • 1.查询语句的顺序
    • 2.group by语句的顺序


表的增删查改一共有四种操作:Create(创建), Retrieve(读取), Update(更新), Delete(删除)

一、Create创建

语法:
在这里插入图片描述

1.插入数据

先创建一个表:
在这里插入图片描述

  • 全列插入:
    如果不显式指定插入哪些字段的数据,就默认全列插入,需要输入全部字段的数据;
    在这里插入图片描述
    在这里插入图片描述
  • 指定列插入
    可以显式指定插入哪些列数据:
    在这里插入图片描述
  • 多行数据插入:
    在这里插入图片描述

2.插入否则更新

由于主键或者唯一键对应的值已经存在而导致插入失败,可以算则行的进行同步更新操作:
在这里插入图片描述

insert into 表名 () values ()
	on duplicate key
	update column = value;

在这里插入图片描述
主键冲突,则执行更新语句;

3.替换

replace into 表名 () values ();
  • 主键或者唯一键没有冲突,则直接插入;
  • 主键或者唯一键如果冲突,则删除后再插入;

在这里插入图片描述
在这里插入图片描述

二、Retrieve查找

创建成绩单表格:
在这里插入图片描述
插入数据:
在这里插入图片描述

1.select列

1.1.全列查询

select * from 表名;

在这里插入图片描述

1.2.指定列查询

select 列名1, 列名2,... from 表名; 

指定列的顺序不需要定义表格的顺序来;
在这里插入图片描述

1.3.查询字段为表达式

select 列名1(表达式), 列名2(表达式),... from 表名; 

在这里插入图片描述

1.4.为查询结果指定别名

select 列名1(表达式)[as] 别名, 列名2(表达式)[as] 别名,... from 表名; 

在这里插入图片描述

1.5.结果去重

select distinct 表达式1, 表达式2,... from 表名; 

未去重:
在这里插入图片描述
去重:
在这里插入图片描述

2.where条件

select distinct 表达式1, 表达式2,... from 表名 where 条件表达式; 

比较运算符:
在这里插入图片描述

  • 注:MySQL中的等于是用单等号表示;

逻辑运算符:
在这里插入图片描述

2.1.英语不及格的同学(英语<60)

在这里插入图片描述

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

使用and进行连接:
在这里插入图片描述
使用between…and…条件:
在这里插入图片描述

2.3.数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩

使用or进行连接:
在这里插入图片描述
使用in条件:
在这里插入图片描述

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

使用like进行模糊匹配;
% 匹配任意多个(包括 0 个)任意字符
在这里插入图片描述
– _ 匹配严格的一个任意字符
在这里插入图片描述

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

在这里插入图片描述

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

where条件中不能使用别名
在这里插入图片描述
在这里插入图片描述

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

not的使用:
在这里插入图片描述

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

综合性查询,使用括号分开各条件:
在这里插入图片描述

2.7.NULL 的查询

  • null不可以使用=查询;
  • null可以使用is null、is not null或者<=>来查询;
  • 空串与null的区别还有:空串可以使用=查询,而null不行;
    在这里插入图片描述

3.结果排序

  • asc为升序(默认);
  • desc为降序;
select 表达式 from 表名 where 条件表达式 order by 表达式[asc|desc];

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

在这里插入图片描述

3.2.同学及 qq 号,按 qq 号排序显示

在这里插入图片描述
在这里插入图片描述

  • null视为比任何值都小,因此在最上面;

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

多字段排序,排序优先级随书写顺序
在这里插入图片描述

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

  • ORDER BY 中可以使用表达式;
    在这里插入图片描述

  • ORDER BY 中可以使用别名;
    在这里插入图片描述

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

结合 WHERE 子句 和 ORDER BY 子句
在这里插入图片描述

4.筛选分页结果

语法:

  • 从 0 开始,筛选 n 条结果:
select 表达式 from 表名 [where...] [order by ...] limit n;
  • 从s开始,筛选 n 条结果:
select 表达式 from 表名 [where...] [order by ...] limit s, n;
  • 从s开始,筛选 n 条结果:
select 表达式 from 表名 [where...] [order by ...] limit n offset s;
  • 建议:对未知表进行查询时,最好加一条 LIMIT 1,避免因为表中数据过大,查询全表数据导致数据库卡死;

在这里插入图片描述

三、Update更新

update 表名 set 列名 =, ... [where ...][order by ...][limit ...];
  • 对查询到的结果进行更新,如果没有查询条件,会对该列所有数据更新;

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

在这里插入图片描述

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

在这里插入图片描述

3.将总成绩倒数前三的 3 位同学的数学成绩加上 30 分

  • 不支持math += 30这种表达式;
    在这里插入图片描述
    在这里插入图片描述

4.将所有同学的语文成绩都加10分

在这里插入图片描述

  • 更新全表的语句慎用;

四、Delete删除

delete from 表名 [where ...][order by ...][limit ...];

MySQL三大日志包括:undolog, redo log,binlog,它们分别有以下作用:
undolog:是Innodb存储引擎生成的日志,用于事务的回滚和MVCC,保证了事务的原子性;
redo log:是Innodb存储引擎生成的日志;用于崩溃后修复数据,保证了事务的持久性;
binlog:是Server层生成的白志,用于备份数据,集群等;

1.删除数据

1.1.删除孙悟空的成绩

在这里插入图片描述

2.2.删除整张表的数据

在这里插入图片描述
在这里插入图片描述
再插入一条数据,发现自增量是从4开始的,从之前的数据延续:
在这里插入图片描述
查看表结构,会有AUTO_INCREMENT=n 项:
在这里插入图片描述

2.截断表

truncate [table] 表名; 
  • 只能对整表操作,不能像 DELETE 一样针对部分数据操作;
  • 实际上 MySQL 不对数据操作,所以比 DELETE 更快,但是TRUNCATE在删除数据的时候,并不经过真正的事物,所以无法回滚;
  • 会重置 AUTO_INCREMENT 项;

在这里插入图片描述
截断表操作:
在这里插入图片描述
再插入一条数据,查看自增量,发现AUTO_INCREMENT 项已经被重置 ;
在这里插入图片描述

五、插入查询结果(数据备份)

insert into 表名 [列名, ...] select [列名, ...] from 表名 [where ...][order ...][limit ...];

删除表中的重复记录,重复的记录只能有一份:

  • 创建原数据表:
    在这里插入图片描述
  • 插入测试数据:
    在这里插入图片描述
  • 创建一张空表(结构与原表一致):
    在这里插入图片描述
  • 将原表的去重数据插入到新表中:
    在这里插入图片描述
  • 通过重命名表,实现原子的去重操作:
    在这里插入图片描述
  • 查看最终结果:
    在这里插入图片描述

六、聚合函数

在这里插入图片描述
聚合函数需要在所有的数据都筛选完成后,再做统计;

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

  • 使用 * 做统计,不受 NULL 影响
    在这里插入图片描述
  • 用表达式做统计
    在这里插入图片描述

2.统计班级收集的qq有多少

  • NULL 不会计入结果
    在这里插入图片描述

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

  • COUNT(math) 统计的是全部成绩
    在这里插入图片描述
  • COUNT(DISTINCT math)统计的是去重成绩
    在这里插入图片描述

4.统计数学成绩总分

在这里插入图片描述

  • 不及格 < 60 的总分,没有结果,返回 NULL
    在这里插入图片描述

5.统计平均总分

在这里插入图片描述

6.返回英语最高分

在这里插入图片描述

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

在这里插入图片描述

七.group by子句的使用

在select中使用group by 子句可以对指定列进行分组查询;

select column1, column2, .. from table group by column;

1.准备数据

准备oracle 9i的经典测试表
在这里插入图片描述

  • EMP员工表:
    在这里插入图片描述
  • DEPT部门表:
    在这里插入图片描述
  • SALGRADE工资等级表:
    在这里插入图片描述

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

使用group by语句按照部门进行分组统计:
在这里插入图片描述

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

在这里插入图片描述

  • 先按照部门分组,再在部门中按照岗位分组;
  • group by后面的列是分组依据,只有分组依据才能在前面显示出来,其他的列一般不可以;

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

  • 统计各个部门的平均工资:
    在这里插入图片描述

  • 使用where语句进行条件筛选:
    在这里插入图片描述
    where和聚合函数的执行顺序是有冲突的;
    因为聚合函数是要在有数据之后才能统计,而此时where中要用到聚合统计的结果来做筛选就已经冲突了;

  • having和group by配合使用,对group by结果进行过滤:
    在这里插入图片描述
    having是对聚合统计之后的数据进行筛选;

5.总结

  1. group by是通过分组这样的手段,为未来进行聚合统计提供基本的功能支持(group by一定是配合聚合统计使用的);
  2. group by后面跟的都是分组的字段依据,只有在group by后面出现的字段,未来在聚合统计的时候,在select中才能出现;
  3. where VS having:他们两个不是冲突的,是互相补充的;
    having通常是在完成整个分组聚合统计,然后再进行筛选;
    where通常是在表中数据初步被筛选的时候,要起效果的;

八、MySQL语句执行顺序

1.查询语句的顺序

在这里插入图片描述

  1. from…:从表中取数据;
  2. where …:遍历数据,找出满足条件的数据行;
  3. select …:从满足条件的数据中选择用户指定的列或表达式显示;
  4. 在拿到了用户需要的数据之后,再进行排序,调整数据顺序;
  • where语句中不能使用别名的原因:where语句在别名定义之前就已经执行了,因此并不知道别名;
  • order排序中可以使用别名:因为order语句在别名定义之后才执行;

2.group by语句的顺序

在这里插入图片描述

  1. from…:从表中取数据;
  2. group by:根据…分组;
  3. select:对分组之后的数据进行聚合统计;
  4. having:对聚合统计之后的结果进行筛选;

在这里插入图片描述

  1. from…:从表中取数据;
  2. where:对表中的数据进行初步筛选;
  3. group by:对初筛后的结果根据…分组;
  4. select:对分组之后的数据进行聚合统计;
  5. having:对聚合统计之后的结果进行进一步的筛选;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1152925.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

视频内容不错为什么数据不好?批量制作优质视频的软件推荐

很多时候&#xff0c;在别人账号上爆了的内容&#xff0c;我们做了复刻发布后&#xff0c;却依旧没有很好的流量。一般来说&#xff0c;造成这个问题的原因很可能是没有做好运营或者SEO优化。 下面让我们来具体看看 1、没有做好运营 账号与流量是需要运营的&#xff0c;即便…

Pytorch 文本情感分类案例

一共六个脚本,分别是: ①generateDictionary.py用于生成词典 ②datasets.py定义了数据集加载的方法 ③models.py定义了网络模型 ④configs.py配置一些参数 ⑤run_train.py训练模型 ⑥run_test.py测试模型 数据集https://download.csdn.net/download/Victor_Li_/88486959?spm1…

可视化文件编辑与SSH传输神器WinSCP如何公网远程访问本地服务器

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 可视化文件编辑与SSH传输神器WinSCP如何公网远程本地服务器 文章目录 可视化文件编辑与SSH传输神…

如何在 Photoshop 中使用污点修复画笔

学习污点修复画笔工具的基础知识&#xff0c;以及如何使用它来修复、平滑和删除图像中不需要的部分 1.如何在 Photoshop 中使用污点修复画笔 步骤1 在 Photoshop 中使用污点修复画笔的方法有很多。今天&#xff0c;让我们用它来去除这只手臂上的一些较小的纹身。 步骤2 在我…

在科技展厅设计中,如何通过空间规划来突出展品和主题?

数字多媒体技术在各行业内的广泛应用&#xff0c;使内容展览展示技术得到了更新&#xff0c;尤其是在科技展厅设计中&#xff0c;更是将各类多媒体互动装置的优势发挥到了极致&#xff0c;为观众提供现代化的感官体验&#xff0c;而这其中有效的空间规划对于现代化科技展厅的效…

【开发日记】必须记录一下困扰我两天的问题 MyBatisPlus适配达梦insert时提示:无效的列

【需求】 项目ORM框架使用的是MyBatisPlus&#xff0c;数据库原来使用的是MySQL&#xff0c;现在需要适配达梦。 【问题】 项目ORM框架使用的是MyBatisPlus&#xff0c;数据库原来使用的是MySQL&#xff0c;现在需要适配达梦数据库。 在适配过程中查询、更新、删除都没有问题…

LeetCode刷题---找出字符串中第一个匹配项的下标(Java实现KMP算法)

朴素算法 朴素算法是用来解决字符串匹配的问题的&#xff0c;现有主串aaaab和子串aab,如果使用朴素算法解决该问题&#xff0c;它首先会将主串的第一个字符和子串的第一个字符进行比较&#xff0c;如果主串和子串第一个字符相同&#xff0c;则比较第二个字符&#xff0c;依次往…

基于springboot鞋包商城-计算机毕设 附源码 28653

springboot鞋包商城 摘 要 鞋包商城采用B/S结构、java开发语言、以及Mysql数据库等技术。系统主要分为管理员和用户及卖家三部分&#xff0c;管理员管理主要功能包括&#xff1a;首页、网站管理&#xff08;轮播图、网站公告&#xff09;、人员管理&#xff08;管理员、卖家、…

KT6368A蓝牙芯片的4脚也就是蓝牙天线脚对地短路了呢?是不是坏了

一、问题简介 KT6368A芯片的4脚&#xff0c;也就是蓝牙天线脚&#xff0c;万用表测量对地短路了呢&#xff1f;是不是芯片坏掉了&#xff0c;能不能重新寄样品给我。 详细说明 首先&#xff0c;芯片没有坏&#xff0c;遇到自己不懂的地方&#xff0c;不要轻易的去怀疑。 而是…

ZKP7.3 Linear-time encodable code based on expanders

ZKP学习笔记 ZK-Learning MOOC课程笔记 Lecture 7: Polynomial Commitments Based on Error-correcting Codes (Yupeng Zhang) 7.3 Linear-time encodable code based on expanders SNARKs with linear prover time Linear-time encodable code [Spielman’96][Druk-Ishai…

会议邀请 | 思腾合力邀您共赴第二十一届中国电博会与元宇宙产业论坛

由国务院台湾事务办公室、江苏省人民政府主办的「第二十一届中国&#xff08;苏州&#xff09;电子信息博览会」将于2023年11月9日-11日在苏州国际博览中心举办。思腾合力作为行业领先的人工智能基础架构解决方案商&#xff0c;受邀参加本次盛会。思腾合力市场总监徐莉受邀出席…

构造最小堆、最小堆排序

堆是一种特殊的完全二叉树 堆具有以下方法 关键点&#xff1a; 插入&#xff1a;在 store 末端插入新元素&#xff0c;然后把新元素上浮。弹出&#xff1a;将 store 顶端&#xff08;索引为0处&#xff09;弹出&#xff0c;作为最小元素&#xff1b;把末端元素放到索引0处&a…

动态表单生成Demo(Vue+elment)

摘要&#xff1a;本文将介绍如何使用vue和elment ui组件库实现一个简单的动态表单生成的Demo。主要涉及两个.vue文件的书写&#xff0c;一个是动态表单生成的组件文件&#xff0c;一个是使用该动态表单生成的组件。 1.动态表单生成组件 这里仅集成了输入框、选择框、日期框三种…

WebAssembly完全入门——了解wasm的前世今身

前言 接触WebAssembly之后&#xff0c;在google上看了很多资料。感觉对WebAssembly的使用、介绍、意义都说的比较模糊和笼统。感觉看了之后收获没有达到预期&#xff0c;要么是文章中的例子自己去实操不能成功&#xff0c;要么就是不知所云、一脸蒙蔽。本着业务催生技术的态度&…

Linux 环境下 安装 Elasticsearch 7.13.2

Linux 环境下 安装 Elasticsearch 7.13.2 前言镜像下载&#xff08;国内镜像地址&#xff09;解压安装包修改配置文件用 Es 自带Jdk 运行配置 Es 可被远程访问然后启动接着启动本地测试一下能不能连 Es 前言 借公司的 centos 7 服务器&#xff0c;搭建一个 Es&#xff0c;正好熟…

8.3 矢量图层点要素单一符号使用五

文章目录 前言单一符号&#xff08;Single symbol&#xff09;渲染几何生成器&#xff08;Geometry generator&#xff09;QGis代码实现 总结 前言 上一篇教程介绍了矢量图层点要素单一符号中填充标记的用法本章继续介绍单一符号中各种标记的用法说明&#xff1a;文章中的示例…

AR的光学原理?

AR智能眼镜的光学成像系统 AR眼镜的光学成像系统由微型显示屏和光学镜片组成&#xff0c;可以将其理解为智能手机的屏幕。 增强现实&#xff0c;从本质上说&#xff0c;是将设备生成的影像与现实世界进行叠加融合。这种技术基本就是通过光学镜片组件对微型显示屏幕发出的光线…

java项目之中学校园网站(ssm框架)

项目简介 中学校园网站实现了以下功能&#xff1a; 管理员&#xff1a;个人中心、教师管理、学生管理、校园概况管理、名师风采管理、校园公告管理、试卷管理、试题管理、校园论坛、系统管理、考试管理。教师&#xff1a;个人中心、校园概况管理、名师风采管理、校园公告管理…

PM866 3BSE050200R1 L003748-AR 3BSX108237R300

PM866 3BSE050200R1 L003748-AR 3BSX108237R300 工业自动化制造商和工业物联网工具开发商Opto 22宣布推出新版groov&#xff0c;将IIoT technologies MQTT和OPC-UA驱动程序直接嵌入其工业边缘设备。新版本添加到用于web和移动可视化的groov View软件以及开源的Node-RED开发环境…

第三方支付预付卡业务详解

第三方支付预付卡业务详解 第三方支付预付卡业务是指由第三方支付公司提供的一种预先充值后消费的支付方式。用户可以在第三方支付平台上购买预付卡&#xff0c;然后在指定的商户或者服务提供商那里进行消费。 运作模式&#xff1a; 1. 用户在第三方支付平台购买预付卡&#xf…