MySQL 表内容的增删查改 -- CRUD操作,聚合函数,group by 子句

上海计算机学会2020年5月月赛C++乙组T2经济普查 中国正在以前所未有的力度推进脱贫攻坚,国家计划在2020年使得在现行标准下的贫困人口实现全面脱贫,为此,需要对居民的经济状况进行普查。 题目描述 给定一个正整数n,表示人口数量。一开始,每个居民拥有的财产记为a1​,a2​,⋯,an​,财产可能发生两种变化: 一种来源于个体,由某个居民的经济活动而产生。在某个时刻,某个居民的财产会直接变成某个数值,可能升高也可能降低。 一种来源于政策,在某个时刻,国家会对财产低于某个标准线全部的居民,实施政策支持,使得他们的财产全部正好到达标准线。 给定这些变 阅读详情

目录

1. Create

1.1 语法

1.2 单行数据 + 全列插入

1.3 多行数据 + 指定列插入

1.4 插入数据否则更新数据

1.5 替换

2. Retrieve

2.1 SELECT 列

2.1.1 全列查询

2.1.2 指定列查询

2.1.3 查询字段为表达式

2.1.4 为查询结果指定别名

2.1.5 结构去重

2.2 WHERE 条件

2.2.1 运算符介绍

2.2.2 案例

2.3 对筛选结果排序显示 

2.3.1 案例

2.4 分页显示结果

3. Update

3.1 案例

4. Delete

4.1 案例

4.2 截断表

5. 插入查询结果

6. 聚合函数

6.1 案例

7. group by 子句的使用

7.1 案例


        CRUD: create(创建),retrieve(读取),Update(更新),delete(删除)

1. Create

1.1 语法

INSERT [INTO] table_name [(column [, column] ...)] VALUES (value_list) [, (value_list)] ...

value_list: value, [, value] ...

        插入数据的时候,value_list 中列的数量和顺序要和 前面定义表([(column [, column] ...)] )的列的一致。

        这里先创建一张学生表,用于下列实验。 

1.2 单行数据 + 全列插入

        如果定义表中没有指定列,表示全列插入。也可以在定义表中指定全部列表示全列插入。

1.3 多行数据 + 指定列插入

1.4 插入数据否则更新数据

        由于在插入的时候会发生主键或者唯一键冲突,可以选择性的进行同步更新操作:

INSERT ... ON DUPLICATE KEY UPDATE column = value [, column = value] ...

        如下图中的语句,当插入的数据没有主键或者唯一键冲突的时候插入数据,如果有主键或唯一键冲突则将原数据更新为 update 之后的数据。

1.5 替换

REPLACE [INTO] table_name [(column [, column] ...)] VALUES (value_list) [, (value_list)] ...

value_list: value, [, value] ...

        如果插入的数据与表中的数据没冲突,则插入该数据;如果插入的数据与表中的数据有冲突,则将表中数据替换为该数据。 

2. Retrieve

SELECT
[DISTINCT] {* | {column [, column] ...}
[FROM table_name]
[WHERE ...]
[ORDER BY column [ASC | DESC], ...]
LIMIT ...

DISTINCT:表示去重。
{* | {column [, column] ...}:*表示通配符,column表示要查看的列。
WHERE ...:后面跟筛选条件。
ORDER BY column [ASC | DESC], ...:按照 column 升序或降序排序。
LIMIT ...:限制条数。

        下列是后续实验使用的表的结构以及其数据。 

2.1 SELECT 列

2.1.1 全列查询

        通常情况下不建议使用 * 进行全列查询,因为查询的列越多,意味着需要传输的数据量越大,并且会影响到索引的使用。 

2.1.2 指定列查询

        指定列的顺序不需要按定义表的顺序来写。可以指定想要查询的若干列进行查询。

2.1.3 查询字段为表达式

        (1)表达式不包含字段

        (2)表达式包含一个字段

        (3)表达式包含多个字段 

2.1.4 为查询结果指定别名

SELECT column [AS] alias_name [...] FROM table_name;

        as 可以省略。 

2.1.5 结构去重

2.2 WHERE 条件

2.2.1 运算符介绍

        比较运算符: 

        '=' 不能用于判断是否等于 NULL。 

        between 的区间是左闭右闭的。 

        like 前可以加 not 表示取反。

        逻辑运算符:

2.2.2 案例

        (1)查看英语低于60分的同学。

        (2)查看语文成绩在 [80, 90] 分的同学。 

        (3)数学成绩是 98 或 99 的同学。 

        (4)筛选出姓孙的同学,孙某以及孙某某。

        (5)筛选语文成绩好于英语成绩的同学。 

        (6)筛选总分在 200 分一下的同学。 

        从上图可以看到,语句 1 可以正常执行,而语句 2 则会失败。原因是因为 select 语句是有执行顺序的。首先执行的是 from 表示从那个表中找,其次是 where 子句,表示筛选的条件,最后在是列的显示。上述的语句 2 中,在执行 where 的时候还没有进行重命名,所以使用 total 充当筛选条件是不可行的,其次,重命名也不能在 where 子句中进行。

2.3 对筛选结果排序显示 

        order by 的执行顺序在显示列之后,所以可以使用重命名的列名进行排序。

-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC
SELECT ... FROM table_name [WHERE ...]
ORDER BY column [ASC|DESC], [...];

        注:没有 order by 子句查询出来的顺序是未定义的。 NULL 视为比任何值都小。

2.3.1 案例

        (1)按数学成绩升序或降序显示同学及其数学成绩。

        (2) 按数学降序,英语升序,语文升序的方式显示各科成绩。

        上述语句表明的是,当数学相等的时候,按照英语成绩升序排列,当数学成绩相等并且英语成绩相等的时候,按照语文成绩相等来排。 

2.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 语句,避免因为表中数据过大,查询全表数据导致数据库卡死。

3. Update

UPDATE table_name SET column = expr [, column = expr ...]
[WHERE ...] [ORDER BY ...] [LIMIT ...];

        对查询到的结果进行列值更新,如果没有 where 子句会对全表进行修改。

3.1 案例

        (1)将孙悟空的数学成绩修改为 80 分。

        (2)将总分倒数前 3 的同学数学加 30 分。 

4. Delete

DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...];

        对查询到的结果进行删除。

4.1 案例

        (1)删除孙悟空的成绩。

        (2)删除整张表的数据。 

        整张表的数据删除之后,并不会重置 auto_increment 项。

4.2 截断表

TRUNCATE [TABLE] table_name;

        truncate 也是清空整张表的数据,只能对整张表操作,不能想 delete 一样删除部分数据。会重置 auto_increment 项。truncate 不对数据操作,直接把表清空,所以比 delete 快,但是 truncate 在删除数据的时候,并不会记录到日志当中,也不会经过真正的事务,所以无法回滚。

5. 插入查询结果

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

        案例:删除表中的重复记录。

        (1)创建原始数据表并插入测试数据。

        (2)创建一张空表,结构和原表一样。 

        (3)将原表去重的数据插入到新表中。 

        (4)将原表重命名为其他,然后将新表重命名为原表。 

6. 聚合函数

6.1 案例

        (1)统计学生数学成绩的平均值。

        (2)返回 > 70 分以上的最低数学成绩。

7. group by 子句的使用

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

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

7.1 案例

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

        (1)显示每个部门的平均工资和最高工资。 

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

        (3)显示平均工资低于 2000 的部门和它的平均工资。

        having 对聚合统计之后的结果进行条件筛选。 

知识点1:        

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

 

Unity零基础到入门☀️| 万字教程 讲解Unity中的数据存储 PlayerPrefs、XML、JSON【建议收藏】 本文章是Unity零基础到入门专栏的系列文章。 适合对Unity3D引擎感兴趣的小伙伴学习,偏向于新手学习! 本篇文章就来介绍一下Unity中三种基本的数据存储方式:PlayerPrefs、XML、JSON 阅读详情

相关推荐

使用WSL2安装ubuntu系统并配置深度学习环境

wsl2安装ubuntu部署深度学习环境的方法

u013358093的博客 2701

【MySQL】MySQL 表的增删改查(CRUD)—— 下篇(内含聚合查询、group by和having子句、联合查询、插入查询结果)

聚合查询,是针对行和行之间进行运算的。表达式查询,是针对列和列之间进行运算的。sql中提供了一些"聚合函数”通过聚合函数来完成上述行之间的运算。聚合函数 ,sql提供的 库函数。使用group by进行分组,针对每个分组,再分别进行聚合查询。针对指定的列进行分组,指把列里值相同的行,分到同一个组。得到若干个组,针对这些组分别使用聚合函数。前面的查询,都是针对一个表。相比之下,有些查询则是一次性需要从多个表中进行查询获取记录。联合查询就是把多个表联合到一起进行查询。

小黑屋的黑小子的博客 2539

无人机蜂群作战设计技术详解

构建防御网络,拦截敌方无人机或导弹;无人机蜂群作战设计技术是一种创新的军事应用概念,它基于生物仿生学原理,通过先进的通信技术、自主导航与决策算法,将大量小型、低成本、功能各异的无人机组织成一个高度协同的群体,以执行复杂多样的军事任务。无人机蜂群作战的概念源于自然界中蜜蜂、蚂蚁等生物群体的行为模式,这些生物群体通过简单的个体间的信息交互和分工协作,能够完成远远超出单一个体能力的复杂任务。其中,无人机群体是执行任务的主体,指挥控制系统负责任务分配和决策,通信数据链则保障无人机群体与指挥控制系统之间的信息交换。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 2214

MySQL 基本查询

注意:where子句的执行是先于select语句的,所以在where子句中不能使用别名,如果在where子句中使用别名,那么在查询数据时就会产生报错。说明:在进行指定列查询时,也可以使用表达式,当一条记录被筛选出来时就会执行这个表达式,然后将表达式的计算结果作为这条记录的一个列值进行显示。说明:显示每个部门的平均工资和最高工资。说明:分别查询 j 开头的同学,%:匹配任意多个(包括 0)任意字符,_:匹配一个任意字符。注意:没有 order by 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序。

2401_82894443的博客 947

PPO(Proximal Policy Optimization)算法原理及实现,详解近端策略优化

接着上面的讲,PG方法一个很大的缺点就是参数更新慢,因为我们每更新一次参数都需要进行重新的采样,这其实是中on-policy的策略,即我们想要训练的agent和与环境进行交互的agent是同一个agent;与之对应的就是off-policy的策略,即想要训练的agent和与环境进行交互的agent不是同一个agent,简单来说,就是拿别人的经验来训练自己。举个下棋的例子,如果你是通过自己下棋来不断提升自己的棋艺,那么就是on-policy的,如果是通过看别人下棋来提升自己,那么就是off-policy的。

weixin_41106546的博客 9万+

高德地图-获取定位-失败原因-浏览器定位异常场景

提示:也能实现,但是需要https协议,而且请求时间很长,要么你用梯子,还是不太合适.

shi15926lei的博客 4206

【MySQL基础】表的功能实现:增删查改详细讲解

【MySQL基础】表的功能实现:关于表的CRUD(即增删查改)功能的使用和案例详解!!

2301_80220607的博客 2205

【技能---ubuntu20.04更换国内镜像源】

安装好ubuntu20.04后,在下载软件等安装包的时候,速度特别的慢,为此就想着更换一下镜像源,以此来增加下载的速度!!!下面是换源的具体流程!!!提示:以下是本篇文章正文内容,下面案例可供参考以上到这里就更换完软件源了,如有不足之处,请大家斧正!!!

fyc300的博客 1万+

[MySQL] MySQL 表的增删查改

本篇文章对mysql表的增删查改进行了详细的举例说明解释。对表的增删查改简称CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除)。其中重点是对查询select语句进行了详细解释,并且通过多个实际例子来帮助你的理解。希望本篇文章会对你有所帮助。

weixin_67596609的博客 3755

Silvaco TCAD仿真例库——肖特基二极管反向击穿特性(案例)

本文详细解析了使用Silvaco TCAD仿真例库进行肖特基二极管反向击穿特性分析的完整案例。通过构建包含浮空P型保护环的平面结构,重点阐述了针对雪崩击穿仿真的关键步骤,包括高精度网格划分、碰撞电离模型(impact selb)的启用以及反向电压的精细扫描策略。文章深入探讨了漂移区掺杂浓度、保护环设计等参数对击穿电压的影响,并提供了实用的调试心得,旨在帮助工程师精准预测和优化功率肖特基二极管的反向耐压能力。

fire9的博客 724

Halcon那些事:Halcon非常核心的1个概念reduce_domain算子的理解和1个详细的使用示例

Reduce是减少的意思。并不是真的去裁剪图像,而是定义一个“感兴趣的区域(Region of Interest, ROI)”。后续的图像处理算子将只在这个定义的区域内有效,区域外的像素将被忽略。在一张白纸(完整图像)上放一张镂空的纸板(Domain)。我们后续的绘画(图像处理操作)只会透过镂空的部分影响到下面的白纸。镂空纸板之外的部分保持不变,也不会被处理。关键步骤:使用ReduceDomain,将图像的域限制为ROI区域,图像在原来图像基础上存在图像区域。

十多年IT经验,专注机器视觉,智能制造半导体行业 577

【MySQL】对表数据的操作:增删查改(CRUD)

MySQL 中对表里面数据的操作!

Miun123的博客 3139

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

MySQL表的增删查改

在使用insert语句插入数据的时候,在表名左边不指定列名就表明需要进行全列插入,指定列名就表示向指定列插入(当然,如果指定全部的列名也表示全列插入);前面我们在使用select子句的时候,都是将一列数据的全部内容显示出来,如果我们想筛选出符合条件的记录,也就是表中的行,我们就需要使用where子句了。在我们插入数据的时候,可能因为主键or唯一键对应的值已经存在而导致插入失败,这是,我们可以使用insert语句的。在MySQL中,我们可以使用将select的查询结构插入一张和当前表结构一样的表中。

知其然 知其所以然 1086

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

MySQL表内容的增删查改

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

weixin_74310945的博客 1179

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【MySQL】表的增删查改

想必大家在学校也学习过MySQL,可能学的懵懵懂懂,这个板块我们从入门开始,从最新的安装MySQL到学习MySQL语句,一步一步开始,一切都是新的,新的板块新的开始,大家一起努力,一起进步!!!​二。

AAlykk的博客 2200

MySQL基础 [五] - 表的增删查改

不要单纯的认为,只有磁盘上表结构导入到mysql,真实存在的表才叫做表。中间筛选出来的,包括最终结果,全部都是逻辑上的表!“MySQL一切皆表”。也就是说未来只要我们处理好单表的CURD,所有的sql场景我们全部都能用统一的方式进行

2402_83315537的博客 1171

【MySQL】表的增删查改 + 分组查询

表的增删查改 + 分组查询

2203_76003626的博客 1576

【MySQL】表的增删查改操作详解

MySQL 表的增删查改操作详解 在数据库管理和应用开发中,增删查改(CRUD)操作是最基本且最频繁的任务。CRUD 代表了四种基本的数据库操作:创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)。

Z1tai的博客 1579

【MySQL】基本查询,表的增删查改

本文详细介绍了MySQL中的CRUD操作(创建、读取、更新、删除),并涵盖了数据插入、查询、更新和删除的具体语法与示例。文章还探讨了如何使用WHERE条件进行数据筛选、ORDER BY进行排序、LIMIT进行分页,以及GROUP BY和HAVING进行分组和聚合统计。此外,还介绍了INSERT ... ON DUPLICATE KEY UPDATE和REPLACE等高级操作,帮助处理主键或唯一键冲突的情况。最后,文章对比了HAVING和WHERE的区别,强调了它们在查询中的不同作用。

2303_77756141的博客 1325

【MYSQL】表的基本查询

虽然我们在前面已经出过一期关于表和库的操作了,这一次我们来更深入的介绍一下关于表的增删查改操作。 CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除)

须知少日拏云志,曾许人间第一流。 1407

【MySQL篇】MySQL基本查询详解

where chinese>80 and name not like '孙%';

2401_82677021的博客 6198

mysql表操作——基本增删查改

本文介绍了MySQL中表数据的基本增删查改操作(DML),重点讲解了CRUD(创建、读取、更新、删除)的实现方法。在创建数据方面,详细说明了INSERT语句的用法,包括全列插入、指定列插入和多行插入,并对比了"ON DUPLICATE KEY UPDATE"和"REPLACE"两种处理冲突数据的方式。在查询数据方面,介绍了SELECT语句的各种用法,如列查询、表达式计算、别名设置和结果去重,以及WHERE条件筛选的多种运算符使用技巧。这些操作为后续更复杂的数据库操作奠

2301_79705195的博客 705

MySQL(四) 表的增删查改

CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除)语法: 案例: 6.1.1 单行数据 + 全列插入 6.1.2 多行数据 + 指定列插入 6.1.3 插入否则更新 由于 主键 或者 唯一键 对应的值已经存在而导致插入失败 可以选择性的进行同步更新操作 语法: 6.1.4 替换 6.2 Retrieve 语法: 案例: 6.2.1 SELECT 列 6.2.1.1 全列查询 6.2.1.2 指定列查询 6.2.1.3 查询字段为表达式

POSEidoNqs的博客 1770
上一篇: MySQL 中表的约束 -- 空属性,默认值,主键,自增长,唯一键,外键
下一篇: Linux 中应用层自定义协议与序列化 -- 自定义协议概述,序列化和反序列化,Jsoncpp
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值