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

MySQL之CRUD(下)

承接上文,我们此文对MySQL中的剩余操作进行介绍

1. Update修改

1.1 语法

对符合条件的结果进⾏列值更新

UPDATE [LOW_PRIORITY] [IGNORE] table_referenceSET assignment [, assignment] ...[WHERE where_condition][ORDER BY ...][LIMIT row_count]

1.2 示例

1.2.1 将吕布的数学成绩改为99分

在这里插入图片描述

将貂蝉的语文成绩改成88,数学77

在这里插入图片描述

将总成绩倒数前三的3位同学的数学成绩减上10分

在这里插入图片描述

注意:
以原值的基础上做变更时,不能使⽤math-=10这样的语法
不加where条件时,会导致全表数据被列新,谨慎操作

2. Deleate删除

2.1 语法

 DELETE FROM tbl_name [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]

2.2 示例

删除曹阿满的考试成绩

2.2 示例

删除整张表的数据

在这里插入图片描述

2.3 注意

执⾏Delete时不加条件会删除整张表的数据,谨慎操作

3. 截断表

3.1 语法

 TRUNCATE [TABLE] tbl_name

3.2 示例

  1. 准备测试表
CREATE TABLE t_truncate (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20));
  1. 插入测试数据
INSERT INTO t_truncate (name) VALUES ('A'), ('B'), ('C');
  1. 查看测试表
 select * from t_truncate;

在这里插入图片描述

  1. 查看建表结构,AUTO_INCREMENT=4

在这里插入图片描述

  1. 截断表,注意受影响的⾏数是0

在这里插入图片描述

  1. 再次查看表结构,AUTO_INCREMENT=2

在这里插入图片描述

3.3 Truncate注意事项

  • 只能对整表操作,不能像DELETE⼀样针对部分数据
  • 不对数据操作所以⽐DELETE更快,TRUNCATE在删除数据的时候,不经过真正的事务,所以⽆法回滚
  • 会重置AUTO_INCREMENT项(即自增主键会被重置)

4. 插入查询结果

4.1 语法

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

5. 聚合函数

5.1 常用函数

函数说明
COUNT([DISTINCT]expr)返回查询到的数据的数量
SUM([DISTINCT]expr)返回查询到的数据的总和,不是数字没有意义
AVG([DISTINCT] expr)返回查询到的数据的平均值,不是数字没有意义
MAX([DISTINCT] expr)返回查询到的数据的最⼤值,不是数字没有意义
MIN([DISTINCT] expr)返回查询到的数据的最⼩值,不是数字没有意义

5.2 示例

5.2.1 COUTN

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

5.2.2 SUM

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

5.2.3 AVG

在这里插入图片描述

在这里插入图片描述

5.2.4 MAX MIN

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

6. Groupby分组查询

GROUPBY⼦句的作⽤是通过⼀定的规则将⼀个数据集划分成若⼲个⼩的分组,然后针对若⼲个分组进⾏数据处理,⽐如使⽤聚合函数对分组进⾏统计。

6.1 语法

 SELECT {col_name |expr} ,... ,aggregate_function (aggregate_expr)FROM table_referencesGROUP BY {col_name|expr},...[HAVING]where_condition]
  • col_name|expr:要查询的列或表达式,可以有多个,必须在GROUP BY ⼦句中作为分组的依据
  • aggregate_function:聚合函数,⽐如COUNT(),SUM(),AVG(),MAX(),MIN()
  • aggregate_expr:聚合函数传⼊的列或表达式,如果列或表达式不在GOURP BY ⼦句中,必须包含中聚合函数中

6.2 示例

  1. 创建一个示例表
 create table emp (id bigint primary key auto_increment,name varchar(20) not null,role varchar(20) not null,salary decimal(10, 2) not null);
  1. 插入测试数据
insert into emp values (1, '⻢云', '⽼板', 1500000.00);
insert into emp values (2, '⻢化腾', '⽼板', 1800000.00);
insert into emp values (3, '鑫哥', '讲师', 10000.00);
insert into emp values (4, '博哥', '讲师', 12000.00);
insert into emp values (5, '平姐', '学管', 9000.00);
insert into emp values (6, '莹姐', '学管', 8000.00);
insert into emp values (7, '孙悟空', '游戏⻆⾊', 956.8);
insert into emp values (8, '猪悟能', '游戏⻆⾊', 700.5);
insert into emp values (9, '沙和尚', '游戏⻆⾊', 333.3);
  1. 统计每个⻆⾊的⼈数
select role, count(*) from emp group by role;

在这里插入图片描述

6.3 having⼦句

由于执行SQL 语句中不同的关键字执行顺序不一样,我们在分组后还想对分组后的表做条件过滤查询就不能使用where语句了,此时我们引进了一个新的语句 having 语句

select role, avg(salary) from emp group by role having avg(salary) < 1200;

在这里插入图片描述

6.4 Having与Where的区别

  • Having⽤于对分组结果的条件过滤
  • Where⽤于对表中真实数据的条件过滤

7. 内置函数

MySQL内部实现了一些函数,可以直接拿来使用,但是我们需要注意,一般对于数据处理的问题,在应用程序中完成,不要放在数据库里面处理

日期函数

字符串函数

数学函数


http://www.mrgr.cn/news/56415.html

相关文章:

  • Qt学习笔记第21到30讲
  • 签约!沃飞长空和民航二所签署战略合作协议
  • Redis2
  • 计算机毕业设计Python深度学习房价预测 房源可视化 房源爬虫 二手房可视化 二手房爬虫 递归决策树模型 机器学习 深度学习 大数据毕业设计
  • K8s-pod详解3(pod调度)
  • C++基础与实用技巧第三课:内存管理与性能优化
  • 中间件之MQ-Kafka
  • sql数据库的命令行操作(修改表)
  • Leetcode—1242. 多线程网页爬虫【中等】Plus(多线程)
  • C语言初阶小练习4(不用临时变量交换数值)
  • dolphinscheduler创建工作流及工作流中DataX的使用(简单操作)
  • TikTok账号被限流怎么解决?
  • 【二】企业级JavaScript开发之代码编辑器
  • 什么是表单数据
  • 群晖通过 Docker 安装 Gitea
  • 两个线程交替打印数字
  • 鸿蒙开发:两个重磅更新,鸿蒙版微信要来了!
  • Java学习Day50:唤醒八戒(Excel相关)
  • 中间件之Seata
  • Python酷库之旅-第三方库Pandas(160)
  • Linux基础命令(入门)
  • Java框架之MyBatis Plus
  • linux介绍与基本指令
  • Linux系统基础-进程间通信(2)_命名管道和System V通信
  • 【linux】线程 (三)
  • python虚拟环境安装