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

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细致内容,早关注不迷路。

相关文章:

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

绪论​ 每日激励&#xff1a;挫折是会让我们变得越来越强大的重点是我们敢于积极的面对它。—Jack叔叔 绪论​&#xff1a; 本章是表操作的进阶篇章&#xff08;没看过入门的这里是传送门&#xff0c;本章将带你进阶的去学习表的插入insert和查找select&#xff0c;本质也就是…...

从百度云网盘下载数据到矩池云网盘或者服务器内

本教程教大家如何快速将百度云网盘数据集或者模型代码文件下载到矩池云网盘或者服务器硬盘上。 本教程使用到了一个开源工具 BaiduPCS-Go&#xff0c;官方地址 &#xff1a; https://github.com/qjfoidnh/BaiduPCS-Go 这个工具可以实现“仿 Linux shell 文件处理命令的百度网…...

Vue.js 高级组件开发:抽象与高性能架构

Vue.js 高级组件开发&#xff1a;抽象与高性能架构 引言一、动态组件与依赖注入1. 动态组件场景 二、高可扩展性的抽象组件模式1. 设计思路2. 案例&#xff1a;抽象数据表组件 三、复杂场景下的异步操作管理1. 使用 Vue Composition API 管理异步逻辑 四、渲染优化与框架底层钩…...

Kubernetes 安装 Nginx以及配置自动补全

部署 Nginx &#xff1a; [rootk8s-master ~]# kubectl create deployment nginx --imagenginx:1.14-alpine deployment.apps/nginx created暴露端口&#xff1a; [rootk8s-master ~]# kubectl expose deployment nginx --port80 --typeNodePort service/nginx exposed查看服…...

CSS---实现盒元素div内input/textarea的focus状态时给父元素加属性!

注意兼容性&#xff0c;低版本浏览器无效 要实现当 textarea 文本框获得焦点时&#xff0c;自动给其父元素添加类名或样式&#xff0c;您可以使用 CSS 的 :focus-within 伪类选择器。这个选择器会在元素本身或其任何子元素获得焦点时应用样式。 示例代码 假设您有以下 HTML 结…...

jmeter设置tps、响应时间监测时间间隔

jmeter设置tps、响应时间监测时间间隔 思路&#xff1a; 1、设置tps和响应时间插件的采集时间间隔&#xff0c;然后运行jmeter脚本&#xff1b; 2、先按默认配置跑出jtl文件保存下来&#xff0c;再添加tps和响应时间插件&#xff0c;设置采集时间间隔后&#xff0c;导入jtl文件…...

WPSJS:让 WPS 办公与 JavaScript 完美联动

随着办公自动化需求的日益增长&#xff0c;WPS Office 推出了 WPSJS&#xff0c;这是一款强大的开发者工具&#xff0c;允许开发者通过 JavaScript 脚本与 WPS 办公软件进行互动。无论是在表格中自动填充数据、在文档中修改格式&#xff0c;还是在演示文稿中插入动态内容&#…...

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

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

taiwindcss

1.安装 npm install -D tailwindcss postcss autoprefixer npx tailwindcss init 这会创建一个 tailwind.config.js 文件。注意&#xff1a;一定通过px tailwindcss init方式创建 2.tailwind.config.js module.exports {content: [./index.html,./src/**/*.{js,ts,jsx,ts…...

信号的时域截断——频谱泄漏——光晕效应

在时域信号中&#xff0c;如果对一个包含不连续点的信号进行截断&#xff0c;即使用有限个样本点来表示原本无限长或更长的信号&#xff0c;那么在频域中这相当于对信号进行了乘以一个矩形窗的操作。这种操作会导致原信号频谱与矩形窗的频谱卷积&#xff0c;从而在频域中引入额…...

【Linux编程】TcpServer 类的设计与实现:构建高性能的 TCP 服务器(二)

TcpServer 类的设计与实现&#xff1a;构建高性能的 TCP 服务器 在现代网络编程中&#xff0c;构建一个高效、稳定的 TCP 服务器是许多网络应用的基础。本文将详细介绍一个基于 C 的 TcpServer 类的设计与实现&#xff0c;该类提供了创建 TCP 服务器、处理客户端连接、数据传输…...

Mono里运行C#脚本8—mono_image_storage_open打开EXE文件

Mono里运行C#脚本8—mono_image_storage_open打开EXE文件 前面分析哈希表的实现,以及文件打开的底层函数,还有保存到HASH表里的数据结构。 static MonoImageStorage * mono_image_storage_open (const char *fname) { char *key = NULL; key = mono_path_resolve_symlinks…...

XMLHttpRequest的基础知识

get请求 const xml new XMLHttpRequest(); xml.open("GET", "https://jsonplaceholder.typicode.com/todos/1", true); xml.onreadystatechange function () {if (xml.readyState 4 && xml.status 200) {console.log(xml.responseText);} }…...

力扣矩阵-算法模版总结

lc-73.矩阵置零-(时隔14天)-12.27 思路&#xff1a;(23min22s) 1.直接遍历遇0将行列设0肯定不行&#xff0c;会影响后续判断&#xff0c;题目又要求原地算法&#xff0c;那么进一步考虑是否可以将元素为0&#xff0c;其行列需要设为0的位置给存储下来&#xff0c;最后再遍历根据…...

如何在短时间内读懂复杂的英文文献?

当我们拿起一篇文献开始阅读时&#xff0c;就像是打开了一扇通往未知世界的大门。但别急着一头扎进去&#xff0c;咱们得像个侦探一样&#xff0c;带着疑问去探险。毕竟&#xff0c;知识的海洋深不可测&#xff0c;不带点“装备”怎么行&#xff1f;今天就聊聊&#xff0c;平时…...

基于aspose.words组件的word bytes转pdf bytes,去除水印和解决linux中文乱码问题

详情见 https://preferdoor.top/archives/ji-yu-aspose.wordszu-jian-de-word-byteszhuan-pdf-bytes...

Bert中文文本分类

这是一个经典的文本分类问题&#xff0c;使用google的预训练模型BERT中文版bert-base-chinese来做中文文本分类。可以先在Huggingface上下载预训练模型备用。https://huggingface.co/google-bert/bert-base-chinese/tree/main 我使用的训练环境是 pip install torch2.0.0; pi…...

【深度学习】Java DL4J基于 CNN 构建车辆识别与跟踪模型

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…...

【C#】C#打印当前时间以及TimeSpan()介绍

1. C#打印当前时间 string currentDate DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");Console.WriteLine(currentDate);2. TimeSpan()介绍 TimeSpan(long ticks)的单位是100ns //500ms new TimeSpan(10*1000*500);参考&#xff1a; C#-TimeSpan-计算时间差...

【Linux 网络 (五)】Tcp/Udp协议

Linux 网络 一前言二、Udp协议1&#xff09;、Udp协议特点2&#xff09;、Udp协议格式3&#xff09;、Udp报文封装和解包过程4&#xff09;、UDP的缓冲区 三、TCP协议1&#xff09;、TCP协议特点2&#xff09;、TCP协议格式1、4位首部长度、源端口、目的端口2、16位窗口大小3、…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...

起重机起升机构的安全装置有哪些?

起重机起升机构的安全装置是保障吊装作业安全的关键部件&#xff0c;主要用于防止超载、失控、断绳等危险情况。以下是常见的安全装置及其功能和原理&#xff1a; 一、超载保护装置&#xff08;核心安全装置&#xff09; 1. 起重量限制器 功能&#xff1a;实时监测起升载荷&a…...

用 FFmpeg 实现 RTMP 推流直播

RTMP&#xff08;Real-Time Messaging Protocol&#xff09; 是直播行业中常用的传输协议。 一般来说&#xff0c;直播服务商会给你&#xff1a; ✅ 一个 RTMP 推流地址&#xff08;你推视频上去&#xff09; ✅ 一个 HLS 或 FLV 拉流地址&#xff08;观众观看用&#xff09;…...