SELECTcount(1)as cnt
FROM
teacher
WHERE
t_name like"李%"
2.2 查询男生、女生人数
SELECT
s.s_sex,count(1)as 人数
FROM
student s
groupby
s.s_sex
2.3 查询名字中含有"风"字的学生信息
SELECT*FROM
student
WHERE
s_name like"%风%"
3. 日期相关例题(6题)
3.1 查询各学生的年龄
(按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一)
-- if函数select
a.*,year(NOW())-year(a.s_brith)-if(DATE_FORMAT(now(),"%m%d")>DATE_FORMAT(a.s_brith,"%m%d"),0,1)as age
FROM
student a
-- case函数select s_brith,(DATE_FORMAT(NOW(),'%Y')-DATE_FORMAT(s_brith,'%Y')-(casewhen DATE_FORMAT(NOW(),'%m%d')>DATE_FORMAT(s_brith,'%m%d')then0else1end))as age
from student;
3.2 查询本周过生日的学生
SELECT*FROM
student
WHERE
WEEKOFYEAR(STR_TO_DATE(concat(year(NOW()),DATE_FORMAT(s_brith,'%m%d')),"%Y%m%d"))=WEEKOFYEAR(NOW())-- WEEK(DATE_FORMAT(NOW(),'%Y%m%d'))=WEEK(s_birth)
3.3 查询下周过生日的学生
SELECT*FROM
student
WHERE
WEEKOFYEAR(STR_TO_DATE(concat(year(NOW()),DATE_FORMAT(s_brith,'%m%d')),"%Y%m%d"))=WEEKOFYEAR(NOW()+interval"7"day)-- WEEK(DATE_FORMAT(NOW(),'%Y%m%d'))+1=WEEK(s_birth)
SELECT*FROM
student
WHERE
s_brith like"1990%"-- left(s_brith,4)="1990"-- year(s_brith)="1990"
4. 开窗函数查询(7题)
4.1 按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩
方法一:开窗函数
select
a.*,avg(a.s_score)over(PARTITIONby a.s_id)as avg_score
FROM
score a
方法二:临时表连接
SELECT
a.*,
t.avg_score
FROM
score a,(SELECT
a.s_id,round(avg(a.s_score),2)as avg_score
FROM
score a
groupby
a.s_id) t
WHERE
a.s_id=t.s_id
orderby
t.avg_score desc
方法三:长型数据转为宽型数据
SELECT
a.s_id,
ifnull((select s_score from score where s_id=a.s_id and c_id="01"),0)as"语文",
ifnull((select s_score from score where s_id=a.s_id and c_id="02"),0)as"数学",
ifnull(