🌟Where条件查询
简单查询
例1:查询用户表中的所有数据
select * from sys_user;
例2:查询用户表中的userid,username
select user_id,user_name from sys_user;
精确条件查询
例1:查询用户表中user_name为‘李学生’的数据。
select * from sys_user WHERE user_name='李学生';
例2:查询用户表中user_id不为102的数据。
select * from sys_user where user_id!=102; select * from sys_user where user_id<>102;
范围查询
例:查询用户表中age在10~30岁之间的用户。
select * from sys_user where age between 10 and 30;
离散查询
例:查询用户表中age在11,23,20,18这些中的用户数据。
select * from sys_user where age in(11,23,20,18);
模糊条件查询
例:查询用户表中user_name中包好‘王’的数据。
select * from sys_user where user_name like '王%';
聚合查询
- 查询数据条数:count(*)、count(1)、count(列名)
select count(*) from sys_user; select count(1) from sys_user; select count(id) from sys_user;
- 查询总和:sum(列名)
//查询成绩总和 select sum(grade) from score;
- 查询平均数:avg(列名)
//查询成绩平均数 select avg(grade) from score;
- 查询最大值:max(列名)
//查询成绩最大值 select max(grade) from score;
- 查询最小值:min(列名)
//查询成绩最小值 select min(grade) from score;
- 拼接字符串、列名:concat(字符串1/列名1,字符串2/列名2)
--连接两个字符串,并将name最为列名 SELECT concat('ab', 'cd') as name; --连接sys_user表中user_id,user_name两个列值, --并将id_name作为新列名 select concat(user_id,user_name) as id_name from sys_user --连接字符串和列值 SELECT CONCAT('userID为: ', user_id) AS id FROM sys_user;
去重查询
例:查询角色表中的角色名称,并去重。
select distinct(role_name) from role;
🌟group by分组查询
- 将行按字段分组,常用于统计场合
//统计男女性别的人数 select count(*),sex from sys_user group by sex;
🌟having筛选查询
- 对查询结果进行筛选,位于group by之后。
--统计出用户表中性别人数大于4的性别 SELECT count(*),sex FROM sys_user group by sex having count(*)>4
🌟order by排序查询
- 对查询最终结果排序,位于having之后。
--从角色表中统计角色名称数量大于2的角色并升序排序 select id,role_name,count(*) as 总数 from role group by id,role_name having 总数>=2 order by id asc;
🌟limit限制查询
- 位于order by之后,语法格式为limit m,n。m为起始索引0,n为条数。
select * from sys_user limit 4,5;
🌟exists子查询
- exists后的子查询若查询到数据则返回true,否则返回false。
--查询出公司有员工的部门的详细信息 select * from dept a where exists (select 1 from employee b where a.deptnu=b.deptnu); select * from dept a where not exists (select 1 from employee b where a.deptnu=b.deptnu);
🌟左连接与右连接查询
左连接
- 左连接又称为左外连接,left join 是left outer join的简写。左表的记录将会全部表示出来, 而右表只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。
- 语法格式:left join 表名 on 条件 / left outer 表名 join on 条件
---:列出部门名称和这些部门的员工信息,同时列出那些没有的员工的部门 select a.dname,b.* from dept a left join employee b on a.deptnu=b.deptnu;
右连接
- 右连接又称为右外连接,right join 是right outer join的简写。右表的记录将会全部表示出来, 而左表只会显示符合搜索条件的记录。左表记录不足的地方均为NULL。
---:列出部门名称和这些部门的员工信息,同时列出那些没有的员工的部门 select b.dname,a.* from employee a right join dept b on b.deptnu=a.deptnu;
🌟内连接与Union查询
内连接
- 获取两个表中字段互相匹配的记录。
- 语法格式:INNER JOIN 表名 ON 条件
---查出员工张三的所在部门的地址 select a.addr from dept a inner join employee b on a.deptnu=b.deptnu and b.ename='张 三';
Union查询
- 查询语句的查询结果结合在一起。
- 语法格式:… UNION … (去除重复) /… UNION ALL …(不去重复)。
- 注意事项1:select语句的查询结果的“字段数”必须一致并且字段类型也要一致。
- 注意事项2:用到order by排序时,需要加上limit(最大条数),需要子句用括号括起来。
🌟写在最后
最后感谢大家的阅读,欢迎大家在评论区讨论mysql相关知识点。最后您的点赞、收藏是我更新优质好文的最大动力。