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