MySQL 05章_模糊查询和聚合函数

在之前的查询都需要对查询的关机中进行“精确”、“完整”完整的输入才能查询相应的结果,
但在实际开发过程中,通常需要考虑用户可能不知道“精确”、“完整”的关键字,
那么就需要提供一种不太严格的查询方式,即模糊查询,只需要输入大概的部分内容就能完成查询。

一、模糊查询
    1、使用LIKE关键字
        语法:SELECT <字段列表|*> FROM 表名 [WHERE 字段名 LIKE %关键字%];
        说明:通配符_(表示任意0到1个字符)、%(表示任意的0到多个字符)
        举例:SELECT * FROM tb_student 
              WHERE student_name LIKE '%娘%' OR phone LIKE '%娘%' OR address LIKE '%娘%' OR email LIKE '%娘%';
    2、使用BETWEEN  END关键字
        语法:SELECT <字段列表|*> FROM 表名 [WHERE 字段名 BETWEEN 起始值 AND 终止值];
        说明:“起始值”和“终止值”都包含
        举例:SELECT * FROM tb_score WHERE student_score >=80 AND student_score <= 90;
              SELECT * FROM tb_score WHERE student_score BETWEEN 80 AND 90;

    3、使用IN关键字
         语法:SELECT <字段列表|*> FROM 表名 [WHERE <字段名 IN (可取值列表)>];
         说明:查询的关键字若包含在IN后面的“可取值列表”中,认为是合法的
         举例:-- 查询“java”和“HTML”的课程信息
              SELECT * FROM tb_subject WHERE subject_name = "java" OR subject_name = "html";
              SELECT * FROM tb_subject WHERE subject_name IN("java","html");
    4、使用正则表达式 (REGEXP)子句
       语法1、:SELECT <字段列表|*> FROM 表名 [WHERE <字段名 REGEXP正则表达式规则 >];
       语法2、:SELECT <被匹配的值> REGEXP <正则表达式规则>;
       说明:被匹配的值若满足正则表达式规则,表示匹配成功显示1,否则显示0
       举例:SELECT * FROM tb_student WHERE email REGEXP '^([a-zA-Z0-9]+)*@([a-zA-Z0-9]+)\.([a-zA-Z]{2,5})$';
             -- ^[\u2E80-\u9FFF]+$
             SELECT * FROM tb_student WHERE not student_name REGEXP "^([u0391-uFFE5]{2,4})$";
二、聚合函数
      1COUNT():统计满足条件的记录数
      2SUM():计算求和
      3AVG():计算平均值
      4MAX():求最大值
      5MIN():求最小值
      
      SELECT * FROM tb_score LIMIT 10,5;
      -- 针对tb_score表,每页最多显示5条记录,请查询第二页
      SELECT * FROM tb_score LIMIT 5,5;
      SELECT SUM(student_score) FROM tb_score;
      SELECT AVG(student_score) FROM tb_score;
      SELECT MAX(student_score) FROM tb_score;
      SELECT MIN(student_score) FROM tb_score;
      
      pageCount = (rowCount%pageSize == 0) ? rwoCount / pageSize : rowCount / pageSize + 1;
      
      
三、mysql中常用函数:
    1、与字符相关的函数:
        SELECT CONCAT(student_no,'----',student_name) FROM tb_student;
        SELECT address, LENGTH(address) 长度 FROM tb_student;
        SELECT UPPER("afaag");
        SELECT LOWER("asdKKJF");
    2、与数值相关的函数:
        -- ROUND(X,D)        四舍五入
        SELECT ROUND(85.65622,2);
        -- ROUND(X)            四舍五入,d为0
        SELECT ROUND(85.65622);
        -- `TRUNCATE`(X,D)        截断函数
        SELECT TRUNCATE(85.65622,2);
        -- `MOD`(N,M)  取模
        SELECT MOD(10,3);
    3、与日期相关的函数:
        计算日期时间差的函数
        TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2);
        说明:
        unit:指点计算哪种类型的差值
        datetime_expr1:减数
        datetime_expr2:被减数
      

猜你喜欢

转载自www.cnblogs.com/zhangzimuzjq/p/11669716.html