5.MySQL基本查询

news2024/10/2 22:26:57

个人主页:Lei宝啊 

愿所有美好如期而遇


目录

表的增删改查 

Create 

单行数据 + 全列插入

多行数据 + 指定列插入

插入否则更新

替换

Retrieve

SELECT 列

全列查询

指定列查询

查询字段为表达式

为查询结果指定别名

结果去重

WHERE 条件

结果排序

筛选分页结果

Update

删除数据

删除单行

删除整张表数据

截断表

Delete

插入查询结果

聚合函数

group by子句的使用

实战OJ


表的增删改查 

Create(创建), Retrieve(读取),Update(更新),Delete(删除)

Create 

表的创建可以参考:Mysql表的操作 

表后的各种约束参考:MySQL表的约束

单行数据 + 全列插入

语法:

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

单行数据+指定列插入

展示插入结果

单行数据+全列插入

 展示插入结果

多行数据 + 指定列插入

展示插入结果

这里先前删除过两个数据,所以auto_crement到了5,从6开始插入了两个数据。

现在就到了8,下一个插入数据id为8(如果不指定). 

插入否则更新

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

主键冲突:

唯一键冲突:

可以选择性的进行同步更新操作语法:

INSERT ... ON DUPLICATE KEY UPDATE

-- ON DUPLICATE KEY 当发生重复key的时候

select row_count()可以查看被影响的行数,在进行插入操作后使用。

 

替换

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

 展示替换结果

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

Retrieve

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

创建一个新的测试表。

插入一些测试数据。

SELECT 列

全列查询

-- 通常情况下不建议使用 * 进行全列查询
-- 1. 查询的列越多,意味着需要传输的数据量越大;
-- 2. 可能会影响到索引的使用。

select * from exam;

指定列查询
查询字段为表达式

为查询结果指定别名

结果去重

98分有重复

去重结果

没有三个成绩同时重复的

WHERE 条件

比较运算符:

逻辑运算符:

下面是上面的一些案例。

测试NULL的比较:

又是一个好的示例:

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

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

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

不够优雅,换种方式

姓纯的同学 及 纯某同学

-- % 匹配任意多个(包括 0 个)任意字符

-- _ 匹配严格的一个任意字符

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

总分在 200 分以下的同学

 这里有个先后顺序,先筛选总分小于200,才起别名输出,而不是先起别名输出,后筛选。

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

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

结果排序

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

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

降序

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

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

这里举个例子

这里会有人问,order by后面为什么可以用别名,where后面不可以,这里先后顺序为

  1. from
  2. where
  3. select
  4. order by

取别名在第三步,第四步当然可以使用别名。

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

筛选分页结果

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

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

 

更明确的写法。

Update

语法:
UPDATE table_name SET column = expr [, column = expr ...]
[WHERE ...] [ORDER BY ...] [LIMIT ...]

对查询到的结果进行列值更新
案例:

将佩奇同学的数学成绩变更为 80 分

将纯纯傻屌同学的数学成绩变更为 60 分,语文成绩变更为 70 分

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

NULL不参与计算

将所有同学的语文成绩更新为原来的 2 倍

删除数据

语法:
DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]

删除单行

删除纯纯傻屌同学的考试成绩

也可以删多行,没加标题,汗-_-||

删除整张表数据

注意:删除整表操作要慎用!

准备一个测试表

这里我们需要注意:如果这个表中有主键,并且自增长,那么使用delete清空这个表中的所有数据时,自增长的值没有被清空,延续上一个最大值。

截断表

语法:
TRUNCATE [TABLE] table_name

试着截断它。

再插入数据时id就会从1开始了。

注意:这个操作慎用
只能对整表操作,不能像 DELETE 一样针对部分数据操作

Delete

删除的知识点在update了,忘记写在这个下面了,哈哈。

插入查询结果

语法:
INSERT INTO table_name [(column [, column ...])] SELECT ...

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

老规矩,先建个新的测试表。

插入几个数据。

还记得我们如何去重的吗?

select distinct * from table_name;

也就是一个拼接。

将旧的t1改名,t2改名为t1,不就相当于给t1表去重了吗。

也可以这么改名。

查看去重结果。

聚合函数

查看一下我们去重后表剩下有多少数据。

测试剩下的数据我们先来建一个新表。

测试sum聚合函数

所有人的总分

每个人的总分

测试avg聚合函数

测试max和min函数

group by子句的使用

在select中使用group by 子句可以对指定列进行分组查询
select column1, column2, .. from table group by column;

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

 

之后我们向里面插入了部分数据,我们可以开始展示group by的用法了

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

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

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

  1. 先从emp中寻找数据
  2. 再分组
  3. 按列查询,计算函数
  4. having条件 

having和group by配合使用,对group by结果进行过滤 

 --having经常和group by搭配使用,作用是对分组进行筛选,作用有些像where。

实战OJ

批量插入数据_牛客题霸_牛客网 (nowcoder.com)

找出所有员工当前薪水salary情况_牛客题霸_牛客网 (nowcoder.com)

 查找最晚入职员工的所有信息_牛客题霸_牛客网 (nowcoder.com)

查找入职员工时间排名倒数第三的员工所有信息_牛客题霸_牛客网 (nowcoder.com)

 查找薪水记录超过15条的员工号emp_no以及其对应的记录次_牛客题霸_牛客网 (nowcoder.com)

从titles表获取按照title进行分组_牛客题霸_牛客网 (nowcoder.com)

获取所有部门当前manager的当前薪水情况,给出dept__牛客题霸_牛客网 (nowcoder.com) 

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

 

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

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

相关文章

xhadmin多应用Saas框架之超级SEO应用介绍

xhadmin是什么&#xff1f; xhadmin 是一套基于最新技术的研发的多应用 Saas 框架&#xff0c;支持在线升级和安装模块及模板&#xff0c;拥有良好的开发框架、成熟稳定的技术解决方案、提供丰富的扩展功能。为开发者赋能&#xff0c;助力企业发展、国家富强&#xff0c;致力于…

香飘飘的想象空间:全面创新驱动外延与内涵双增长,未来可期

面对时常会发生代际更替的消费者主力群体&#xff0c;创新已经成为一种商业上的必须。 日前&#xff0c;香飘飘发布了三季报&#xff0c;数据显示&#xff0c;第三季度&#xff0c;香飘飘营业收入8.08亿元&#xff0c;同比增长20.41%。前三季度&#xff0c;香飘飘营收19.79亿元…

制药企业固体制剂设备管理及维护要点

在制药企业的生产过程中&#xff0c;固体制剂设备是至关重要的一环。有效管理和维护这些设备对于确保生产质量、提高生产效率以及延长设备寿命至关重要。本文将从以下三个方面介绍制药企业固体制剂设备的主要类型、常见管理问题以及设备维护的关键要点。 制药企业固体制剂设备主…

基于蝴蝶算法的无人机航迹规划-附代码

基于蝴蝶算法的无人机航迹规划 文章目录 基于蝴蝶算法的无人机航迹规划1.蝴蝶搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用蝴蝶算法来优化无人机航迹规划。 1.蝴蝶搜索算法 …

C# Winform编程(9)网络编程

网络编程 HTTP网络编程IPAddress IP地址类WebClient类WebRequest类和WebResponse类 WebBrowser网页浏览器控件TCP网络编程TcpClient类TcpListener类NetworkStream类Socket类 HTTP网络编程 IPAddress IP地址类 IPAddress类代表IP地址&#xff0c;可在十进制表示法和实际的整数…

springMVC 文件上传和下载

文章目录 1、文件下载2、文件上传 1、文件下载 使用ResponseEntity实现下载文件的功能 RequestMapping("/testDown") public ResponseEntity<byte[]> testResponseEntity(HttpSession session) throws IOException {//获取ServletContext对象ServletContext …

《深入浅出OCR》第四章:OCR文字识别

✨专栏介绍: 经过几个月的精心筹备,本作者推出全新系列《深入浅出OCR》专栏,对标最全OCR教程,具体章节如导图所示,将分别从OCR技术发展、方向、概念、算法、论文、数据集等各种角度展开详细介绍。 👨‍💻面向对象: 本篇前言知识主要介绍深度学习知识,全面总结知知识…

细谈MySQL的一下经典问题(一)

在MySQL中INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL JOIN 有什么区别&#xff1f; 在MySQL中&#xff0c;INNER JOIN、LEFT JOIN&#xff08;或LEFT OUTER JOIN&#xff09;、RIGHT JOIN&#xff08;或RIGHT OUTER JOIN&#xff09;和 FULL JOIN&#xff08;或FULL OUTER JOI…

论文关键算法复现:基于CEEMDAN和MPE联合小波阈值的振动信号降噪方法

论文简介&#xff1a; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; ​ 基于CEEMDAN、多尺度排列熵和小波阈值的信号降噪方法结合了多种技术手段&#xff0c;可有效降低信号中的噪声。以下是该方法的步骤&#xff1a; 1. 使用CEEMDAN将原始信号分解为…

MyBatisPlus的使用【详细】

目录 Mybatis MybatisPlus特性 MybatisPlus的使用 常见注解 TableName TableId TableField MP常见配置 条件查询器Wrapper QueryWrapper UpdateWrapper LambdaQueryWrapper 自定义SQL Service接口 批量添加数据 MP的代码生成 MP静态工具 MP扩展功能之逻辑删除…

EPPlus库的安装和使用 C# 中 Excel的导入和导出

安装 工具栏->NuGet 包管理器->管理解决方案的NuGet程序包 安装到当前项目中 使用 将 DataGridView 数据导出为Excel 首先&#xff0c;需要将数据DataGridView对象转换为DataTable private void btnExport_Click(object sender, EventArgs e) {// 1.将当前页面的data…

SpringMVC 资源状态转移RESTful

文章目录 1、RESTful简介a>资源b>资源的表述c>状态转移 2、RESTful的实现HiddenHttpMethodFilterRESTful案例 1、RESTful简介 REST&#xff1a;Representational State Transfer&#xff0c;表现层资源状态转移。 a>资源 资源是一种看待服务器的方式&#xff0c…

C++栈、队列、优先级队列模拟+仿函数

目录 一、栈的模拟和deque容器 1.deque 1.1deque结构 1.2deque优缺点 2.stack模拟 二、队列的模拟 三、priority_queue优先级队列 1.优先级队列模拟 2.添加仿函数 一、栈的模拟和deque容器 在之前&#xff0c;我们学过了C语言版本的栈&#xff0c;可以看这篇文章 栈和…

Qt私有信号实现(private signal)

在使用Qt信号槽机制的时候&#xff0c;有时候我们需要一个信号只能由类内发出&#xff0c;而不允许使用该类对象的用户发出&#xff0c;此时就需要私有信号的支持&#xff0c;而信号的关键字 signals&#xff0c;点进去它的实现&#xff0c;大概如下&#xff1a; signals:再次…

推荐-25个开源软件

今天&#xff0c;我想让您对下一个 25 个出色的开源软件。您可以安装它&#xff0c;并且几乎开箱即用&#xff01; ⚠️使用软件前请检查是否安全️️ 1. Portmaster (Go) — 隐私保护者 Portmaster 由 Safing 开发&#xff0c;是一款开源软件&#xff0c;可帮助您保护在线活…

PyTorch基础(18)-- torch.stack()方法

一、方法详解 首先&#xff0c;看一下stack的直观解释&#xff0c;动词可以简单理解为&#xff1a;把……放成一堆、把……放成一摞。 有了对stack方法的直观感受&#xff0c;接下来&#xff0c;我们正式解析torch.stack方法。 PyTorch torch.stack() method joins (concaten…

cookie过大导致request 400 错误研究

问&#xff1a;get请求太长报400的错误&#xff0c;如何解决&#xff1f;生成系统中经常偶现此问题 问&#xff1a;get请求URL的长度是谁限制的&#xff1f; 问&#xff1a;每一个cookie的value的大小还是同域下cookie的个数做的限制&#xff1f; 现象&#xff1a;出现 400 Ba…

【Android知识笔记】插件化专题(一)

占位式插件化方案 宿主启动插件 Activity 的流程 实现思路: 创建一个 DexClassLoader 类加载其用于加载插件包apk中的 Activity 类 反射调用 AssetManager 的 addAssetPath() 将插件包的路径添加,然后通过该AssetManager的实例构造Resource的实例用以加载插件中的布局 启动…

一个信号间相互干扰问题的发现及解决方法

问题描述&#xff1a;MAX3232串口通讯芯片的输出引脚上存在干扰电平&#xff0c;通过示波器可以看到干扰电平&#xff0c;PC端的串口程序表现为接收到乱码。如下图&#xff0c;环回测试中发了一串字符数据ATCIPSEND后&#xff0c;除了收到环回的ATCIPSEND字符外&#xff0c;还有…