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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
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

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
SQL 关系型数据库 MySQL
mysql 简单的sql语句,入门级增删改查
介绍MySQL中的基本SQL语句,包括数据的增删改查操作,使用示例和简单的数据表进行演示。
mysql 简单的sql语句,入门级增删改查
|
24天前
|
关系型数据库 MySQL Java
Servlet+MySQL增删改查 原文出自[易百教程] 转载请保留原文链接: https://www.yiibai.com/geek/1391
对于任何项目开发,创建,读取,更新和删除(CRUD)记录操作是应用程序的一个最重要部分。
63 20
|
5月前
|
SQL 运维 关系型数据库
MySQL 中 GRANT 操作会引起复制中断吗?
GRANT 操作并不是一个原子性操作,不管执行成功与否,都会触发一个隐式重载授权表的行为。 在生产环境中需要规范用户创建及授权的操作,不推荐使用 DML 语句去直接变更 mysql.user 表,可能会引发其他的问题,若使用了 DML 语句进行变更, 需要手工执行 flush privileges。
76 4
|
5月前
|
JavaScript 关系型数据库 MySQL
创建nodejs项目并接入mysql,完成用户相关的增删改查的详细操作
创建nodejs项目并接入mysql,完成用户相关的增删改查的详细操作
73 0
|
2月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
73 1
|
2月前
|
关系型数据库 MySQL
MySQL表的增删改查(基础篇详细详解)
MySQL表的增删改查(基础篇详细详解)
52 5
|
2月前
|
关系型数据库 MySQL 数据库
mysql的增删改查
本文介绍了MySQL数据库中进行增删改查操作的基本语法和注意事项,包括如何添加、修改和删除数据。
73 2
|
3月前
|
关系型数据库 MySQL 数据库
MySQL 表的CRUD与复合查询
【9月更文挑战第26天】本文介绍了数据库操作中的 CRUD(创建、读取、更新、删除)基本操作及复合查询。创建操作使用 `INSERT INTO` 语句插入数据,支持单条和批量插入;读取操作使用 `SELECT` 语句查询数据,可进行基本查询、条件查询和排序查询;更新操作使用 `UPDATE` 语句修改数据;删除操作使用 `DELETE FROM` 语句删除数据。此外,还介绍了复合查询,包括连接查询(如内连接、左连接)和子查询,以及聚合函数与分组查询,并提供了示例代码。
|
4月前
|
JavaScript 关系型数据库 MySQL
node连接mysql,并实现增删改查功能
【8月更文挑战第26天】node连接mysql,并实现增删改查功能
108 3
|
4月前
|
关系型数据库 MySQL 大数据
C#使用SqlSugar操作MySQL数据库实现简单的增删改查
C#使用SqlSugar操作MySQL数据库实现简单的增删改查
288 2