Linux下学【MySQL】表中插入和查询的进阶操作(配实操图和SQL语句通俗易懂)

绪论​
在这里插入图片描述
每日激励:挫折是会让我们变得越来越强大的重点是我们敢于积极的面对它。—Jack叔叔

绪论​:
本章是表操作的进阶篇章(没看过入门的这里是传送门,本章将带你进阶的去学习表的插入insert和查找select,本质也就是学他们后面所带的一些附加条件(具体请看目录),通过这些条件去更好的插入和查找你所需要的数据。本章是上篇(全文8000字),下篇将写道修改和删除,将快速更新敬请期待。
————————
早关注不迷路,话不多说安全带系好,发车啦(建议电脑观看)。


表的增删查改

CURD是一个数据库技术中的缩写词,一般的项目开发的各种参数的基本功能都是CURD。作用是用于处理数据的基本原子操作。(源百度百科)

CURD:

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

1. Create插入数据(Insert细节操作)

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

直接通过实例来学习:

先创建一个学生表(后续在学生表上进行操作)
在这里插入图片描述

1.1 单行数据插入:

在这里插入图片描述

  1. 主要需要理解的结构:
    (需要插入的属性列) values(对应的值)
    insert into students (插入中:into可省略,students就是要插入的表名)
  2. values右边列属性不写,就是一次性插入所有属性(全列插入
    在这里插入图片描述

1.2 多行插入:

也很简单直接在插入的数据 用逗号分隔 连续插入(具体如下图)
在这里插入图片描述
同样能指定列插入,这里就不过诉了。

1.3 冲突时同步更新:

当插入数据时可能会有主键、唯一键冲突…等情况,假如直接插入会直接报错。
那么现在可以通过添加一些语法,让当有冲突(即已存在该数据)时,对冲突进行处理,让即使有问题也能插入,而不是直接报错。
语法:

on duplicate key update

例如:
下述插入许攸的情况,若直接插入,因为主机冲突的情况无法直接插入新的值。
那么我们使用(原SQL)on duplicate key update (更新SQL)这样就能插入,并且修改即使存在也会将他修改为新的
在这里插入图片描述

下面再看具体语法:

在插入语句后面添加:
INSERT ...... ON DUPLICATE KEY UPDATE
column = value [, column = value] ...-- 0 row affected: 表中有冲突数据,但冲突数据的值和 update 的值相等
-- 1 row affected: 表中没有冲突数据,数据被插入
-- 2 row affected: 表中有冲突数据,并且数据已经被更新select  ROW_COUNT()-- 获取受影响函数

1.4 冲突时同步替换:

语法:

-- 主键 或者 唯一键 没有冲突,则直接插入;
-- 主键 或者 唯一键 如果冲突,则删除后再插入
replace into students (sn, name) VALUES (20001, '曹阿瞒');
Query OK, 2 rows affected (0.00 sec)-- 1 row affected: 表中没有冲突数据,数据被插入
-- 2 row affected: 表中有冲突数据,删除后重新插入

实例:
当插入冲突时,会直接进行替换(此时就会显示2行影响行数),注意此处是删除后再插入(id会改变)
具体如下图:
在这里插入图片描述

2. Retireve读取数据(Select细节操作)

语法:

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

同样是用实例来学习:

创建表并插入数据:
在这里插入图片描述

2.1 全列查询

通常情况下不建议使用 * 进行全列查询
1. 查询的列越多,意味着需要传输的数据量越大;
2. 可能会影响到索引的使用。(索引待后面课程讲解)
语法:
SELECT * FROM exam_result;

之前讲写了就不过诉了!

2.2 指定列查询

-- 指定列的顺序不需要按定义表的顺序来
和插入时类似在前面加上要查询的列名称,不同的是此时变成了FROM
SELECT id, name, english FROM exam_result;

在这里插入图片描述

2.3 查询字段为表达式

在select 后可以添加表达式,将会在查询结果中带上表达式结果。

表达式不包含字段时:
SELECT id, name, 10 FROM exam_result;

发现将会直接打印10(其实代表的是该表达式的计算结果)
在这里插入图片描述
查询有字段的表达式时:
并且还能通过as进行重命名:
如求一行中的成绩总和

在这里插入图片描述
其中as可以省略:
在这里插入图片描述

2.4 结果去重 DISTINCT

SELECT DISTINCT math FROM exam_result

很简单就是将查询到的重复数据只见一行。

2.5 where条件

比较运算符:

运算符说明
> , >=, <, <=大于,大于等于,小于,小于等于
=等于,只能用于数值的比较,NULL 不安全(不能比较),例如 NULL = NULL 的结果是 NULL
<=>等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)
!=, <>不等于NULL 不安全
BETWEEN a0 AND a1范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1)
IN (option, …)如果是 option 中的任意一个,返回 TRUE(1)
IS NULL是 NULL
IS NOT NULL不是 NULL
LIKE 模糊匹配% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符

附:

=号,不能用于比较NULL值,比较NULL值需要使用<=>
具体如下:
当直接用 = 进行比较时比较后会为NULL、的使用<=>这样就能正常比较
在这里插入图片描述

逻辑运算符:

运算符说明
AND多个条件必须都为 TRUE(1),结果才是 TRUE(1)
OR任意一个条件为 TRUE(1), 结果为 TRUE(1)
NOT条件为 TRUE(1),结果为 FALSE(0

实例:

比较运算符
  1. 找英语成绩不合格的人:在这里插入图片描述
between运算符的使用
  1. 语文成绩在 80 ~ 90 分的同学和成绩
    在这里插入图片描述
    上述和使用between a1 and a2 (a1 ~ a2)一样,但between更方便。
    在这里插入图片描述
in运算符的使用

in:如果是 option 中的任意一个,返回 TRUE(1)

  1. 取出数学成绩 58 或 59 或 98或99 的同学和成绩
    可以直接使用 or
    在这里插入图片描述
    也可以使用 math in(58,59,…)
    在这里插入图片描述
like模糊查询

使用 like:

  • %表示模糊查询后面任意多个(包括 0 个)任意字符;
  • _表示模糊查询后面任意一个字符
  1. 查询孙某某(使用%,因为不确定其后面有几个字)
    在这里插入图片描述
    若写成_(就只能查孙某):
    在这里插入图片描述
where后面能使用表达式(和字段)
  1. 语文好于英语成绩
    在这里插入图片描述
  2. 总分在200以下的同学
    在这里插入图片描述
    注意其中不能在where后面使用as重命名的变量,这是因为在select中是where是先执行的,然后才到筛选列,所以也就是as还未定义,无法使用。
    具体执行顺序:
    1. from(先找表)
    2. where(筛选条件),
    3. select(查找的列属性)

所以因为先where,才到列属性,所以重命名是不能使用的(列属性处还未被定义,就不能在where中使用了)

not运算符
  1. 寻找语文成绩大于80且不姓孙在这里插入图片描述

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

    1. 要么是孙某
    2. 否则:要求总成绩 > 200 and 语文 < 数学 and 英语 > 80
    3. 可先把后面一长串的内容先写 然后 再去加上前面的孙某
      在这里插入图片描述
NULL的查询

重新新建一个表test:
在这里插入图片描述

  1. 查询NULL
    在这里插入图片描述
  2. 查询不为空
    在这里插入图片描述
  3. NULL不参与比较运算,要比较只能使用<=> 、<>
    在这里插入图片描述

2.6 order by语句(结果排序)

  • ASC 为升序(Ascending)(从小到大)
  • DESC 为降序(Descending)(从大到小)
  • 默认为 ASC
  • 没有order by子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序

语法:

SELECT ... FROM table_name [WHERE ...]
ORDER BY column [ASC|DESC], [...];

实操:
ASC升序:

  1. 按数学成绩升序显示
    在这里插入图片描述
  2. 降序desc
    在这里插入图片描述
NULL值在排序中,默认设置为比任何值都要小

在这里插入图片描述

多字段排序,排序优先级随书写顺序

具体理解如下:
查询同学各门成绩,依次按 数学降序,英语降序,语文升序的方式显示
在这里插入图片描述
上图中先按数学降序(数学写在英语前面),当数学相等时才按英语降序,最后才考虑写到最后的语文

建议就是向上图一样,将排序的 方式全部列全出来,不要去使用MySQL默认的情况(无法掌控)

order by默认升序

在这里插入图片描述

可以在order by 中使用前面的as别名

在这里插入图片描述
因为在order by中需要对数据进行排序,一定要先有适合的数据才排序(所以他是先执行前面的列属性筛选那么它就能排序)
在这里插入图片描述

2.7 limit的使用(筛选分页结果)

  1. 直接在select后面加上limit表示需要的行数(从开始到第n行)
    在这里插入图片描述
  2. 当limit 还能从 指定位置开始,读取连续个数(pos,len)(并且注意:开始位置是从0开始的)

如下图:从第一个开始读,3个
在这里插入图片描述

  1. 在limit读取行数的前提下,还能通过offset设置开始的行数(同样是从0开始)
    在这里插入图片描述

建议对未知表查询时,对limit限制为1,防止数据过大

limit的作用,类似于网页中常见的页面的1、2、3、4 。。。分页显示数据。
如下图:
在这里插入图片描述

limit的执行阶段会更加靠后,因为只有最后将所有数据都准备好了,才到最终的显示,而limit的本质功能也就是显示,所以将排到最后。

结合上面多个读取数据的方法实例:

获取班级第一(如下图):

SELECT name, (english + math + chinese) AS total
FROM exam_result
WHERE english + math + chinese > 200
ORDER BY total DESC
LIMIT 1;

在这里插入图片描述


本章完。预知后事如何,暂听下回分解。

如果有任何问题欢迎讨论哈!

如果觉得这篇文章对你有所帮助的话点点赞吧!

持续更新大量MySQL细致内容,早关注不迷路。

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

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

相关文章

[Rust开发]actix_webmiddleware 中间件

actix_web::middleware 在 Actix Web 框架中扮演着重要的角色&#xff0c;它允许开发者在处理 HTTP 请求和响应的过程中插入自定义的逻辑。中间件可以在请求到达处理函数之前或响应返回给客户端之前执行&#xff0c;从而实现日志记录、身份验证、数据验证、错误处理等功能。 为…

WebLogic T3反序列化漏洞(CVE-2018-2628)--vulhub

WebLogic T3反序列化漏洞(CVE-2018-2628) WebLogic在通信过程中使用T3协议传输数据&#xff0c;涉及到了序列化和反序列化操作。 T3协议概述 T3协议是Oracle的私有协议&#xff0c;所以公开的相关资料比较少&#xff0c;这里结合其他师傅的博客简单对T3协议进行一个简要分析…

OpenFeign快速入门 示例:黑马商城

使用起因 之前我们利用了Nacos实现了服务的治理,利用RestTemplate实现了服务的远程调用。这样一来购物车虽然通过远程调用实现了调用商品服务的方法,但是远程调用的代码太复杂了: 解决方法 并且这种调用方式比较复杂&#xff0c;一会儿远程调用&#xff0c;一会儿本地调用。 因…

计算机的错误计算(一百九十)

摘要 用两个大模型计算cot(1.234). 其中&#xff0c;1.234是以弧度为单位的角度。结果保留10位有效数字。实验表明&#xff0c;两个的计算公式虽然不同&#xff0c;但是都是正确的。然而&#xff0c;数值计算则是有问题的---包括每一个中间运算与结果。 例1. 计算cot(1.234)…

【QSS样式表 - ⑥】:QPushButton控件样式

文章目录 QPushBUtton控件样式QSS示例 QPushBUtton控件样式 常用子控件 常用伪状态 QSS示例 代码&#xff1a; QPushButton {background-color: #99B5D1;color: white;font-weigth: bold;border-radius: 20px; }QPushButton:hover {background-color: red; }QPushButton:p…

深度学习与图像处理(国产深度学习框架——飞桨官方指定教材)

计算机视觉从小白到大师之路 《深度学习与图像处理&#xff08;PaddlePaddle版&#xff09;》这一本就够了 1.引言 随着人工智能技术的飞速发展&#xff0c;各行各业对深度学习、图像处理相关领域的人才需求日益迫切。本书旨在通过系统的理论讲解与丰富的实战案例&#xff0…

HCIA-Access V2.5_6_3_GPON关键技术

GPON关键技术 GPON关键技术包含三个&#xff0c;测距&#xff0c;DBA&#xff0c;下行AES加密。 为什么需要测距 由于每一个ONU到OLT的距离是不一样的&#xff0c;虽然上行有TDMA技术&#xff0c;让每一个ONU在不同的时间段发送数据&#xff0c;但是可能由于距离的原因&#x…

v3s点RGB屏 40pin 800x480,不一样的点屏,不通过chosen。

一、背景、目的、简介。 一般来说&#xff0c;通过uboot将屏幕参数传给kernel&#xff0c;是通过修改设备树。 uboot和kernel都需要屏幕点亮。uboot侧重于显示一张图片。而kernel则多是动画。 在这里&#xff0c;我先是找到了一个裸机点屏的代码。将其编译成静态库后&#x…

电脑丢失bcrypt.dll文件是什么原因?找不到bcrypt.dll文件修复办法来啦!

电脑运行时常见问题及解决方案&#xff1a;文件丢失、文件损坏与系统报错 作为一名软件开发从业者&#xff0c;深知电脑在日常使用中难免会遇到各种问题&#xff0c;如文件丢失、文件损坏和系统报错等。这些问题不仅影响工作效率&#xff0c;还可能带来数据丢失的风险。今天&a…

【自动驾驶】3 激光雷达③

5 激光雷达点云检测模型 &#x1f98b;&#x1f98b;&#x1f98b;CenterPoint是Anchor‐Free的3D物体检测器&#xff0c;以点云作为输入&#xff0c;将三维物体在Bird‐View下的中心点作为关键点&#xff0c;基于关键点检测的方式回归物体的尺寸、方向和速度。相比于Anchor‐…

自动化测试框架playwright 常见问题和解决方案

自动化课程已经讲完了playwright框架&#xff0c;很多同学跃跃欲试&#xff0c;所谓实践出真知&#xff0c;这不在实践中就要到了一些问题&#xff0c;小编也给大家整理出来了&#xff0c;送个有需要的同学&#xff0c;记得点赞收藏哦~~ 01安装问题 问题描述&#xff1a; 在安…

Windows10 下通过 Visual Studio2022 编译 openssl 3.4 + POCO 1.14.1

Windows10 下通过 Visual Studio2022 编译 POCO库 1 POCO库简介2 环境准备2.1 VS Studio 2022 安装2.2 openssl 安装3 编译 POCO 1.14.13.1 下载源码3.2 修改编译配置3.2.1 修改 poco\Crypto 工程 引用 openssl 的配置3.2.2 修改 poco\NetSSL_OpenSSL 工程 引用 openssl 的配置…

厉害了多模态对齐!新思路直接发高区!小红书、国科大都在抢着发!

多模态是个非常热门的话题&#xff0c;这其中&#xff0c;“多模态对齐”已经被验证非常重要&#xff0c;它能够提升AI模型的跨模态理解和情感分析精度&#xff0c;是未来多模态大模型商业化的必要条件&#xff0c;研究热度不言而喻。 就说最近的大佬团队&#xff0c;小红书前…

ubuntu20.04安装imwheel实现鼠标滚轮调速

ubuntu20.04安装imwheel实现鼠标滚轮调速 Ubuntu 系统自带的设置中仅具备调节鼠标速度的功能&#xff0c;而无调节鼠标滚轮速度的功能。其默认的鼠标滚轮速度较为缓慢&#xff0c;在查看文档时影响尚可接受&#xff0c;但在快速浏览网页时&#xff0c;滚轮速度过慢会给用户带来…

MacOS安装MySQL

官网下载MySQL 苹果芯片选择ARM版本 安装过程中会要求你输入root的密码&#xff08;不少于8位&#xff09;&#xff0c;这里设置为12345678 打开系统设置查看是否成功安装MySQL 配置MySQL环境变量 vi ~/.zshrc加入一行export PATH$PATH:/usr/local/mysql/bin 执行source ~/…

dolphinscheduler服务注册中心源码解析(三)RPC提供者服务整合注册中心注册服务实现源码

RPC提供者服务整合注册中心注册服务实现源码 1.概述2.源码解读思路3.实现2.1.应用服务的RPC服务接口定义2.1.1.MasterServer应用中提供的RPC接口服务2.1.2.WorkerServer应用中提供的RPC接口服务2.2.应用服务的RPC服务接口实现2.2.1.MasterServer应用中提供的RPC接口服务实现类2…

Leetcode Hot 100 【二叉树】104. 二叉树的最大深度

104. 二叉树的最大深度 已解答 简单 相关标签 相关企业 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3…

WebDAV文件共享:将个人电脑变身为云存储,实现自由文件传输

WebDAV文件共享&#xff1a;将个人电脑变身为云存储&#xff0c;实现自由文件传输 引言&#xff1a;操作步骤搭建安装Internet Information Services (IIS) 管理器配置Internet Information Services (IIS) 管理器配置远程域名访问地址 引言&#xff1a; 相信很多朋友都有过把…

MySQL的分析查询语句

【图书推荐】《MySQL 9从入门到性能优化&#xff08;视频教学版&#xff09;》-CSDN博客 《MySQL 9从入门到性能优化&#xff08;视频教学版&#xff09;&#xff08;数据库技术丛书&#xff09;》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) MySQL9数据库技术_夏天又到了…

前端开发 之 12个鼠标交互特效上【附完整源码】

前端开发 之 12个鼠标交互特效上【附完整源码】 文章目录 前端开发 之 12个鼠标交互特效上【附完整源码】一&#xff1a;彩色空心爱心滑动特效1.效果展示2.HTML完整代码 二&#xff1a;彩色实心爱心滑动特效1.效果展示2.HTML完整代码 三&#xff1a;粒子连结特效1.效果展示2.HT…