数据库模糊查询学习
1. 模糊查询(like)值用于字符串
字符串包括:varchar、char
image.png
2.对于模糊查询就需要用到通配符
通配符包括:%(百分号)—代表任意多个字符
_(英文的下滑线)—代表任意一个字符
图文介绍
3.实例:
3.1 学生姓名以吴开头
SELECT * FROM t_user_customer
WHERE customer_name LIKE '吴%';
3.2 姓名是两个字符的学生
SELECT * FROM t_user_customer
WHERE customer_name LIKE '_';
3.3学生姓名包含 李
SELECT * FROM t_user_customer
WHERE customer_name LIKE '%李%';
3.4 姓名最后一位 是民的学生
SELECT * FROM t_user_customer
WHERE customer_name LIKE '%民';
3.5 姓名是 马东什么
SELECT * FROM t_user_customer
WHERE customer_name LIKE '马冬';
3.6 精确查询 学生姓名为 马冬梅的学生
SELECT * FROM t_user_customer
WHERE customer__name = '马冬梅';
3.7. 学生姓名不等于 张子栋 只显示学生 编号 姓名
SELECT customer_name,customer_id FROM t_user_customer
WHERE customer_name <> '张子栋 ';
3.8. 学生省份为重庆的 只显示 学生编号 姓名 省份
SELECT customer_name,customer_id, province FROM t_user_customer
WHERE province = '重庆';
4.IN (用于多个过滤条件且条件没有并列关系)
image.png5.实例
image.png5.1 查询学生年龄 是 23 30
SELECT * FROM
t_user_customer
WHERE age IN (23,30);5.2 查询学生省份 是 安徽 重庆
SELECT * FROM
t_user_customer
WHERE province IN ('安徽','重庆');
image.png
6.组合型的实例
6.1 查询年龄为23省份是重庆的或者年龄是29的省份是安徽的所有同学信息
SELECT * FROM t_user_customer
WHERE (age,province) IN ((23,'重庆'),(29,'安徽'));
SELECT * FROM t_user_customer
WHERE (age,province) IN ((23,''));
6.2 查询年龄23的重庆的之外所有学生信息;
SELECT * FROM t_user_customer
WHERE (age ,province) NOT IN ((23,'重庆'));
6.3 查询年龄不为23且省份不是重庆或者年龄不为29且省份不是安徽的所有学生信息;
SELECT * FROM t_user_customer
WHERE (age ,province) NOT IN ((23,'重庆'),(29,'安徽'));
7orderby (排序)- 升序(asc)-降序(desc)
- 30 查询出年龄大于19岁的所有学生并以序号进行降序排序;
SELECT * FROMt_user_customer
WHERE age >19 ORDER BY customer_id DESC;
-- 查询出年龄大于19岁的所有学生并以年龄进行降序排序 如果有年龄相同的,以序号升序排序
SELECT * FROMt_user_customer
WHERE age>19 ORDER BY age DESC, customer_id ASC;
32 查询出性别为男的所有学生,并按照年龄降序排序,若有年龄相同的则以创建时间进行升序排序scores
SELECT * FROMt_user_customer
WHERE sex ='0' ORDER BY age DESC ,create_time ASC;
-- 33查询出年龄大于19岁的所有学生并以序号进行降序排序取前10条记录;
SELECT * FROMt_user_customer
WHERE age>19 ORDER BY customer_id LIMIT 0,10;
-- 34查询出年龄最大的男同学
SELECT * FROMt_user_customer
WHERE sex ='0'ORDER BY age DESC LIMIT 1 ;
SELECT * FROMt_user_customer
WHERE age =(SELECT age FROMt_user_customer
WHERE sex ='0' ORDER BY age DESC LIMIT 1);
8.limit :
- 只能用于mysql 使用
- 查询结果以0位起始序号
- limit -n,m-n代表起始位置-m代表展现m条数据
-- 33查询出年龄大于19岁的所有学生并以序号进行降序排序取前10条记录;
SELECT * FROMt_user_customer
WHERE age>19 ORDER BY customer_id LIMIT 0,10;
7.distinct去重
image.png8.group by 分组
聚合函数: 统计(count)、求和(sum)、平均值(avg)、最大(max)最小(min)
8.1查询出年龄大于19岁的所有学生并以序号进行升序排序;
SELECT * FROM t_user_customer
WHERE age >19 ORDER BY customer_id ASC;
8.2 查询出年龄大于19岁的所有学生并以序号进行降序排序;
SELECT * FROM t_user_customer
WHERE age >19 ORDER BY customer_id DESC;
9.having 对聚合函数过滤只能用having
image.png9.1 统计出每门课的平均成绩
SELECT cno ,AVG (degree)FROM
scores
GROUP BY cno ;9.2统计出每门课的最大成绩
SELECT cno ,MAX(degree) FROM
scores
GROUP BY cno ;-- 40统计出每门课程的总人数
SELECT cno ,COUNT(sno)FROM
scores
GROUP BY cno;
-- 41统计出选修人数少于2人的课程
SELECT cno,COUNT(cno) FROM scores
GROUP BY cno HAVING COUNT(cno) < 2;
-- 42.统计出成绩不及格的学生
SELECT sno ,MIN(degree) FROM scores
GROUP BY sno HAVING MIN(degree) < 60;
-- 43 统计出全部成绩都不及格的学生
SELECT sno ,MAX(degree) FROM scores
GROUP BY sno HAVING MAX(degree) < 60;
- 查询出年龄大于19岁的所有学生并以序号进行降序排序取前10条记录;
SELECT * FROMt_user_customer
WHERE age > 19 ORDER BY customer_id LIMIT 0,10;
-- 查询出年龄最大的男同学
SELECT * FROM t_user_customer
WHERE s
网友评论