MySQL表的CURD

目录

一、Create

1.1单行数据+全列插入

1.2多行数据+指定列插入

1.3插入否则更新

1.4替换

2.Retrieve

2.1 select列

2.1.1全列查询

2.1.2指定列查询

2.1.3查询字段为表达式

2.1.4为查询结果指定别名

2.1.5结果去重 

2.2where条件

2.3结果排序

2.4筛选分页结果

三、Update

四、Delete

 4.1删除数据

 4.2截断表

五、插入查询结果

六、聚合函数

七、group by子句的使用


一、Create

创建一张学生表

1.1单行数据+全列插入

1.2多行数据+指定列插入

1.3插入否则更新

  • 主键冲突
  • 唯一键冲突
  • 可疑选择性进行同步更新操作:使用ON DUPLICATE KEY UPDATE
  • -- 0 row affected: 表中有冲突数据,但冲突数据的值和 update 的值相等
    -- 1 row affected: 表中没有冲突数据,数据被插入
    -- 2 row affected: 表中有冲突数据,并且数据已经被更新
  • 使用MySQL库函数来获取受到影响的数据行数:SELECT ROW_COUNT();

1.4替换

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

2.Retrieve

创建表结构

插入数据

2.1 select列

2.1.1全列查询

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

2.1.2指定列查询

  • 指定列的顺序不需要按定义表的顺序来

2.1.3查询字段为表达式

  • 表达式不包含字段 

  • 表达式包含一个字段
  • 表达式包含多个字段

2.1.4为查询结果指定别名

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

2.1.5结果去重 

  • distinct关键字

2.2where条件

比较运算符

运算符说明
>, >=, <, <=
大于,大于等于,小于,小于等于
=
等于, NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=>
等于, NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)
!=, <>
不等于
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 个)任意字符; _ 表示任意一个字符

逻辑运算符

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

2.3结果排序

  • -- ASC 为升序(从小到大)
  • -- DESC 为降序(从大到小)
  • -- 默认为 ASC
  • SELECT ... FROM table_name [WHERE ...] ORDER BY column [ASC|DESC], [...];
  • 没有order by返回的结果是未定义的

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;

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

三、Update

  • UPDATE table_name SET column = expr [, column = expr ...] [WHERE ...] [ORDER BY ...] [LIMIT ...]
  • 对查询到的结果进行列值更新
  • 更新为具体指
  • 一次更新多个列
  • 更新值为原值基础上变更
  • 没有 WHERE 子句,则更新全表

四、Delete

 4.1删除数据

  • DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]
  • 删除“孙悟空”的数据
  •  删除整张表的数据
  • 在删除的基础上再插入一条数据,可见删除数据并不会重置auto_increment项

 4.2截断表

  • TRUNCATE [TABLE] table_name
  • 只对整张表进行操作,不能像delete一样对部分数据操作
  • 实际上不对数据进行操作,影响行数是0,所以比delete快,但是truncate在删除数据时,并不经过真正的事务,所以无法回滚
  • 会重置auto_increment项

五、插入查询结果

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

  • 案例:删除表中的的重复复记录,重复的数据只能有一份
  1. 创建一张空表 no_duplicate_table ,结构和 duplicate_table 一样
  2. duplicate_table的去重数据插入到no_duplicate_table
  3. 通过重命名表实现原子的去重操作

六、聚合函数

函数说明
COUNT([DISTINCT] expr)
返回查询到的数据的数量
SUM([DISTINCT] expr)
返回查询到的数字总和,不是数字没有意义
AVG([DISTINCT] expr)
返回查询到的数字平均值,不是数字没有意义
MAX([DISTINCT] expr)
返回查询到的数字最大值,不是数字没有意义
MIN([DISTINCT] expr)返回查询到的数字最小值,不是数字没有意义
  • 使用 * 做统计,不受 NULL 影响
  •  
  • 使用表达式做统计
  • NULL 不会计入结果
  • COUNT(math)统计的是全部的数学成绩
  • 统计去重的数学成绩个数
  • 统计数学成绩总分
  • 配合where条件使用
  • 统计平均分
  • 返回英语最高分
  • 返回>70以上数学的最低分

七、group by子句的使用

  • select 中使用 group by 子句可以对指定列进行分组查询
  • 案例
  • 显示每个部门的平均工资和最高工资: select deptno,avg(sal),max(sal) from EMP group by deptno;
  • 显示每个部门的每种岗位的最低工资和平均工资:select avg(sal),min(sal),job, deptno from EMP group by deptno, job;
  • 显示平均工资低于2000的部门和它的平均工资
  1. 统计各个部门的平均工资: select avg(sal) from EMP group by deptno
  2. having搭配group by使用,对group by的查询结果进行筛选: select avg(sal) as myavg from EMP group by deptno having myavg<2000;
  3. --having 经常和 group by 搭配使用,作用是对分组进行筛选,作用有些像 where

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何优化垃圾回收机制?

垃圾回收机制 掌握 GC 算法之前&#xff0c;我们需要先弄清楚 3 个问题。第一&#xff0c;回收发生在哪里&#xff1f;第二&#xff0c;对象在 什么时候可以被回收&#xff1f;第三&#xff0c;如何回收这些对象&#xff1f; 回收发生在哪里&#xff1f; JVM 的内存区域中&…

基于SpringBoot的体检预约管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

PostgreSQL / PostGIS:创建地理要素

PostGIS详细教程可以参考官方文档&#xff1a;https://postgis.net/workshops/zh_Hans/postgis-intro/&#xff0c;并且官方文档提供了练习数据、教程、PPT版本教程。我这里参考QGIS文档中关于PostGIS的教程进行学习。 PostGIS 可以被认为是一组数据库内函数的集合&#xff0c…

embeddingbag词袋

文章目录 1. embeddingbag2. pytorch 1. embeddingbag 词袋embeddingbag 是在embedding词表的基础上演变起来的,nn.embedding的作用是构建一个词表&#xff0c;通过输入index序号来索引词对应的词向量&#xff0c;是可以根据词索引index进行forward计算的&#xff0c;embeddin…

分享|通过Self-Instruct框架将语言模型与自生成指令对齐

结论 在大型 “指令调整” 语言模型依赖的人类编写指令数据存在数量、多样性和创造性局限&#xff0c; 从而阻碍模型通用性的背景下&#xff0c; Self - Instruct 框架&#xff0c; 通过 自动生成 并 筛选指令数据 微调预训练语言模型&#xff0c; 有效提升了其指令遵循能…

无穿戴动捕数字人互动方案 展馆展览创新引擎,推动文旅数字化转型

随着经济社会的发展和文旅融合的加速推进&#xff0c;“博物馆热”已成为一种不可忽视的社会现象&#xff0c;成为文化领域最具潜力的增长点之一。在信息技术的迅猛推动下&#xff0c;科技赋能的博物馆展览日益受到公众的关注&#xff0c;其中&#xff0c;“元宇宙”等创新概念…

5.6 Mybatis代码生成器Mybatis Generator (MBG)实战详解

文章目录 前言一、Mybatis Generator简介二、Maven插件运行方式三、生成配置 generatorConfig.xml MyBatis3Simple风格MyBatis3风格MyBatis3DynamicSql风格 四、Java代码运行方式五、MGB生成全部表六、增加Ext包七、Git提交总结 前言 本文我们主要实战Mybatis官方的代码生成器…

C++六大默认成员函数

C六大默认成员函数 默认构造函数默认析构函数RAII技术RAII的核心思想优点示例应用场景 默认拷贝构造深拷贝和浅拷贝 默认拷贝赋值运算符移动构造函数&#xff08;C11起&#xff09;默认移动赋值运算符&#xff08;C11起&#xff09;取地址及const取地址操作符重载取地址操作符重…

Ext文件系统

文件内容属性 被打开的文件在内存中&#xff0c;没有被打开的文件在磁盘里文件系统的工作就是根据路径帮我们找到在磁盘上的文件 磁盘&#xff08;硬件&#xff09; 磁盘的存储结构 磁头在传动臂的运动下共同进退&#xff0c;向磁盘写入的时候是向柱面批量写入的 OS文件系统访…

AURIX TC275学习笔记3 官方例程 (UART LED WDT)

文章目录 参考资料1. ASCLIN_UART_12. GPIO_LED_Button_13. WDT (Watch Dog Timer) 参考资料 AURIX TC275学习笔记1 资料收集Getting Started with AURIX™ Development Studio 官方帮助文档happy hacking for TC275! 硬件平台使用AURIX™ TC275 Lite 套件&#xff0c;按照参…

免费接入DeepSeek等多种大模型

核心代码 import cn.hutool.core.collection.CollUtil; import com.tool4j.pasteshare.entity.params.AiParams; import com.tool4j.pasteshare.entity.params.Message; import com.tool4j.pasteshare.service.AiCompletionService; import com.tool4j.pasteshare.util.deepse…

PostIn简明安装教程(入门级)

PostIn是一款开源免费的接口管理工具&#xff0c;包含接口调试、接口文档设计、数据MOCK等模块&#xff0c;本文将介绍如何快速安装配置&#xff0c;以快速入门上手。 1、服务端安装 私有部署版本支持多种操作系统&#xff0c;包括 Linux、Docker、Windows及macOS&#xff0c;…

java Fx进阶操作

1.java Fx基本介绍 JavaFX是用于构建富互联网应用程序的Java库。 使用此库编写的应用程序可以跨多个平台一致运行。 使用JavaFX开发的应用程序可以在各种设备上运行&#xff0c;如台式计算机&#xff0c;手机&#xff0c;电视&#xff0c;平板电脑等。 要使用Java编程语言开…

java-重载与重写

介绍 在 Java 中&#xff0c;重载&#xff08;Overloading&#xff09; 和 重写&#xff08;Overriding&#xff09; 是两个重要的概念&#xff0c;它们都与方法有关&#xff0c;但它们的应用场景和行为完全不同。 通过理解重载和重写的区别&#xff0c;可以更好地设计类的继承…

数据库系统概念第六版记录 一

1.关系型数据库 关系型数据库&#xff08;Relational Database&#xff0c;简称 RDB&#xff09;是基于关系模型的一种数据库&#xff0c;它通过表格的形式来组织和存储数据。每个表由若干行&#xff08;记录&#xff09;和列&#xff08;字段&#xff09;组成&#xff0c;数据…

嵌入式工程师必学(143):模拟信号链基础

概述: 我们每天使用的许多电子设备,以及我们赖以生存的电子设备,如果不使用电子工程师设计的实际输入信号,就无法运行。 模拟信号链由四个主要元件组成:传感器、放大器、滤波器和模数转换器 (ADC)。这些传感器用于检测、调节模拟信号并将其转换为适合由微控制器或其他数…

2.5学习

misc buuctf-假如给我三天光明 下载附件后得到了一个压缩包和一个图片&#xff0c;压缩包为加密压缩包&#xff0c;需要解出密码&#xff0c;然后注意到这个图片并非简单的一个封面&#xff0c;在下方还有诸多点&#xff0c;有黑有灰。经过搜索&#xff0c;发现这是盲文通过与…

嵌入式八股文面试题(一)C语言部分

1. 变量/函数的声明和定义的区别&#xff1f; &#xff08;1&#xff09;变量 定义不仅告知编译器变量的类型和名字&#xff0c;还会分配内存空间。 int x 10; // 定义并初始化x int x; //同样是定义 声明只是告诉编译器变量的名字和类型&#xff0c;但并不为它分配内存空间…

设备通过国标GB28181接入EasyCVR,显示在线但视频无法播放的原因排查

安防监控EasyCVR平台支持多种视频源接入&#xff0c;包括但不限于IP摄像头、NVR、编码器、流媒体服务器等。平台采用高效的视频流接入技术&#xff0c;支持大规模视频流的并发接入&#xff0c;确保视频流的稳定性和流畅性。 有用户反馈&#xff0c;项目现场使用国标GB28181接入…

Electricity Market Optimization 探索系列(三)

本文参考链接link 电网容量规划是一个寻求最优发电容量的过程&#xff0c;找到的最优发电容量能够可靠地满足未来电网的需求 发电机的容量和发电成本呈正相关关系&#xff0c;一台发电机的发电量不能超过其额定发电容量&#xff0c;结合我之前的博客所说的内容&#xff0c;可…