— 获取当前日期加时间
SELECT NOW();
— 获取当前日期
SELECT CURDATE();
— 获取当前时间
SELECT CURTIME();
— 获取某个日期的月份
SELECT month(‘1990-5-6’);
— 获取月份的英文表示
SELECT monthname(‘1990-5-6’);
— 获取星期的英文表示
SELECT dayname(NOW());
— 返回当前是一周中的第几天
SELECT DAYOFweek(NOW());
— 返回当前周是一年中的第几周
SELECT week(NOW());
— 返回当前日期是当月的第几天
SELECT DAYOFMONTH(NOW());
— 返回日期中的年份
SELECT year(NOW());
— 增加日期
— 计算未来5天是周几
SELECT dayname(date_add(NOW(),INTERVAL 5 day));
SELECT dayname(date_add(NOW(),INTERVAL 5 year));
SELECT date_add(NOW(), INTERVAL 5 MONTH);
SELECT date_add(NOW(), INTERVAL 5 HOUR);
SELECT date_add(NOW(), INTERVAL 5 MINUTE);
SELECT date_add(NbbbbbbbbOW(), INTERVAL 1000 SECOND);
— 过去5天是周几
SELECT dayname(date_sub(NOW(),INTERVAL 5 day));
— 计算时间差
SELECT DATEDIFF(‘2022-3-16′,’1998-3-16’)/365;
— 数字格式化函数
SELECT FORMAT(‘6761237.1278’,2);
— 绝对值函数
SELECT ABS(-123);
— 开平方
SELECT SQRT(16);
— 求余数,也叫取模
SELECT mod(5,2);
— 向上取整
SELECT CEIL(4.111111);
— 向下取整
SELECT FLOOR(4.99999);
— 生成随机数
SELECT ROUND(RAND() * 10);
— 四舍五入
SELECT ROUND(4.13489, 3);
— 求次方
SELECT pow(3,3);
— 截取数字
SELECT TRUNCATE(8123.1291, 2);
— 获取当前时间
SELECT NOW();
— 计算从当前日期起,未来333天那天是周几
SELECT dayname(date_add(NOW(),INTERVAL 333 DAY));
— 计算从当前日期起,未来108天的月份是几月份
SELECT MONTH(date_add(NOW(),INTERVAL 108 day));
— 计算日期’2022-3-14 11:04:56’和’2000-5-15 12:00:30′
SELECT DATEDIFF(‘2022-3-14 11:04:56′,’2000-5-15 12:00:30’);
— 假设学生在校4年毕业,查询学生信息表中每个同学的毕业年份是多少
SELECT year(DATE_ADD(begintime,INTERVAL 4 year)) FROM studentinfo;
— 计算每个同学的入学日期与出生日期的时间之差
SELECT DATEDIFF(begintime,birthday) from studentinfo;
— 查询每个同学出生日期对应的星期
SELECT DAYNAME(birthday) from studentinfo;
— 随机生成0 – 999之间的数
SELECT ROUND(rand() * 999);
— 对金额992382.49759进行下一步操作
— (1)格式化,保留两位小数
SELECT FORMAT(‘992382.49759’,2);
— (2)向上取整
SELECT CEIL(992382.49759);
— (3)四舍五入,保留一位小数
SELECT ROUND(992382.49759,1);
— 模糊查询
— 查学生信息表中姓张的同学
SELECT studentname from studentinfo WHERE studentname LIKE ‘张%’;
— 差名字中带有信字的同学的姓名,年龄,省份
SELECT studentname,age,province FROM studentinfo WHERE studentname LIKE ‘%信%’;
— 查姓名为两个字的姓张的同学
SELECT*FROM studentinfo WHERE studentname LIKE ‘张_’;
— 查姓名为三个字的姓张的同学
SELECT*FROM studentinfo WHERE studentname LIKE ‘张__’;
— 查姓名为两个字的结尾为新并且是两个字的同学
SELECT*FROM studentinfo WHERE studentname LIKE ‘_信’;
— 查询所有同学的平均年龄
SELECT avg(age) FROM studentinfo;
— 查询学号为20200912的同学的所有成绩的平均分
SELECT avg(exam) FROM exam WHERE studentid = ‘20200912’;
— 查询某校区总共有多少名学生
SELECT COUNT() from studentinfo; — count()不会排除为null的记录
SELECT COUNT(age) from studentinfo; — 指明某个字段将会排除为空记录
— 查询某校区男声有多少人
SELECT COUNT(*) from studentinfo WHERE gender = ‘男’;
— 查年龄最大的同学的年龄是多少
SELECT max(age) FROM studentinfo;
— 查年龄最小的同学的年龄是多少
SELECT min(age) FROM studentinfo;
— 查询课程表中课时最多的课时数是多少
SELECT max(credithour) FROM subject;
— 学号为20200912的同学的所有成绩的总分
SELECT SUM(exam) FROM exam WHERE studentid = ‘20200912’;
上机练习1:(p137)
— 第一小题
SELECT * from subject WHERE subjectname LIKE ‘%数据库%’ ORDER BY credithour ASC;
— 第二小题
SELECT studentname,age,birthday FROM studentinfo WHERE phone like ‘151%’;
— 第三小题
SELECT * FROM studentinfo WHERE studentname LIKE ‘刘%’;
— 第四小题
SELECT id,studentname,birthday FROM studentinfo WHERE birthday BETWEEN’1994-12-31’and’1995-12-31′;
上机练习2:(p138)
— 第一小题
SELECT count(*) from studentinfo;
— 第二小题
SELECT sum(exam) FROM exam WHERE studentid = ‘2021001003’;
— 第三小题
SELECT AVG(exam) FROM exam WHERE studentid = ‘2021001004’;
— 第四小题
SELECT MAX(exam) from exam WHERE subjectid = ‘2’;
SELECT Min(exam) from exam WHERE subjectid = ‘2’;
SELECT avg(exam) from exam WHERE subjectid = ‘2’;
— 第五小题
SELECT avg(exam) from exam WHERE subjectid = ‘1’ or exam > 60;
select s.studentname,e.exam,e.subjectid from exam as e RIGHT JOIN studentinfo as s on s.id=e.studentid;
select s.studentname,e.exam,e.subjectid from studentinfo as s LEFT JOIN exam as e on s.id=e.studentid;
select s.studentname,c.classname FROM classinfo as c RIGHT JOIN studentinfo as s on c.id=s.classid;
select p.id ‘员工编号’, p.empname’员工姓名’,e.repto’上司编号’,e.empname’上司姓名’ from employ e INNER JOIN employ p on e.id=p.id;
select g.gradename ‘年级名称’ , c.classname ‘班级名’ from grade g LEFT JOIN classinfo c on c.id=g.id;
select t.