模糊查询:
查询某一列中内容为空的记录。
-- 模糊查询 (项目中尽量不要使用)
-- 张x
SELECT * FROM student WHERE student_name LIKE '张_';
-- % 不限长度的字符
-- 手机号中有 23 0或多个
SELECT * FROM student WHERE phone LIKE '%23%'
-- 名字包含'铮'的学生
SELECT * FROM student WHERE student_name LIKE '%铮%';
-- 60到80的成绩
SELECT * FROM result WHERE student_result>=60 &&student_result<=80;
SELECT * FROM result WHERE student_result BETWEEN 60 AND 80;
-- '阿斯达''张试''张三丰'
SELECT * FROM student WHERE student_name in('阿斯达','张试','张三丰')
SELECT * FROM result WHERE subject_id not in (1,2);
-- 所有不是张姓的学生信息
SELECT * FROM student WHERE student_name not LIKE '张%'
-- 排序 ORDER BY 默认是升序 升序ASC
SELECT *FROM student ORDER BY birthday ASC;
-- DESC
SELECT *FROM student ORDER BY birthday DESC;
-- 根据多个字段经行排序
SELECT * FROM student ORDER BY birthday DESC ,sex ;
-- 获取成绩前2名的信息 分页语句一定放在最后
SELECT *FROM result ORDER BY student_result DESC LIMIT 2;
字符串:
-- 拼接字符串
SELECT CONCAT('糯米','啊啊啊撒','删掉');
-- 字符长度
SELECT LENGTH('asssssssggg');
-- 转大写
SELECT UPPER('asdf');
-- 转小写
SELECT LOWER('ASDFG');
-- 去除左边空格
SELECT LTRIM(' aaaasdrf ');
-- 去除右边空格
SELECT RTRIM(' aaaasdff ');
-- 去除两端空格
SELECT TRIM( 'asd sddsds ');
-- 替换
SELECT REPLACE('hello word','word','世界');
-- 有条件的替换
SELECT INSERT('hello word',6,1,'世界');
-- 系统日期
SELECT CURDATE();
-- 日期的时间
SELECT now();
-- 时间
SELECT CURTIME();
-- 添加日期
SELECT DATE_ADD(NOW(),INTERVAL 5 MONTH )
-- 减少时间
SELECT DATE_SUB(NOW(),INTERVAL 5 day)
-- 日期的格式化 y完整年 y两位数的年
SELECT DATE_FORMAT(CURDATE(),'%y年%m月%d日');
SELECT DATE_FORMAT(NOW(),'%y年%m月%d日 %H点%i分%s秒')
-- 返回从0到1之间的随机
SELECT RAND();
-- 取数值表达绝对值
SELECT ABS(-45);
-- 取大于或小于指定数值,表达最小整数
SELECT CEILING(43.5);
-- 取小于或者等于指定表达的最大整数、
SELECT FLOOR(43.5);
-- 取数值表达幂值
SELECT POWER(5,2);
-- 数值表达式四舍五入指定精度
SELECT ROUND(43.543,1);
-- 对于正数发回+去,对于负数返回-1
SELECT SIGN(-43);
-- 取浮点表达平方根
SELECT SQRT(9);
update student set login_pwd=REPLACE(login_pwd,'o','0')
-- 查询年龄超过20周岁的Y2的学生信息
SELECT * FROM student WHERE
birthday<=DATE_ADD(CURDATE(),INTERVAL 20 YEAR);
-- 获取月份
SELECT MONTH(NOW())
-- 查询1月份过生日的学生信息
SELECT * FROM student WHERE MONTH(birthday)='01';
-- 今天生日的学生
-- 翻转
SELECT REVERSE('123@qq.com');
-- 获取字符的位置
SELECT INSTR('moc.qq@321','.');
-- 截取字符串
SELECT RIGHT ('1234@qq.com',3);
SELECT RIGHT (email,INSTR(REVERSE(email),'.')-1) FROM student
10000~99999999
SELECT RAND()*(99999999-10000)+10000;
-- 取整
SELECT FLOOR(RAND()*(99999999-10000)+10000);
-- 拼接
SELECT CONCAT(FLOOR(RAND()*(99999999-10000)+10000),'@qq.com');
聚合函数使用方法:
聚合函数:
聚合函数 sum,avg,max,min,count
-- 总分
SELECT Eventssum(student_result) FROM result;
SELECT student_no,SUM(student_result)FROM
result WHERE student_no='bq0010';
-- 平均分 avg
SELECT AVG(student_result) FROM result;
-- 最大值 max 最小值min
SELECT MAX(student_result),MIN(student_result)
FROM result;
-- 计算 count
SELECT COUNT(*) FROM student;
SELECT COUNT(*) FROM student WHERE grade_id=1;
SELECT COUNT(*) FROM result WHERE student_result>40;
-- 查询学生总人数
SELECT COUNT(*) FROM student;
-- 查询java初级的总学时
SELECT SUM(class_hour)FROM
subjects WHERE subject_name='html';
-- 学号为s1101004的学生第一期考试总成绩
SELECT student_no,SUM(student_result)FROM
result WHERE student_no='1004';
SELECT SUM(student_result) FROM result WHERE
student_no='1004' AND subject_id=1;
-- 学号为s1101004的学生第一期所有考试的平均值
SELECT AVG(student_result) FROM result WHERE student_no='1004';
SELECT AVG(student_result) FROM result WHERE
student_no='1004' AND subject_id=1;
-- 查询2013年3月22日科目“c#"语言和数据
SELECT MAX(student_result),MIN(student_result) ,AVG (student_result)FROM result WHERE examDate='2023-05-06';
SELECT MAX(student_result),MIN(student_result) ,AVG (student_result)FROM result WHERE YEAR(exmdate)=2013 AND MONTH(examdate)=3 AND
DAY(examdate)=22 AND subject_id=1
-- 查询2013
SELECT AVG(student_result) FROM result WHERE YEAR(exmdate)=2013 AND MONTH(examdate)=3 AND
DAY(examdate)=22 AND subject_id=1;
SELECT AVG(student_result)FROM result WHERE subject_id=1;
SELECT result_id,student_result
CASE
WHEN student_result<60 AND student_result>=0 THEN '不及格'
WHEN student_result>=60 AND student_result<=80 THEN ' 及格'
WHEN student_result>80 AND student_result<=100 THEN ' 优秀'
ELSE '作弊'
END AS '成绩等级'
FROM result
# 分组查询
# 每个班级的学生的总人数
SELECT grade_id, COUNT(*) FROM student GROUP BY grade_id;
SELECT grade_id,sex, COUNT(*)FROM student GROUP BY grade_id,sex
ORDER BY grade_id;
-- 每个科目的平均分
SELECT AVG (student_result) FROM result
SELECT subject_id, AVG (student_result) FROM result GROUP BY subject_id;
# 班级的学生的总人数>15的班级
SELECT grade_id,COUNT(*),sex FROM student GROUP BY grade_id,sex;
SELECT grade_id,COUNT(*) FROM student GROUP BY grade_id
HAVING COUNT(*)>3;
SELECT grade_id,COUNT(*) FROM student GROUP BY grade_id,sex
HAVING COUNT(*)>3 AND sex='男';
SELECT grade_id,COUNT(*) FROM student WHERE sex='男'
GROUP BY grade_id HAVING COUNT(*)>3;