【MySql】数据库的CRUD(增删查改)

写在最前面的话

        哈喽,宝子们,今天给大家带来的是MySql数据库的CRUD(增删改查),CRUD是数据库非常基础的部分,也是后端开发日常工作中最主要的一项工作,接下来让我们一起进入学习吧,感谢大家的支持!喜欢的话可以三连哦~~~

目录

 一、新增(Create)

1、普通插入

2、指定列插入

​3、多行插入

4、拓展知识

二、查询(Retrieve)

1、全列查询

2、指定列查询

3、查询字段为表达式

4、别名

5、去重(DISTINCT)

6、排序(ORDER BY)

针对表达式进行排序

指定多个列进行排序

7、条件查询(WHERE)

比较运算符

逻辑运算符

学习案例

基本查询

AND与OR查询

范围查询

模糊查询

8、分页查询:LIMIT

三、修改(Update) 

1、单列修改 

2、多列修改

四、删除(Delete)


 一、新增(Create)

1、普通插入

语法:

insert into 表名 values(值,值...);--此处的值要与列的个数与类型匹配

执行上述SQL语句后,运行结果如下所示: 

 2、指定列插入

语法:

insert into 表名(列名,列名...) values(值,值...);

执行上述SQL语句后,运行结果如下所示: 

3、多行插入

语法:

insert into 表名 values(值,值...),(值,值...),...;

 执行上述SQL语句后,运行结果如下所示: 

 

        当多行需要数据插入的时候,多行插入相比于单行插入在速度上要快上许多,为什么这么说呢?因为我们mysql是一个客户端服务器结构的程序,当三行数据执行单行插入的时候就进行了三次网络交互,但是当三行数据执行多行插入的时候只进行了一次网络交互,因此多行插入速度更快。

三次网络交互:

一次网络交互:

4、拓展知识

时间日期如何插入? (以datetime类型为例)

二、查询(Retrieve)

先构造一张数据表:

-- 创建考试成绩表
DROP TABLE IF EXISTS exam_result;
CREATE TABLE exam_result (id INT,name VARCHAR(20),chinese DECIMAL(3,1),math DECIMAL(3,1),english DECIMAL(3,1)
);-- 插入测试数据
INSERT INTO exam_result (id,name, chinese, math, english) VALUES(1,'唐三藏', 67, 98, 56),(2,'孙悟空', 87.5, 78, 77),(3,'猪悟能', 88, 98, 90),(4,'曹孟德', 82, 84, 67),(5,'刘玄德', 55.5, 85, 45),(6,'孙权', 70, 73, 78.5),(7,'宋公明', 75, 65, 30);

1、全列查询

把表中所有的行和列都查询出来。

语法:

selecr * from 表名--*表示“通配符”,可以代指所有的列

 执行上述SQL语句后,运行结果如下所示: 

 2、指定列查询

一个表的列数可能是非常多的,某个场景的操作下,只需要关注其中几个列

语法:

select 列名,列名... from 表名;

  执行上述SQL语句后,运行结果如下所示: 

3、查询字段为表达式

        一边查询,一边进行计算。在查询的时候写做由列名构成的表达式,把这一列中所有的行都代入到表达式中参与运算(此处运算数据是临时数据)。

例如:想查询所有同学数学成绩都-10分的效果

select name,math-10 from exam_result;

 执行上述SQL语句后,运行结果如下所示: 

 

 例如:计算每个同学的总成绩

select name,chinese+math+english from exam_result;

 执行上述SQL语句后,运行结果如下所示: 

 

 综上,SQL在查询的时候,可以进行一些简单的统计操作。 

 4、别名

查询的时候给列/表达式指定别名(也可以给表指定别名)。

语法:

select 表达式 as 别名 from 表名 (as 别名);

  执行上述SQL语句后,运行结果如下所示: 

 5、去重(DISTINCT)

引用distinct修饰某个列/多个列,值相同的行只保留一个。

用例:

--去重前:
select  name,distinct math from exam_result;
--去重后:
select distinct name,distinct math from exam_result;

 执行上述SQL语句后,运行结果如下所示: 

 6、排序(ORDER BY)

查询的时候使用order by修饰列把行进行排序。

语法:

select 列名 from 表名 order by 列名 asc/desc;

注意:asc为升序,desc为降序,默认升序。

执行上述SQL语句后,运行结果如下所示: 

针对表达式进行排序
select name,chinese+math+english as total from exam_result order by total asc;

 执行上述SQL语句后,运行结果如下所示: 

 指定多个列进行排序
select * from exam_result order by math,chinese asc;

  执行上述SQL语句后,运行结果如下所示: 

order by指定的列,如果你select的时候没有把这一列查出来,也不影响使用排序

测试用例:

select name,math from exam_result order by chinese asc;

 执行上述SQL语句后,运行结果如下所示: 

修改测试用例:

select name,math,chinese from exam_result order by chinese asc;

执行上述SQL语句后,运行结果如下所示: 

 7、条件查询(WHERE)

指定具体条件,按照条件针对数据进行筛选。

语法:

select 列名 from 表名 where 条件;

筛选条件一般通过运算符来组成。

比较运算符
运算符说明
>,>=,<,<=大于,大于等于,小于,小于等于
=        比较相等,SQL没有“==”,NULL不安全。例如NULL=NULL 结果是NULL
<=>比较相等,NULL安全,例如NULL<=>NULL的结果是TRUE(1)
!=,<>不等于
BETWEEN a0 AND a1范围匹配,[a0,a1],如果a0<=value<=a1,返回TRUE(1)
IN(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)
学习案例
  • 基本查询

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

select name,english from exam_result where english<60;

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

select name,chinese,english from exam_result where chinese>english;

查询总分在 200 分以下的同学

select name,chinese+math+english 
from exam_result 
where chinese+math+english<200;
  • AND与OR查询

查询语文成绩大于80分,且英语成绩大于80分的同学

select name,chinese,english from exam_result where chinese>80 and english>80;

查询语文成绩大于80分,或英语成绩大于80分的同学

select name,chinese,english from exam_result where chinese>80 or english>80;
  • 范围查询

BETWEEN ... AND...

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

select name,chinese from exam_result where chinese between 80 and 90;

使用AND也可以实现

select name,chinese 
from exam_result 
where chinese >= 80 and chinese <=90;

IN

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

select name,math from exam_result where math in(58,59,98,99);

使用 OR 也可以实现

select name,math 
from exam_result
where math=58 or math=59 or math=98 math=99;
  • 模糊查询
  1. 孙%:查询以孙开头的

  2. %孙:查询以孙结尾的

  3. %孙%:查询包含孙的

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

select name from exam_result where name like '孙%';

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

select name from exam_result where name like '孙_';

8、分页查询:LIMIT

        其实使用select*这种方式查询是比较危险的,那么日常工作中我们如果需要保证一次查询,并且查询出来的数据准确的话,我们需要使用 分页查询,limit可以限制当前查询最多能查看几个结果。

用例:

select * from exam_result limit 3;

 执行上述SQL语句后,运行结果如下所示: 

此时显示出前三条,那么如果需要查看下面记录怎么显示,使用offset 偏移量 即可。

 用例:

select * from exam_result limit 3 offset 3;

 执行上述SQL语句后,运行结果如下所示:  

三、修改(Update) 

  语法:

update 表名 set 列名 = 值 ... (where 条件);
--此处的where限制具体要修改哪些数据

1、单列修改 

用例:

将孙悟空同学的数学成绩变更为 80 分

update exam_result set math=60 where name='孙悟空';

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

update exam_result set math=math+5 order by chinese+math+english limit 3;

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

update exam_result set chinese = chinese*0.5;--update后面不加条件就是全列修改

 2、多列修改

用例:

将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分

update exam_result set math=60,chinese=70 where name='曹孟德';

将孙悟空同学的英语成绩变为原来的0.8倍,语文成绩变为原来的0.5倍

update exam_result 
set english = english*0.8,chinese = chinese*0.5 
where name = '孙悟空';

四、删除(Delete)

语法:

delete from 表名 (where 条件/order by/limit);
--根据括号内条件把符合的数据从表中删掉

用例:

删除孙悟空同学的考试成绩

delete from exam_result where name = '孙悟空';

删除整表数据

delete from exam_result;

拓展知识:这里的删除表delete和drop table不一样,前者只是删除表里的数据,表还在,后者则是把表的数据与表一起删除。


        希望各位读者阅读后都能有所收获,如果喜欢本篇博客的可以点赞+关注+收藏!!!同时也欢迎各位大神如果在阅读过程中发现文章有错误也可私信指正错误,我们下一篇博客再见~~~

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

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

相关文章

多功能透明屏,在智能家居领域中,有哪些功能特点?显示、连接

多功能透明屏是一种新型的显示技术&#xff0c;它能够在透明的表面上显示图像和视频&#xff0c;并且具有多种功能。 这种屏幕可以应用于各种领域&#xff0c;如商业广告、智能家居、教育等&#xff0c;为用户提供更加便捷和多样化的体验。 首先&#xff0c;多功能透明屏可以…

DockerCompose部署es和kibana

DockerCompose文件 version: 3.1 services:elasticsearch:image: elasticsearch:7.13.3container_name: elasticsearchprivileged: trueports:- "9200:9200"- "9300:9300"environment:- ES_JAVA_OPTS-Xms128m -Xmx1024m #设置使用jvm内存大小- cluster.na…

【牛客刷题】bfs和dfs (二叉树层序遍历、矩阵最长递增路径、被围绕的区域)

二叉树层序遍历 vector<vector<int> > levelOrder(TreeNode* root) {// write code herevector<int> res;vector<vector<int>> result;if (root nullptr) return result;queue<TreeNode*> que;que.push(root);while (!que.empty()) {int …

算法专题:前缀和

文章目录 Acwing&#xff1a;前缀和示例2845.统计趣味子数组的数目思路容易理解的写法&#xff1a;前缀和两层循环存在问题&#xff1a;超时 优化写法&#xff1a;两数之和思路&#xff0c;转换为哈希表 前缀和&#xff0c;就是求数组中某一段的所有元素的和。 求子数组中某一…

【C++基础】类与对象(中):默认成员函数、构造函数、析构函数、拷贝构造、赋值重载函数……

​&#x1f47b;内容专栏&#xff1a; C/C编程 &#x1f428;本文概括&#xff1a; C基础语法。六大默认构造函数简介、构造函数、析构函数、拷贝构造函数、赋值重载函数、const成员函数、取地址重载等。 &#x1f43c;本文作者&#xff1a; 阿四啊 &#x1f438;发布时间&…

K8S:kubeadm搭建K8S+Harbor 私有仓库

文章目录 一.部署规划1.主机规划2.部署流程 二.kubeadm搭建K8S1.环境准备2.安装docker3. 安装kubeadm&#xff0c;kubelet和kubectl4.部署K8S集群&#xff08;1&#xff09;初始化&#xff08;2&#xff09;部署网络插件flannel&#xff08;3&#xff09;创建 pod 资源 5.部署 …

网络编程套接字,Linux下实现echo服务器和客户端

目录 1、一些网络中的名词 1.1 IP地址 1.2 端口号port 1.3 "端口号" 和 "进程ID" 1.4 初始TCP协议 1.5 UDP协议 2、socket编程接口 2.1 socket 常见API 2.2 sockaddr结构 3、简单的网络程序 3.1 udp实现echo服务器和客户端 3.1.1 echo服务器实…

C++ 数组

C 数组 C 支持数组数据结构&#xff0c;它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据&#xff0c;但它往往被认为是一系列相同类型的变量。 数组的声明并不是声明一个个单独的变量&#xff0c;比如 number0、number1、...、number99&#xff0…

爬虫逆向实战(30)-某查查股东关联公司(HmacSHA512)

一、数据接口分析 主页地址&#xff1a;某查查 1、抓包 通过抓包可以发现数据接口是api/people/getRelatCompany 2、判断是否有加密参数 请求参数是否加密&#xff1f; 无 请求头是否加密&#xff1f; 通过查看“标头”可以发现&#xff0c;请求头中有一个key和value都是…

记一次生产环境服务卡死排查记录

接现场运维报告某java服务CPU狂飙&#xff0c;服务处于卡死无响应状态 询问现场运维什么场景造成的&#xff0c;答复是偶发现象&#xff0c;没有规律&#xff0c;和请求高峰期并没有关系。 因为服务是负载均衡的&#xff08;A、B两台&#xff09;&#xff0c;临时处理让运维重…

【网络通信 -- WebRTC】FlexFec 基本知识点总结概述

【网络通信 -- WebRTC】FlexFec 基本知识点总结概述 【1】FlexFec 的保护方案 假设存在一组源数据包(D L)&#xff0c;其序列号从 1 开始运行到 D L 一维非交错行 FEC(1-D Non-interleaved Row FEC) : 一种连续的源数据包进行保护的方案&#xff0c;可用于恢复按行分组的源…

LaTeX总结-2023年9月8日

1. LaTeX总结 文章目录 1. LaTeX总结1.1. 定义作者&#xff0c;通讯作者&#xff0c;地址&#xff0c;宏包1.1.1. Example 11.1.2. Example 21.1.3. 特殊符号——作者标注注 1.2. 调整字体1.2.1. 数学模式下使用正体1.2.2. LaTeX内使用中文1.2.3. 正文文字 1.3. 常用符号及字母…

专业游戏翻译公司怎么选择比较合适

近年来&#xff0c;游戏行业持续繁荣&#xff0c;市场需求也在不断扩大&#xff0c;其中游戏翻译的需求越来越旺盛。无论是引进游戏还是让游戏走向国际市场&#xff0c;都需要专业的翻译公司来帮忙。那么&#xff0c;怎么选择合适的游戏翻译公司呢&#xff1f;让我们一起来看看…

大数据技术之Hadoop:HDFS存储原理篇(五)

目录 一、原理介绍 1.1 Block块 1.2 副本机制 二、fsck命令 2.1 设置默认副本数量 2.2 临时设置文件副本大小 2.3 fsck命令检查文件的副本数 2.4 block块大小的配置 三、NameNode元数据 3.1 NameNode作用 3.2 edits文件 3.3 FSImage文件 3.4 元素据合并控制参数 …

论文笔记:一分类及其在大数据中的潜在应用综述

0 概述 论文&#xff1a;A literature review on one‑class classification and its potential applications in big data 发表&#xff1a;Journal of Big Data 在严重不平衡的数据集中&#xff0c;使用传统的二分类或多分类通常会导致对具有大量实例的类的偏见。在这种情况…

小白备战大厂算法笔试(三)——栈、队列、双向队列

文章目录 栈栈常用操作栈的实现基于链表的实现基于数组的实现 两种实现对比栈典型应用 队列队列常用操作队列实现基于链表的实现基于数组的实现 队列典型应用 双向队列双向队列常用操作双向队列实现基于双向链表的实现基于数组的实现 双向队列应用 栈 栈是一种遵循先入后出的逻…

CVE-2017-12149

春秋云镜 CVE-2017-12149 JBoss反序列化漏洞 靶标介绍 2017年8月30日&#xff0c;厂商Redhat发布了一个JBOSSAS 5.x 的反序列化远程代码执行漏洞通告。该漏洞位于JBoss的HttpInvoker组件中的 ReadOnlyAccessFilter 过滤器中&#xff0c;其doFilter方法在没有进行任何安全检查…

算法通关村第十三关——溢出问题处理模板

前言 溢出问题是面试当中输出涉及到数字的一个需要特别注意的地方&#xff0c;典型的题目有三个&#xff1a;数字反转&#xff0c;将字符串转成数字和回文数。 1.整数反转 力扣7题&#xff0c;给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反转后的结果。…

rk3399 linux 5.10 usb 2.0设备上电概率性注册失败

多次开关机&#xff0c;发现usb hub和4G都通信失败了&#xff0c;这就有点奇怪了&#xff0c;按理说usb驱动是没啥问题的 先查看usb log rootlinaro-alip:/# dmesg | grep usb [ 1.723797] usbcore: registered new interface driver usbfs [ 1.723828] usbcore: regis…

在很多公司里面会使用打tag的方式保留版本

&#xff1a;git tag|grep "xxx-dev“等分支来查看 2&#xff1a;git cherry-pick XXXXX 然后就是查看有冲突这些 git status 会出现相关的异常 然后解决相关的冲突 git add . git cherry-pick --continue git push XXX HEAD:refs/for/XXX 第一&#xff1a;git ta…