MySQL常用增删改查操作(CRUD)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 本篇文章主要介绍在MySQL数据库中常见的增删改查(CRUD)SQL语句操作。

1.新增(create)


语法:


insert into 表名 values (值,值);

案例:

创建学生表进行插入:


create table student(id int ,name varchar(50));
insert into student values (1,'李四');

微信图片_20230111003422.png

最下一行“1 row affected in 5 ms”表示有一行发生了改变。


指定列插入:


insert into student (name) values('张三');


微信图片_20230111003417.png

多行插入:


insert into student values (3,'王五'),(4,'赵六');

微信图片_20230111003413.png

一次插入N条记录要比一次插入一条分N次插入快很多。


插入时间


比如字段类型为时间类型,标准插入方式为:

‘YYYY-MM-DD HH:mm:ss’

‘2022-07-03 12:00:00’

比较时间,按照> = < 即可。


2.查询(retrieve)


查询语句是SQL语句中最核心也是最复杂的操作,下边我们先简单介绍初阶查询语句(查询select子句无论怎样进行,都不会对数据库原有的数据发生改动)。

案例:


-- 创建考试成绩表
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.5, 90),
                                                              (4,'曹孟德', 82, 84, 67),
                                                              (5,'刘玄德', 55.5, 85, 45),
                                                              (6,'孙权', 70, 73, 78.5),
                                                              (7,'宋公明', 75, 65, 30);


2.1 全列查询


最基础的操作,但在实际开发中也很危险,如果数据量较大,进行全列查询将会大量消耗系统资源,有可能导致宕机。


select*from 表名;


微信图片_20230111003409.png

2.2 指定列查询


这种相对于全列查询要高效很多,在查询时会显示告诉数据库要查询哪些列,数据库就会有针对性的返回数据了。


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


微信图片_20230111003406.png

2.3 查询字段为表达式


在查询的同时进行一些运算操作(列和列之间)

例如,期望查询结果中的语文成绩比真实成绩高十分:


微信图片_20230111003358.png

查询每个同学的总分:


微信图片_20230111003355.png

2.4 查询字段指定别名


通过指定别名的方式防止得到的临时表列名太乱。


微信图片_20230111003352.png

2.5 针对查询结果去重


针对查询结果,把重复的记录抹去。


微信图片_20230111003349.png


如果是针对多个列进行去重,只有这多个列的值都相同时才会被视为重复


2.6 针对查询结果排序


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

针对数学成绩进行升序排序 asc为升序(默认为升序可以不写),desc为降序


微信图片_20230111003346.png


注意:


1.数据库记录中带NULL值的将被视为最小(在排序中会被视为最小值)


微信图片_20230111003343.png


2.排序也可依据别名或表达式来进行排序。


微信图片_20230111003340.png


3.指定多个列排序时,先根据第一个列进行排序,如果第一个列的值相同再按第二个列的结果排序,如下先按照数学排序,数学相同再按语文排序。


微信图片_20230111003337.png

2.7 条件查询

在select子句后面加上where筛选条件,查询结果会把满足条件的保留,不满足的过滤掉。


select 列名 from 表名 where 条件;

比较运算符:


运算符  说明

>, >=, <, <=

大于,大于等于,小于,小于等于

= 等于,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)


注:


  1. WHERE条件可以使用表达式,但不能使用别名。
  2. AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分


案例:


  • 基本查询:
  1. 1.查询英语不及格同学的英语成绩


微信图片_20230111003332.png

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


微信图片_20230111003328.png

  1. 3.查询总分在200分以下的同学

微信图片_20230111003325.png

此处注意不能使用别名


  • AND与OR:
  1. 1.查询语文成绩大于80分,且英语成绩大于80分的同学


微信图片_20230111003322.png

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


微信图片_20230111003319.png

  1. 3.观察AND 和 OR 的优先级
  2. and的优先级高于or,如果想打破优先级需要使用小括号()


微信图片_20230111003316.png

微信图片_20230111003313.png


  • 范围查询
  1. 1.between …and…
  2. 在编程领域里,大部分区间都是左闭右开,注意在SQL中是左右都闭合的区间
  3. 查询语文成绩在 [80, 90] 分的同学及语文成绩


微信图片_20230111003309.png

  1. 使用and也可以实现


微信图片_20230111003305.png

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


微信图片_20230111003302.png

  1. 使用or也可以实现类似效果

微信图片_20230111003259.png

  • 模糊查询:LIKE
  1. % 匹配任意多个(包括 0 个)字符
  2. _ 匹配严格的一个任意字符


微信图片_20230111003256.png


微信图片_20230111003248.png


  • NULL 的查询:IS [NOT] NULL
  1. 与null的相关操作结果还是努力了,所以要查找语文成绩为空的学生信息,按如下方式无法查询到结果


微信图片_20230111003245.png

  1. 有<=>、is null这两种方式来判别是否为null

微信图片_20230111003242.png


微信图片_20230111003239.png


2.8 分页查询


微信图片_20230111003234.png

如果查询到的结果数较多,我们就需要按照上图的方式来进行分页展示。

在sql中利用limit来进行分页查询,

语法:


-- 起始下标为 0
-- 从 0 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;
-- 从 s 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;
-- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;


如下显示查询结果的前三条


微信图片_20230111003231.png

从下标为3开始,往后查三条

微信图片_20230111003228.png

在之前我们提到select*from 是危险操作,所以我们可以通过加where条件或者limit来更稳妥的限制。


3.修改(update)

语法:


update 表名 set 列名=值(或表达式),列名=值(或表达式)..... where 条件;

此处的where限制符合条件的进行修改。

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


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


微信图片_20230111003225.png

4.删除(delete)

语法:


delete from 表名 where 条件 [ORDER BY ...] [LIMIT ...];

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


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

注意,如果不加where条件,就会把整个表的数据给删除。


5.导图总结

微信图片_20230111003221.png

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版操作报错合集之用CTAS从mysql同步数据到hologres,改了字段长度,报错提示需要全部重新同步如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
45 8
|
3天前
|
SQL 关系型数据库 MySQL
实时计算 Flink版操作报错合集之程序初始化mysql没有完成就报错如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
15 4
|
3天前
|
关系型数据库 MySQL 数据库
实时计算 Flink版操作报错合集之sqlserver mysql都用的胖包,sqlserver的成功了,mysql报这个错如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
20 6
|
3天前
|
SQL Oracle 关系型数据库
实时计算 Flink版操作报错合集之连接器换成2.4.2之后,mysql作业一直报错如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
16 3
|
6天前
|
SQL 关系型数据库 MySQL
Mysql忘记密码操作
Mysql忘记密码操作
28 1
|
6天前
|
SQL 关系型数据库 MySQL
DQL操作MySql
DQL操作MySql
13 0
|
6天前
|
SQL Java 关系型数据库
【JAVA基础篇教学】第十六篇:Java连接和操作MySQL数据库
【JAVA基础篇教学】第十六篇:Java连接和操作MySQL数据库
|
6天前
|
SQL 关系型数据库 MySQL
MySQL第三战:CRUD,函数1以及union&union all
MySQL第三战:CRUD,函数1以及union&union all
|
6天前
|
SQL 关系型数据库 MySQL
MySQL 基本概念 基础用法 增删改查(特殊查询)语法 详细篇
MySQL 基本概念 基础用法 增删改查(特殊查询)语法 详细篇
|
6天前
|
SQL 存储 关系型数据库
【MySQL】DDL的表操作详解:创建&查询&修改&删除
【MySQL】DDL的表操作详解:创建&查询&修改&删除