在之前的查询都需要对查询的关机中进行“精确”、“完整”完整的输入才能查询相应的结果,
但在实际开发过程中,通常需要考虑用户可能不知道“精确”、“完整”的关键字,
那么就需要提供一种不太严格的查询方式,即模糊查询,只需要输入大概的部分内容就能完成查询。
一、模糊查询1、使用LIKE关键字
语法:SELECT FROM 表名 [WHERE 字段名 LIKE %关键字%];
说明:通配符_(表示任意0到1个字符)、%(表示任意的0到多个字符)
举例:SELECT * FROMtb_studentWHERE 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后面的“可取值列表”中,认为是合法的
举例:--查询“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 ];
语法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})$";
二、聚合函数1、COUNT():统计满足条件的记录数2、SUM():计算求和3、AVG():计算平均值4、MAX():求最大值5、MIN():求最小值SELECT * FROM tb_score LIMIT 10,5;--针对tb_score表,每页最多显示5条记录,请查询第二页
SELECT * FROM tb_score LIMIT 5,5;SELECT SUM(student_score) FROMtb_score;SELECT AVG(student_score) FROMtb_score;SELECT MAX(student_score) FROMtb_score;SELECT MIN(student_score) FROMtb_score;
pageCount= (rowCount%pageSize == 0) ? rwoCount / pageSize : rowCount / pageSize + 1;
三、mysql中常用函数:1、与字符相关的函数:SELECT CONCAT(student_no,'----',student_name) FROMtb_student;SELECT address, LENGTH(address) 长度 FROMtb_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:被减数