MySQL数据的增删改查 where 条件查询 基础知识 【3】推荐

server/2024/11/15 8:29:58/

操作数据数据库很重要的一部分,今天整理了下关于MySQL数据库数据的增删改查,包括基础查询、where条件查询、排序、分页、聚合、分组、having以及多表查询,多表查询的直接查询、内连接、外连接以及子查询。方便自己以后查看,也欢迎正在学习MySQL数据库的同学参考,谢谢。 数据库的安装配置点这里


目录

1. MySQL数据的增删改

1.1 数据表新增 数据 

1.2 删除数据

1.3 更新数据

2.数据的查询操作

2.1基础查询

2.2 where条件查询

2.3 排序查询

 2.4 分页查询

 2.5 聚合查询

2.6 分组查询

2.7 having查询

2.8 多表查询

2.8.1 直接查询

2.8.2 内连接查询

2.8.3 外连接查询

2.8.4 union查询

2.8.5 子查询


 

1. MySQL数据的增删改

1.1 数据表新增 数据 
--给数据表新增一条数据
insert into user (usrename) values ('rose');
insert into user (usrename,gender) values ('rose','女性');--数据表插入多条数据
insert into user (usrename,gender) values ('rose','女性'),('jack','保密');

1.2 删除数据
--删除数据
delete from user; --删除是整张表
delete from user where id = 3; --删除符合条件的指定数据

1.3 更新数据

我们更新user数据表中id为1的数据username字段被更新为 新的数据苏妲己。

--更新数据 更新符合条件的数据
update user set usrename='苏妲己', gender = '女性' where id = 1;

2.数据的查询操作

数据的查询操作内容比较多,常用的基础查询where条件查询排序查询分页查询聚合函数分组查询having查询以及多表查询。我们新建了一张学生信息表来查询数据使用。

2.1基础查询

通过查询语句查询的结果称为结果集,是以表的形式呈现的,结果集来自数据表,但不是一张表,结果集保存在内存,而数据表保存在硬盘上。

--基础查询
select * from student; -- 查询所有字段
select id,name from student; -- 查询指定字段

2.2 where条件查询

-- 支持 >、 <、 >=、 <= 、 =、 !=
-- 支持 and 与、or或、not 非
-- in(值1,值2) between...and 
-- is null、 is not null
-- like 模糊查询 

 

-- =可以换成>、 <、 >=、 <= 、 !=
select * from student where id = 2;-- 并且 两个条件同时满足
select * from student where age >=18 and gender ='女生'; -- 满足其中一个条件
select * from student where age >=18 or gender ='女生'; -- 年龄不小于16的数据
select * from student where not age <18; -- id限制某个范围
select * from student where id in (1,2,5); -- 查询在范围内,包含边界
select * from student where id between 1 and 5;  -- class 是null的数据
select * from student where class is null; -- class 不是null的数据
select * from student where class is not null; -- %匹配任意个任意字符 
select * from student where name like '张%'; -- %匹配任意个任意字符 
select * from student where name like '%三%'; -- %匹配任意个任意字符 
select * from student where name like '%三'; -- _匹配一个任意字符
select * from student where name like '张_'; 
2.3 排序查询

指定某些字段按照升序,还是降序的方式展示数据集。不设置的情况下数据查询结果默认是升序排列的。

-- 排序查询-- 默认就是升序 英文 ascending
select * from student order by age asc; -- 降序 descending
select * from student order by age desc; -- 先按年龄降序,再按id 升序
select * from student order by age desc, id asc; 
 2.4 分页查询

-- limit 一次查询的条数 offset偏移量
-- limit  偏移量 一次查询的条数

select * from student limit 3 offset 2;-- 等同于下面这种写法
select * from student limit 2,3;
 2.5 聚合查询

聚合查询就是对表中的数据进行计算和统计,一般结合分组(group by)来使用,用于统计和计算分组数据。常用的聚合函数有  count()  sum()  avg()   min()  max()

-- count() 计算查询结果集中数据条数的 (一般用于统计数据条数)
-- sun() 计算结果集中所有指定字段的和  (相当于某个字段的求和)
-- avg() 计算结果集中所有指定字段的平均和 (相当于某个数据的平均数)
-- max() 求查询结果中指定字段的最大值
-- min() 求查询结果中指定字段的最小值
select count(*) from student;
select sum(age) from student;
select avg(age) from student;
select max(age) from student;
select min(age) from student;-- 给聚合函数查出来的字段设置别名 
select count(*) as total from student;
select count(*)  total from student; -- as 也可以省略
select count(*) '总数' from student; --设置中文别名
2.6 分组查询

对数据表中的需要分组的字段进行分组显示结果集,查询语句select 后跟分组字段或者聚合函数

select class from student group by class;
select class,avg(age) from student group by class;select class,avg(age) '平均年龄' from student group by class;

2.7 having查询

having查询是对数据集中的数据进行查询,可对分组数据进行筛选。

where虽然也是条件查询,但是where是对数据进行查询。having是对数据集进行筛选。

-- select class,avg(age) avg from student group by class where avg <= 18; -- 不可这样写
select class,avg(age) avg from student group by class having avg <= 18;

2.8 多表查询

多表查询是指多个表之间关联查询数据。有直接查询内连接查询左外连接查询右外连接查询union查询子查询

2.8.1 直接查询
select * from class,student1;
select * from class,student1 where class.id =  student1.class_id;
2.8.2 内连接查询

内连接查询  inner join 或  join

-- 内连接查询 inner join 或  join 
-- 内连接查询和直接查询出来的数据一样
select a.id,b.name from student1 a join class b on a.class_id = b.id; 

2.8.3 外连接查询

左外连接 left outer join 或者 left join 和右外连接查询 right outer join 或者 right join

-- left outer join 或者 left join
-- 左外连接查询 就是左边的表无条件显示,而右边表符合条件的数据才会显示
select * from student1 a left join class b on a.class_id = b.id;-- right outer join 或者 right join
-- 右外连接查询 就是右边的表无条件显示,而左边表符合条件的数据才会显示
select * from student1 a left join class b on a.class_id = b.id;
2.8.4 union查询

union查询的两张表查询的字段需要保持一致。

-- union查询
select id,name from student1 union select id,name from class;
2.8.5 子查询

子查询是把一条查询语句查询的结果当作 查询条件 或者 数据表 来使用。作为数据表来用需要设置别名。

-- 1.子查询 -- 1.1 将查询语句作为另一个查询语句的条件来使用
select class_id from student1 where id = 1;
select class_id from student1 where id > 1;
select * from class where id = (select class_id from student1 where id = 1);
select * from class where id in (select class_id from student1 where id > 1);-- 1.2 将查询语句结果做为另一个查询语句的表来使用
select name from class where id > 1;
select * from  (select name from class where id > 1) a; -- 必须给子查询设置别名 

数据的查询操作到这里就介绍完了。有问题欢迎大家评论区留言,谢谢。


前面我们已经写过数据库以及数据表的增删改查以及主键约束、外键约束、非空约束等。需要参考这部分知识的同学请自从查看:MySQL数据库入门基础知识 【1】推荐-CSDN博客

有关MySQL数据库外键默认约束和外键操作的restrict严格模式、set null置空操作、cascade级联操作的基础知识请参考:MySQL数据库 外键默认约束和action 基础知识【2】推荐-CSDN博客


http://www.ppmy.cn/server/96278.html

相关文章

C++——多态经典案例(一)组装电脑

案例&#xff1a;小明打算买两台组装电脑&#xff0c;假设电脑零部件包括CPU、GPU和内存组成。 一台电脑使用intel的CPU、GPU和内存条 一台电脑使用Huawei的CPU、GPU和Intel的内存条 分析&#xff1a;使用多态进行实现 将CPU、GPU和内存条定义为抽象类&#xff0c;内部分别定义…

【docker快捷部署系列一】docker快速入门,安装docker,解决运行Docker Quickstart Terminal出错

1、docker快速入门 视频链接 知识点概述 docker是轻量级虚拟机image是镜像 相当于虚拟机快照container是容器&#xff0c;相当于运行起来的虚拟机程序Dockerfile 是创建docker镜像的自动化脚本docker-compose 是一个定义和运行多个容器命令的工具&#xff0c;包括运行Docker…

VsCode无法远程调试

一、问题描述 按照《VsCode gdb gdbserver远程调试C程序》中介绍的方法&#xff0c;配置好VsCode后&#xff0c;按下F5快捷键&#xff0c;或点击“Start Debugging”按钮&#xff0c;没有反应&#xff0c;无法启动调试&#xff1a; 二、解决方法 针对该问题&#xff0c;我尝…

【Material-UI】异步请求与Autocomplete的高效集成指南

文章目录 一、异步请求的两种用法1. 延迟加载&#xff08;Load on open&#xff09;实现方法 2. 动态搜索&#xff08;Search as you type&#xff09;实现方法 二、性能优化与注意事项1. 请求节流与去抖2. 禁用内置过滤3. 错误处理 三、实际应用案例&#xff1a;Google Maps P…

ICM-20948芯片详解(8)

接前一篇文章&#xff1a;ICM-20948芯片详解&#xff08;7&#xff09; 六、寄存器详解 1. 总述 ICM-20948共有user bank 0~3共4组寄存器。 USER BANK 0寄存器图 USER BANK 0所包含的寄存器如下图所示&#xff1a; USER BANK 1寄存器图 USER BANK 1所包含的寄存器如下图所…

编程深水区之并发③:Node.js的并发编程

在Node里耍多线程和多进程&#xff0c;会不会闪到腰&#xff1f;&#xff01; 一、Node和JS的关系 Node是JS的运行环境。最初JS只在浏览器中运行&#xff0c;它依赖于浏览器的JS引擎&#xff08;如Chrome的V8、Firefox的SpiderMonkey&#xff09;。Node从Chrome中获得灵感&…

2024.8.6 作业

1> 使用消息队列完成两个进程之间相互通信 snd.c #include <myhead.h>struct msgbuf {long mtype;char mtext[1024]; };#define SIZE sizeof(struct msgbuf)-sizeof(long)int main(int argc,const char *argv[]) {pid_t pid fork();if(pid-1){perror("fork er…

DataEase安装和部署(超细教程)

概述: DataEase 是开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势,从而实现业务的改进与优化。DataEase 支持丰富的数据源连接,能够通过拖拉拽方式快速制作图表,并可以方便的与他人分享。 DataEase 的优势: 开源开放:零门槛,线上快速获取和安装,按月…