MySQL基础操作总结_CRUD

news2025/7/7 17:09:03

文章目录

1.新增 insert

1.1 单行数据+全列插入

1.2 多行数据+指定列插入

2.查询 select

2.1 全列查询

2.2 指定列查询

2.3 查询字段包含表达式

2.4 别名

2.5 去重:distinct

2.6 排序:order by 

2.7 条件查询 

2.7.1 where条件查询

2.7.2 and与or查询

2.7.3 范围查询

2.7.4 模糊查询 like

2.7.5  NULL 的查询:IS [NOT] NULL

2.8 分页查询 : limit

3.修改 update

4.删除 delete


CRUD即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写

其中查询操作是应用场景最多的,需要熟练使用,下面对四个操作演示一下用法

1.新增 insert

语法

insert [into] table_name values (value_list)...
value_list: value,......

先创建一张学生表

 insert into student1 values (1001,20110,'张三','123456@qq.com');

1.1 单行数据+全列插入

插入两条记录,value_list 数量必须和定义表的列的数量及顺序一致

 insert into student1 values (1001,20110,'张三','123456@qq.com');
 insert into student1 values (1002,20111,'李四','2123456@qq.com');

1.2 多行数据+指定列插入

插入两条记录,value_list 数量必须和指定列数量及顺序一致

insert into student1 (id,sn,name,qq_emial) values 
    (1003,20112,'王五','323456@qq.com'),
    (1004,20113,'赵六','42345@qq.com');

2.查询 select

在工作的场景中,查询操作出现的概率是四个操作中最大的,比起其它三个操作也相对复杂

语法

select  [distinct]{* | colunm [,ccolumn] ...]}
        [from table_name]
        [where ...]
        [order by column [asc|desc],...]
        limit...

创建一个考试成绩表

 

 插入一些数据

insert into exam_result(id,name,chinese,math,english) values
        (71250,'张三',95.5,82.2,67.5),
        (69753,'李四',88,86,89),
        (12254,'王五',87,88,98),    
        (61256,'张六',73,85,65),
        (30258,'孙七',25,88,65),
        (11260,'柯八',82,76,45);

2.1 全列查询

一般不建议使用 *进行全列查询,原因如下:

1.全列查询是一个危险的操作,当数据库的数据很多时,全列查询意味着需要传输的数据量也很大

2.可能影响到索引的使用

 select*from exam_result;

2.2 指定列查询

指定列的查询不用按照表定义的顺序来

select name,chinese from exam_result;

 

2.3 查询字段包含表达式

表达式不包含字段时,就像上面介绍的指定列查询

包含一个字段的查询

select name,chinese+10 from exam_result;

表达式:chinese+10  

包含多个字段的表达式查询

 select name,chinese+math from exam_result;

2.4 别名

别名是指为查询结果中的列指定别名,表示返回结果集,以该别名作为列名

语法

select column [as] alias_name[] from table_name;

as 后加别名,也可以省略

查询每个同学的总成绩:

 select name,chinese+math+english as count_result from exam_result;

 省略as效果相同

2.5 去重:distinct

使用DISTINCT关键字对某列数据进行去重

english 列有重复数据,使用DISTINCT关键字去重

select distinct english from exam_result;

2.6 排序:order by 

 asc 为升序

desc 为降序

默认为asc

语法

select ... from table ....order by column [asc|desc];

注意:

1. 没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序

2. NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面

3. 使用表达式及别名排序

查询同学及总分,由高到低

select name,chinese+math+english from exam_result order by chinese+math+english desc;

4. 可以对多个字段进行排序,排序优先级随书写顺序

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

2.7 条件查询 

比较运算符:

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

逻辑运算符:

和逻辑关系运算符相同,and和&&,or和||,not和非

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

条件为 TRUE(1),结果为 FALSE(0)

2.7.1 where条件查询

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

注意:where条件可以用于表达式,不能使用别名

 select name,chinese+math+english 总分 from exam_result where chinese + math + english < 200;

如果加别名

MySQL不允许在WHERE子句中使用列别名,因为

计算WHERE子句时,可能尚未确定列值

2.7.2 and与or查询

注意:AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分

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

select * from exam_result where chinese > 80 and english > 80;

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

select * from exam_result where chinese > 80 or english > 80;

我们观察一下and和or 的优先级

不加括号时:

先执行 english > 80 and math > 80,返回结果后再执行or再返回结果,为了避免不必要的麻烦,我们可以在使用时加上括号

 select * from exam_result where chinese > 80 or english > 80 and math > 80;

 加括号时:

select * from exam_result where (chinese > 80 or english > 80) and math > 80;

2.7.3 范围查询

1.between...and...

也可以用and 完成查询操作

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

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

2.in

使用or 也能实现

查询数学成绩是 76 或者 88 或者 82 或者 99 分的同学及数学成绩

 select name,math from exam_result where math in(76,88,82,99);

2.7.4 模糊查询 like

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

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

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

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

2.7.5  NULL 的查询:IS [NOT] NULL

查询 qq_mail 已知的同学姓名

 select name,qq_emial from student1 where qq_emial is not null;

 查询 qq_mail 未知的同学姓名

 select name,qq_emial from student1 where qq_emial is null;

2.8 分页查询 : limit

从0开始筛选n条结果

... ... limit n

从s开始筛选n条结果

... ... limit s,n

 

 比第二种方法更明确

从s开始筛选n条结果

... ... limit n offset s

 

我们对成绩表按id分页,分别显示3页

第一页

 select id,name,math,english,chinese from exam_result order by id limit 3 offset 0;

第二页

select id,name,math,english,chinese from exam_result order by id limit 3 offset 3;

 第三页

select id,name,math,english,chinese from exam_result order by id limit 3 offset 6;

如果没有结果会显示空,如果有结果但是不满足要查询的数量,也会显示不满足查询数量的数据,也就是如果只剩下两条数据,分页后查询的是三条,最后一页也会显示剩下的两条数据

3.修改 update

语法

update table_name set column = ......

将张三同学的数学成绩变更为 80 分

update exam_result set math = 80 where name = '张三';

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

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

4.删除 delete

涉及删除了,肯定又是一个比较危险的操作

语法

delete from tbale _name ... ...

删除张三同学的考试成绩

delete from exam_result where name = '张三';

删除整张表

delete from table_name; 

 

 

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

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

相关文章

Java简介

Java是一门面向对象的编程语言&#xff0c;不仅吸收了C语言的各种优点&#xff0c;还摒弃了C里难以理解的多继承、指针等概念&#xff0c;因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表&#xff0c;极好地实现了面向对象理论&#xff0…

Matplotlib 基础入门知识点总结

目录 1、绘图的一些基本命令展示 2、Matplotlib 绘制网格 3、plt.gca() 对坐标轴的操作 4、 图表的样式参数设计 5、创建图形对象 6、绘制多子图 1.add_axes()&#xff1a;添加区域 2. subplot()函数&#xff0c;可以均等的划分画布 3.subplots()函数详解 7、柱形图的…

踩坑List.addAll抛出UnsupportedOperationException

转载标明出处: 公司内部博客,作者 居xx, 在此表示感谢 1、我自己遇到的问题 try { // 不加try..catch报错 java.lang.UnsupportedOperationException: null ,原因未知list.addAll(a.getResult());list.addAll(b.getResult());list.addAll(c.getResult());list.addAll(d.getResu…

双软认证是指哪两项证书认证

一、双软认证是指哪两项证书认证&#xff1a; “双软认证”&#xff1a;指软件产品等登记和软件企业认定&#xff1b;企业申请双软认证&#xff0c;除了获得软件企业和软件产品的认证资格外&#xff0c;也可以使企业享受国家对软件行业提供的税收优惠政策。 二、认证的好处 1、…

后量子密码学中的模数是多少?

密码学&#xff1a;后量子密码学中的模数是多少&#xff1f; 只要是从事网络安全或安全软件开发的人&#xff0c;就都可能已经了解过公钥加密以及在20世纪70年代末和80年代前后创建的方法。现在我们可能需要学习更多的理论&#xff0c;因为我们所学的方法可能会受到量子计算机的…

网页字体图标用法

目录前言引用流程1、打开网页2、选择自己喜欢的图标加入购物车3、下载图标4、引用引用前言 1、接下来介绍引用图标都是免费的&#xff0c;可以放心食用。 2、标签可以自己设计&#xff0c;用css、svg画图或者引用图片都可以。但我们设计的很难超过专业人员的设计。引用图片的画…

深入理解mvcc机制(详解)

深入理解mvcc机制一&#xff0c;MVCC定义1&#xff0c;undolog日志2&#xff0c;undolog版本控制链3&#xff0c;readView3.1&#xff0c;readview简介3.2&#xff0c;readview和undolog结合使用规则3.3&#xff0c;readview和undolog基本使用4&#xff0c;总结一&#xff0c;M…

Java学习----前端3

今日学习内容如下&#xff1a; JavaScript JavaScript是一种基于对象和事件驱动的客户端脚本语言动态、弱类型、基于原型&#xff0c;内置了支持类 解释器称为 JS 引擎&#xff0c;内置于浏览器中 ECMA 欧洲计算机制造商协会Hello world <input type"button" on…

与git相关错误的究极解决方案

没有科学上网导致的git推送和拉取错误&#xff0c;严重阻碍了搬砖进度&#xff0c;遇到的与git有关的错误&#xff1a; 1. gnutls_handshake() failed: The TLS connection was non-properly terminated. 2. Failed to connect to github.com port 443:connection timed out …

Postman 如何获取请求结果并设置到请求头中

目录1.设置环境变量2.获取token&#xff0c;并赋值给环境变量3.将环境变量添加到请求头Postman&#xff1a; 是一款用于接口调试和测试的开发工具&#xff0c;功能强大&#xff0c;使用简单。 无论是开发人员进行接口调试&#xff0c;还是测试人员做接口测试&#xff0c;Postma…

本地生活小程序有什么功能_本地生活小程序的优势

对于平台运营方 痛点&#xff1a;社区团购毛利偏低 零售行业竞争激烈&#xff0c;单纯依靠社区团购卖货整体毛利率较低 手中大量用户&#xff0c;缺少好的变现模式&#xff0c;迫切需要提升盈利能力。 优势&#xff1a;提升盈利&#xff0c;解决流量变现 本地生活属于轻资产…

8Manage:千万别忽视了供应商绩效管理

供应商绩效管理是采购管理流程中的一部分&#xff0c;现代企业几乎都会对供应商实行绩效考核。绩效管理的主要目的是了解供应商的表现、促进供应商改进&#xff0c;并为工业商奖励、供应商优化提供依据&#xff0c;以此来发现优质的供应商&#xff0c;及时改进不合格的供应商。…

Python控制自己的手机摄像头拍照,并把照片自动发送到邮箱

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 又到了学Python时刻~ 今天这个案例&#xff0c;就是控制自己的摄像头拍照&#xff0c; 并且把拍下来的照片&#xff0c;通过邮件发到自己的邮箱里。 想完成今天的这个案例&#xff0c;只要记住一个重点&#xff1a;你…

CSDN的MD编辑器【写作技巧】

CSDN的MD编辑器【写作技巧】在线LaTeX公式的编辑器快捷键&#xff0c;结合快捷键提高效率写作技巧在线LaTeX公式的编辑器 推荐去https://www.latexlive.com/在线LaTeX公式编辑器 将写好的公式代码复制过来。 然后复制在CSDN编辑器里面前后加上符合$就行了 前后加两个该符合就会…

Java环境安装即配置

一、java1.8的安装步骤 1 安装目录创建java文件夹 在想要安装java的目录下创建一个java文件夹,不能出现特殊符号和汉字、空格等 2 java文件夹内创建jdk和jre Java安装需要两部分,一个jdk一个jre 所以在java文件夹中创建两个文件夹 3 解压安装包 通过百度网盘分享的文件&#…

【论文精读3】MVSNet系列论文详解-P-MVSNet

P-MVSNet全名为“P-MVSNet: Learning Patch-wise Matching Confidence Aggregation for Multi-View Stereo”&#xff0c;名字当中反映了论文的核心模块即基于学习方法的分块匹配置信聚合模块&#xff0c;乍一看有点难理解&#xff0c;但看完本文肯定很清楚啦。 本文是MVSNet系…

mysql 数据库使用分享(多图解析)

1、大体流程 1.1 一些概念 1.1.1 RDBMS 关系型数据库&#xff0c;是指采用了关系模型来组织数据的数据库&#xff0c;其以行和列的形式存储数据&#xff0c;类似excel 1.1.2 OLAP 和 OLTP OLTP(Online transactionprocessing):在线/联机 事务 处理。主要是对数据库中的数据…

PTA:字符串加密

输入一个原始字符串&#xff08;长度小于80&#xff09;&#xff0c;然后输入一个5位的数字字符串作为加密密钥&#xff0c;对原始字符串中的每个字符根据其位置&#xff08;对5取模&#xff09;变换为加上数字字符串中的数字的字符。如输入原始字符串student&#xff0c;然后输…

Linux学习-36-文件系统管理-硬盘结构

10 Linux文件系统管理 之前在安装Linux的时候已经对 Linux 的分区方法和文件系统进行了介绍。不过那种分区方法是在安装系统的同时使用图形界面进行分区&#xff0c;如果添加了一块硬盘&#xff0c;那么当然要有不重新安装系统就可以分区的方法。文件系统即分区&#xff1a;原…

通达信接口进行二次编程开发步骤

大家都知道通达信接口是比较流行的快速通达信数据excel接口&#xff0c;能够提供多家券商&#xff0c;包括通达信数据excel接口、量化回测平台等。 通达信接口API接口说明&#xff08;部分&#xff09; 今天小编主要讲一下&#xff0c;关于通达信接口进行二次编程开发步骤如下…