MySQL - 第6节 - MySQL表的增删查改

news2024/9/28 13:29:19

1.MySQL表的增删查改概述

• 表的增删查改简称CRUD:Create(新增),Retrieve(查找),Update(修改),Delete(删除)。

• CRUD的操作对象是对表当中的数据,是典型的DML(Data Manipulation Language)数据操作语言。


2.Create 新增数据

2.1.insert命令 

新增数据的insert命令如下:

INSERT [INTO] table_name [(column1 [, column2] ...)] VALUES (value_list1) [, (value_list2)] ...;

说明一下:

• SQL中大写的表示关键字,[ ]中代表的是可选项。
• SQL中的每个value_list都表示插入的一条记录,每个value_list都由若干待插入的列值组成。
• SQL中的column列表,用于指定每个value_list中的各个列值应该插入到表中的哪一列。

为了进行演示,下面创建一个学生表,表当中包含自增长的主键id、学号、姓名和QQ号。如下:

创建表完毕后查看表结构,可以看到表结构如下:

2.2.单行数据+全列插入

单行数据 + 全列插入:

下面使用insert语句向学生表中插入记录,每次向表中插入一条记录,并且插入记录时不指定column列表,表示按照表中默认的列顺序进行全列插入,因此插入的每条记录中的列值需要按表列顺序依次列出。如下:

2.3.多行数据+指定列插入

多行数据 + 指定列插入:

使用insert语句也可以一次向表中插入多条记录,插入的多条记录之间使用逗号隔开,并且插入记录时可以只指定某些列进行插入。如下:

注:在插入记录时,只有允许为空的列或自增长字段可以不指定值插入,不允许为空的列必须指定值插入,否则会报错。

2.4.插入否则更新

插入否则更新的使用场景:

向表中插入记录时,如果待插入记录中的主键或唯一键已经存在,那么就会因为主键冲突或唯一键冲突导致插入失败。如下:

这时可以选择性的进行同步更新操作:

• 如果表中没有冲突数据,则直接插入数据。

• 如果表中有冲突数据,则将表中的数据进行更新。

插入否则更新的SQL如下:

INSERT ... ON DUPLICATE UPDATE column1=value1 [, column2=value2] ...;

说明一下:

• SQL中大写的表示关键字,[ ]中代表的是可选项。
• SQL中INSERT之后语法与之前的INSERT语句相同。
• UPDATE后面的column=value,表示当插入记录出现冲突时需要更新的列值。

插入否则更新:

比如向学生表中插入记录时,如果没有出现主键冲突则直接插入记录,如果出现了主键冲突,则将表中冲突记录的学号和姓名进行更新。如下:

执行插入否则更新的SQL后,可以通过受影响的数据行数来判断本次数据的插入情况:

• 0 rows affected:表中有冲突数据,但冲突数据的值和指定更新的值相同(要更新的数据和原本的数据相同)。
• 1 row affected:表中没有冲突数据,数据直接被插入。
• 2 rows affected:表中有冲突数据,并且数据已经被更新。

2.5.替换数据

替换数据:

• 如果表中没有冲突数据,则直接插入数据。

• 如果表中有冲突数据,则先将表中的冲突数据删除,然后再插入数据。

要达到上述效果,只需要在插入数据时将SQL语句中的INSERT改为REPLACE即可。比如:

执行替换数据的SQL后,也可以通过受影响的数据行数来判断本次数据的插入情况:

• 1 row affected:表中没有冲突数据,数据直接被插入。

• 2 rows affected:表中有冲突数据,冲突数据被删除后重新插入。


3.Retrieve 查找数据

3.1.select命令

查找数据的SQL如下:

SELECT [DISTINCT] {* | {column1 [, column2] ...}} FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...];

说明一下:

• SQL中大写的表示关键字,[ ]中代表的是可选项。

• { }中的 | 代表可以选择左侧的语句或右侧的语句。

为了进行演示,下面创建一个成绩表,表当中包含自增长的主键id、姓名以及该同学的语文成绩、数学成绩和英语成绩。如下:

创建表完毕后查看表结构,可以看到表结构如下:

接下来向表中插入几条测试记录,以供我们进行查找。如下:


4.Update 修改数据


5.Delete 删除数据


6.插入查询结果


7.聚合函数


8.分组查询

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

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

相关文章

抖音小店有哪些常见扣分原因?如何避免在抖音小店中被扣分?

抖音小店现在已经成为了很多商家的首选电商平台,但是在使用抖音小店的过程中,也会出现一些扣分的情况。接下来,四川不若与众将为大家介绍抖音小店扣分的原因和避免办法。 一、抖音小店扣分原因 1. 服务不到位:商家没有及时回复用户…

2023-01-06 VMWare桥接网络配置.md

VMWare16 桥接网络配置 一 环境清单 VMWare 16虚拟机:Centos7宿主机:Windows 10 二 配置过程 查看宿主机的IP相关信息 ipconfig -all 配置虚拟网络编辑器 2.1 打开VMware Workstation Pro,点击左上角编辑-->虚拟网络编辑器 2.2 点击更改配…

CRM商机管理:提升客户体验和销售效率

如何利用CRM系统提升商机管理? 花点时间思考一下你的企业管理商机的方法,是否有以下情况: ● 不知道渠道中的商机是否可行。 ● 不知道应该关注哪些商机。 ● 花了几个小时或几天的时间来跟进商机。 ● 不知道赢得商机与失去商机的比例。 如…

【Kafka】Suppressed: java.nio.file.AccessDeniedException问题的解决

【Kafka】Suppressed: java.nio.file.AccessDeniedException问题的解决 目录 前言 一、错误发生的原因 二、问题如何解决 前言 今天在运行kafka时,出现了如下图的报错Suppressed: java.nio.file.AccessDeniedException,怎么启动也启动不起来。那此问…

C/C++的命令执行分析

背景 最近发现一个命令执行风险; 一开始提供修复建议,是对特殊字符进行过滤,但是业务侧没有办法过滤,因为输入点是没有办法限制的,然后提供另一个方案是将用户的输入写到配置文件中,然后再进行操作&#x…

LeetCode24. 两两交换链表中的节点+19. 删除链表的倒数第 N 个结点

24. 两两交换链表中的节点 题目描述: 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 输入:head [1…

蓝牙 - 抓包工具BPA600介绍

BPA 600开箱后,先把天线(antenna)装在后面的SMA接口上。 SMA connectors: SMA(SubMiniature version A)连接器是在20世纪60年代开发的半精密同轴射频连接器,是一种用于同轴电缆的最小连接器接口,具有螺旋式耦合机制。…

复旦大学高校专区入驻飞桨AI Studio,优质教育资源等你来学!

近日,复旦大学高校专区在飞桨人工智能学习与实训社区AI Studio上线,双方将携手搭建人工智能教学实训平台专区,汇集优质教学实训资源,校企共同培育复合型 AI 人才,为国家输送高质量人才,促进国家智能化进程。…

【机器学习】Kullback-Leibler散度实现数据监控

https://en.wikipedia.org/wiki/Kullback%E2%80%93Leibler_divergence 一、说明 本篇叙述了KL 散度的数学、直觉和如何实际使用;以及它如何最好地用于过程监测。Kullback-Leibler 散度度量(相对熵)是信息论中的一种统计测量方法,通…

深入理解Dockerfile

一、是什么 Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。把镜像比喻成一个软件那么DockerFile就相当于是软件的配置文件。具体的内容可参考[官方网站](Dockerfile reference | Docker Documentation。 二、能做什么 通…

密码学中的SM2

目录 概述 功能 密钥生成 基点G的生成 模数p 密钥生成过程 加解密 加密过程: 解密过程: 数字签名 概述 对第5步r的计算方式分析 对第6步s的计算方式分析 加密模式 优缺点 论文和研究方向推荐 论文 研究方向 概述 SM2是中国密码学算法…

qt 时间编程之时钟

这里写目录标题 开启time格式自动 QTIM打点 qtime qt的时间类 qtimer qt的定时类 头文件包含以及定义 #include<QTime> #include<QTimer>QTime * time; QTimer * timer;开启 右键槽 timer start&#xff08;50&#xff09; 到达50毫米的时候会触发 time out信号…

Unreal 5 实现场景环境控制组件

我在场景中发现了一个环境控制器&#xff0c;这个场景实现了雨天天气和晴天风沙天气&#xff0c;接下来我分析一下这个天气控制器是如何实现。 实现流程&#xff1a; 将环境控制器拖入场景&#xff0c;在配置项上面设置相应的雾&#xff0c;主光源&#xff0c;天空光。在环境控…

Spring Cloud Alibaba-全链路灰度设计

文章目录 灰度发布概念灰度发布架构Spring Cloud Alibaba技术架构下的灰度发布实现基础设计HttpHeader设计 Spring Cloud Gateway改造Spring Cloud Gateway实现灰度发布过滤器 自定义Loadbalancer微服务注册元信息修改自定义LoadBalancer使用 测试代码放到了github上[地址]() 灰…

STM32F4_CAN详解

目录 1. CAN简介 2. CAN协议的物理层 2.1 CAN协议中的差分信号 3. CAN协议的协议层 3.1 CAN的报文种类及结构 4. STM32的CAN外设 4.1 CAN框图 5. CAN相关结构体 6. CAN相关寄存器 7. 硬件设计 7.1 TJA1050芯片 8. 库函数配置CAN初始化 9. 实验代码 9.1 main.c 9…

SpringBoot问题-----------可以同时处理多少个请求

SpringBoot之可以同时处理多少个请求 SpringBoot的运行方式springBoot中tomcat的位置最小、最多工作线程数最大连接数等待数 SpringBoot的运行方式 SpringBoot项目中内嵌了tomcat 程序的运行就是通过tomcat来实现的&#xff1b;springBoot可以同时处理多少个请求其实就是在说 …

图像生成—使用GANs给出代码示例

文章目录 图像生成简单介绍—使用GANs给出代码示例1. 什么是生成对抗网络&#xff08;GANs&#xff09;2. 准备数据集3. 构建生成器和判别器4. 训练GAN模型5. 生成新图像6. 总结 图像生成简单介绍—使用GANs给出代码示例 图像生成是指使用计算机算法生成图像的过程。这些图像可…

C++ | 多线程使用vector

多线程使用vector 文章目录 多线程使用vector场景描述原因分析解决代码测试不扩容和提前扩容 size 与 capacity 变化欢迎关注公众号【三戒纪元】 场景描述 最近在看代码优化&#xff0c;看到有这样的代码&#xff1a; std::vector<int> valid_indices;void SimbaSegmen…

APP测试面试题快问快答(五)

21. App自动化你用的什么工具&#xff1f; 框架&#xff1a;Appium 编译环境和工具&#xff1a;python3.7和PyCharm 环境&#xff1a;Android sdk 第三方模拟器&#xff1a;夜神、蓝叠等模拟器 定位工具&#xff1a;uiautomatorviewer 实时日志查看&#xff1a;ddms 22.…

Tapdata 重磅更新已就绪!全托管云服务上线,应用场景再扩展

继 5 月举办的 「连接 1 次孤岛&#xff0c;服务 N 个场景」主题产品发布会后&#xff0c;Tapdata Live Data Platform 现已实现功能特性的全面升级&#xff0c;并基于自身产品能力积极探索在应用场景层面的落地实践及无限可能。 在去年 6 月的 Tapdata 2.0 发布会上&#xff…