文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-09-08 15:27

关注

写在最前面的话

        哈喽,宝子们,今天给大家带来的是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;

查询语文成绩大于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_resultwhere 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不一样,前者只是删除表里的数据,表还在,后者则是把表的数据与表一起删除。


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

来源地址:https://blog.csdn.net/m0_62729383/article/details/132467159

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯