美文网首页
2018-09-20数据库学习

2018-09-20数据库学习

作者: 孔雀鱼_686b | 来源:发表于2018-10-10 16:50 被阅读0次

    数据库模糊查询学习

    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.png

    5.实例

    image.png
    5.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 * FROM t_user_customer WHERE age >19 ORDER BY customer_id DESC;
      -- 查询出年龄大于19岁的所有学生并以年龄进行降序排序 如果有年龄相同的,以序号升序排序
      SELECT * FROM t_user_customer WHERE age>19 ORDER BY age DESC, customer_id ASC;
      32 查询出性别为男的所有学生,并按照年龄降序排序,若有年龄相同的则以创建时间进行升序排序scores
      SELECT * FROM t_user_customer WHERE sex ='0' ORDER BY age DESC ,create_time ASC;
      -- 33查询出年龄大于19岁的所有学生并以序号进行降序排序取前10条记录;
      SELECT * FROM t_user_customer WHERE age>19 ORDER BY customer_id LIMIT 0,10;
      -- 34查询出年龄最大的男同学
      SELECT * FROM t_user_customer WHERE sex ='0'ORDER BY age DESC LIMIT 1 ;
      SELECT * FROM t_user_customer WHERE age =(SELECT age FROM t_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 * FROM t_user_customer WHERE age>19 ORDER BY customer_id LIMIT 0,10;

    7.distinct去重

    image.png

    8.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.png
    9.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 scoresGROUP BY sno HAVING MIN(degree) < 60;

    -- 43 统计出全部成绩都不及格的学生
    SELECT sno ,MAX(degree) FROM scoresGROUP BY sno HAVING MAX(degree) < 60;

    9.20数据库基础.jpg
    • 查询出年龄大于19岁的所有学生并以序号进行降序排序取前10条记录;
      SELECT * FROM t_user_customer WHERE age > 19 ORDER BY customer_id LIMIT 0,10;

    -- 查询出年龄最大的男同学
    SELECT * FROM t_user_customer WHERE s

    相关文章

      网友评论

          本文标题:2018-09-20数据库学习

          本文链接:https://www.haomeiwen.com/subject/pqygnftx.html