MySQL练习:50道经典SQL练习题(1.4w字包全面)

该文章已生成可运行项目,

文章目录


数据库设计

学生表 Student

存储学生基本信息的表,包括学生编号、姓名、出生日期和性别。

字段类型描述
SIdvarchar(10)学生编号
Snamevarchar(10)学生姓名
Sagedatetime学生出生日期
Ssexvarchar(10)学生性别
-- 建立学生表Student
create table Student(
SId varchar(10),
Sname VARCHAR(10),
Sage datetime,
Ssex varchar(10)
);

当封面使用下图
当封面

课程表 Course

存储课程信息的表,包括课程编号、课程名称和授课教师编号。

字段类型描述
CIdvarchar(10)课程编号
Cnamevarchar(10)课程名称
TIdvarchar(10)教师编号
-- 建立课程表Course
create table Course(
CId varchar(10),
Cname varchar(10),
TId varchar(10)
);

教师表 Teacher

存储教师信息的表,包括教师编号和姓名。

字段类型描述
TIdvarchar(10)教师编号
Tnamevarchar(10)教师姓名
-- 建立教师表 Teacher
create table Teacher(
TId varchar(10),
Tname Varchar(10)
);

成绩表 SC1

存储学生成绩信息的表,包括学生编号、课程编号和分数。

字段类型描述
SIdvarchar(10)学生编号
CIdvarchar(10)课程编号
scoredecimal(18,1)学生成绩
-- 成绩表SC1
create table SC1(
SId varchar(10),
CId varchar(10),
score decimal(18,1)
);

数据插入

以下是对学生表、课程表、教师表和成绩表的数据插入示例。

-- 插入学生数据
insert into Student values('01' , '赵雷' , '1990-01-01' , '男'); 
insert into Student values('02' , '钱电' , '1990-12-21' , '男'); 
insert into Student values('03' , '孙风' , '1990-12-20' , '男'); 
insert into Student values('04' , '李云' , '1990-12-06' , '男'); 
insert into Student values('05' , '周梅' , '1991-12-01' , '女'); 
insert into Student values('06' , '吴兰' , '1992-01-01' , '女'); 
insert into Student values('07' , '郑竹' , '1989-01-01' , '女'); 
insert into Student values('09' , '张三' , '2017-12-20' , '女'); 
insert into Student values('10' , '李四' , '2017-12-25' , '女'); 
insert into Student values('11' , '李四' , '2012-06-06' , '女'); 
insert into Student values('12' , '赵六' , '2013-06-13' , '女'); 
insert into Student values('13' , '孙七' , '2014-06-01' , '女'); 
insert into Student values('14' , '李四' , '2012-06-06' , '女'); 
insert into Student values('14' , '李四' , '2012-09-04' , '女'); 

...
-- 插入课程数据
insert into Course values('01' , '语文' , '02'); 
insert into Course values('02' , '数学' , '01'); 
insert into Course values('03' , '英语' , '03');
...
-- 插入教师数据
insert into Teacher values('01' , '张三'); 
insert into Teacher values('02' , '李四'); 
insert into Teacher values('03' , '王五'); 
...
-- 插入成绩数据
insert into SC1 values('01' , '01' , 80); 
insert into SC1 values('01' , '02' , 90); 
insert into SC1 values('01' , '03' , 99); 
insert into SC1 values('02' , '01' , 70); 
insert into SC1 values('02' , '02' , 60); 
insert into SC1 values('02' , '03' , 80); 
insert into SC1 values('03' , '01' , 80); 
insert into SC1 values('03' , '02' , 80); 
insert into SC1 values('03' , '03' , 80); 
insert into SC1 values('04' , '01' , 50); 
insert into SC1 values('04' , '02' , 30); 
insert into SC1 values('04' , '03' , 20); 
insert into SC1 values('05' , '01' , 76); 
insert into SC1 values('05' , '02' , 87); 
insert into SC1 values('06' , '01' , 31); 
insert into SC1 values('06' , '03' , 34); 
insert into SC1 values('07' , '02' , 89); 
insert into SC1 values('07' , '03' , 98);
...

SQL查询示例

1. 查询"01"课程比"02"课程成绩高的学生信息及课程分数

-- 查询"01"课程比"02"课程成绩高的学生信息及课程分数
select c.*,d.score01,d.score02,e.score as score03 from 
Student as c
join
(
    select a.SID ,a.score as score01,b.score as score02 from 
    (select * from SC where Cid='01') as a
    left join
    (select * from SC where Cid='02') as b
    on a.Sid=b.SId
    where a.score > if(b.score is null,0 ,b.score)
) as d
on c.SId=d.SId
join 
(select * from SC where Cid='01') as e
on c.SId=e.Sid;

此查询通过连接学生表和成绩表,找出了在"01"课程中成绩高于"02"课程的学生,并显示了他们的详细信息和两门课程的分数。

2. 查询同时存在"01"课程和"02"课程的情况

-- 查询同时存在"01"课程和"02"课程的情况
select 
    Sid,
    sum(case when CId='01' then score else 0 end)  as score01,
    sum(case when CId='02' then score else 0 end)  as score02,
    sum(case when CId='03' then score else 0 end)  as score03
from 
    SC
group by Sid
having score01 > 0 and score02 > 0;

此查询通过分组和条件筛选,找出了同时选修"01"和"02"课程的学生,并计算了他们在这两门课程的成绩。

3. 查询存在"01"课程但可能不存在"02"课程的情况

-- 查询存在"01"课程但可能不存在"02"课程的情况
select 
    Sid,
    sum(case when CId='01' then score else 0 end)  as score01,
    sum(case when CId='02' then score else null end)  as score02,
    sum(case when CId='03' then score else 0 end)  as score03
from 
    SC
group by Sid
having score01 > 0;

此查询通过使用case语句和null值处理,找出了选修了"01"课程但可能未选修"02"课程的学生,并显示了他们的成绩。

4. 查询不存在"01"课程但存在"02"课程的情况

-- 查询不存在"01"课程但存在"02"课程的情况
select 
    Sid,
    sum(case when CId='01' then score else 0 end)  as score01,
    sum(case when CId='02' then score else null end)  as score02,
    sum(case when CId='03' then score else 0 end)  as score03
from 
    SC
group by Sid
having score01 = 0 and score02 > 0;

此查询找出了未选修"01"课程但选修了"02"课程的学生,并显示了他们的成绩。

5. 查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩

-- 查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩
select 
    a.SId,
    b.Sname,
    avg(score) as avg_score 
from 
    SC as a
join 
    Student as b
on
    a.Sid=b.Sid
group by 
    a.SId,b.Sname
having 
    avg_score > 60;

此查询计算了每个学生的平均成绩,并筛选出平均成绩大于等于60分的学生。

6. 查询在 SC 表存在成绩的学生信息

-- 查询在 SC 表存在成绩的学生信息
select distinct a.* from 
Student as a
join
SC as b
on a.SId=b.SId;

此查询通过连接学生表和成绩表,找出了所有有成绩记录的学生信息。

7. 查询所有同学的学编号、学生姓名、选课总数、所有课程的总成绩

-- 查询所有同学的学编号、学生姓名、选课总数、所有课程的总成绩
select  a.SId,a.Sname,count(b.SId) as num,sum(b.score) as sum_score from 
Student as a
left join 
SC as b
on
a.SId=b.Sid
group by a.SId,a.Sname;

此查询计算了每个学生的选课总数和所有课程的总成绩。

8. 查询姓“李”的老师的数量

-- 查询姓“李”的老师的数量
select count(1) as num from 
Teacher
where Tname like '李%';

此查询通过使用like语句,找出了所有姓“李”的教师数量。

9. 查询学过“张三”老师授课的同学的信息

-- 查询学过“张三”老师授课的同学的信息
SELECT
    *
FROM
    Student
WHERE
    SId IN (
        SELECT
            Sid
        FROM
            SC
        WHERE
            CId IN (
                SELECT
                    Cid
                FROM
                    Course
                WHERE
                    TId = (
                        SELECT
                            TId
                        FROM
                            Teacher
                        WHERE
                            Tname = '张三'
                    )
            )
    );

此查询通过多层连接和条件筛选,找出了所有选修过“张三”老师课程的学生信息。

10.查询没有学全所有课程的同学的信息

-- 查询没有学全所有课程的同学的信息
select a.SId,a.Sname,a.Sage,a.Ssex,count(b.SId) as num from 
Student as a
left join
SC as b
on a.SId=b.SId
group by a.SId,a.Sname,a.Sage,a.Ssex
having num < (select count(1) from Course);

此查询通过比较学生选修课程数和总课程数,找出了没有学全所有课程的学生。

11. 查询至少有一门课与学号为"01"的同学所学相同的同学的信息

-- 查询至少有一门课与学号为"01"的同学所学相同的同学的信息
select * from 
Student
where 
Sid in 
(select distinct  SId from SC
where Sid!='01' and  CId in (select CId from SC where SId='01'));

此查询通过比较学号为"01"的学生所选课程与其他学生所选课程,找出了至少有一门相同课程的其他学生。

12. 查询和"01"号的同学学习的课程完全相同的其他同学的信息

-- 查询和"01"号的同学学习的课程完全相同的其他同学的信息
create view v_tmp as select CId from SC where SId='01';

select * from Student
where 
SId in 
(
    SELECT
        SId
    FROM
        SC
    WHERE
        SId IN (
            SELECT
                SId
            FROM
                SC
            WHERE
                SId != '01'
            GROUP BY
                SId
            HAVING
                count(1) = ( -- 1、第一次取出课程数量和01相同的学生
                    SELECT
                        count(1) AS num
                    FROM
                        v_tmp
                )
        )
    AND CId IN (SELECT * FROM v_tmp)-- 2、取出至少有一个课程和01相同的学生
    GROUP BY
        SId
    HAVING
        count(1) = ( -- 3、取出和01完全相同的学生
            SELECT
                count(1) AS num
            FROM
                v_tmp
        )
);

此查询通过创建视图和使用分组、计数和比较,找出了和学号为"01"的学生学习课程完全相同的其他学生。

13. 查询没学过"张三"老师讲授的任何一门课程的学生姓名

-- 查询没学过"张三"老师讲授的任何一门课程的学生姓名
select * from 
Student
where
SId not in 
(select Sid from 
SC
where Cid  in 
(select Cid from 
Course
where 
TId = (select TId from Teacher where Tname = '张三')));

此查询通过排除法找出了没有选修过“张三”老师任何课程的学生。

14. 查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩

-- 查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩
select a.SId,a.Sname,b.avg_score from 
Student as a
join
(select 
    SId,
    sum(case when score < 60 then 1 else 0 end) as num,
    avg(score) as avg_score
from 
    SC
group by SId
having num >= 2) as b
on a.SId=b.SId;

此查询通过计算不及格课程的数量和平均成绩,找出了两门及以上不及格课程的学生。

15. 查询"01"课程分数小于60,按分数降序排列的学生信息

-- 查询"01"课程分数小于60,按分数降序排列的学生信息
select b.* from 
SC as a
join
Student as b
on a.Sid=b.Sid
where Cid='01' and score < 60
order by a.score desc;

此查询通过连接学生表和成绩表,并筛选出“01”课程分数小于60的学生,按分数降序排列。

16. 按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩

-- 按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩
select a.*,b.avg_score from
SC as a
join
(select 
Sid,
avg(score) as avg_score
from 
SC
group by Sid) as b
on a.SId=b.SId
order by b.avg_score desc;

此查询通过计算每个学生的平均成绩,并按平均成绩降序排列显示所有学生的所有课程成绩。

17. 查询各科成绩最高分、最低分和平均分

-- 查询各科成绩最高分、最低分和平均分
select 
    CId,
    max(score) as max_score,
    min(score) as min_score,
    avg(score) as avg_score,
    round(count(case when score >=60 then 1 else null end) / count(1) *100,2) as pass_rate,
    round(count(case when score >=70 and score<80 then 1 else null end) / count(1) *100,2) as average_rate,
    round(count(case when score >=80 and score<90 then 1 else null end) / count(1) *100,2) as good_rate,
    round(count(case when score >=90  then 1 else null end) / count(1) *100,2) as excellent_rate
from 
    SC
group by 
    CId
order by count(1) desc ,CId asc;

此查询通过计算每门课程的最高分、最低分、平均分以及及格率、中等率、优良率和优秀率,按选修人数降序排列。

18. 按各科平均成绩进行排序,并显示排名,Score重复时保留名次空缺

-- 按各科平均成绩进行排序,并显示排名,Score重复时保留名次空缺
SELECT @i:=0;
select Cid,avg(score) as avg_score ,(@i:=@i+1) from
SC
group by 
Cid
order by avg_score;

此查询通过使用变量@i来为每个科目的平均成绩进行排名,当有相同的平均成绩时,保留名次空缺。

19. 按各科平均成绩进行排序,并显示排名,Score重复时不保留名次空缺

-- 按各科平均成绩进行排序,并显示排名,Score重复时不保留名次空缺
select Cid,avg(score) as avg_score ,(@i:=@i+1) from
SC,
(SELECT @i:=0) AS j 
group by 
Cid
order by avg_score;

此查询通过使用变量@i来为每个科目的平均成绩进行排名,当有相同的平均成绩时,不保留名次空缺。

20. 查询学生的总成绩,并进行排名,总分重复时保留名次空缺

-- 查询学生的总成绩,并进行排名,总分重复时保留名次空缺
select a.*,(@i:=@i+1) as rank from 
(
    select SId,sum(score) as sum_score from
    SC
    group by 
    SId
    order by sum_score desc
) as a,
(SELECT @i:=0) AS j 

此查询通过计算每个学生的总成绩,并使用变量@i进行排名,当有相同的总成绩时,保留名次空缺。

21. 查询学生的总成绩,并进行排名,总分重复时不保留名次空缺

-- 查询学生的总成绩,并进行排名,总分重复时不保留名次空缺
select a.*,(@i:=@i+1) as rank from 
(
    select SId,sum(score) as sum_score from
    SC
    group by 
    SId
    order by sum_score desc
) as a,
(SELECT @i:=0) AS j 

此查询通过计算每个学生的总成绩,并使用变量@i进行排名,当有相同的总成绩时,不保留名次空缺。

22. 统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[60-0]及所占百分比

-- 统计各科成绩各分数段人数及所占百分比
select a.*,a.num / b.num * 100 as p from
(select 
    CId,
    case 
        when score >= 0 and score <=60 then '[0-60]'
        when score > 60 and score <=70 then '[60-70]'
        when score > 70 and score <=85 then '[70-85]'
        else '[85-100]' end as flow,
    count(1) as num
from
    SC
group by 
    Cid,
    case 
        when score >= 0 and score <=60 then '[0-60]'
        when score > 60 and score <=70 then '[60-70]'
        when score > 70 and score <=85 then '[70-85]'
        else '[85-100]' end
) as a
join
    (select Cid,count(1) as num from 
    SC
    group by Cid
) as b

此查询统计了每个课程在不同分数段的学生人数,并计算了每个分数段所占的百分比。

23. 查询各科成绩前三名的记录

-- 查询各科成绩前三名的记录
(select * from 
SC
where CId='01'
order by score desc
limit 3)
union all
(select * from 
SC
where CId='02'
order by score desc
limit 3)
union all
(select * from 
SC
where CId='03'
order by score desc
limit 3)

此查询通过使用union all合并了每个课程成绩前三名的记录,显示了各科成绩前三的学生信息。

24. 查询每门课程被选修的学生数

-- 查询每门课程被选修的学生数
select Cid,count(1) as num from 
SC
group by CId

此查询通过分组和计数,统计了每门课程被选修的学生数量。

25. 查询只选修两门课程的学生学号和姓名

-- 查询只选修两门课程的学生学号和姓名
select a.Sid,a.SName from 
Student as a
join
(select SId,count(1) as num from
SC
group by SId
having num = 2
) as b
on a.Sid=b.Sid

此查询通过连接学生表和成绩表,并使用having子句筛选出只选修两门课程的学生。

26. 查询男生女生人数

-- 查询男生女生人数
select SSex,count(1) as num from 
Student
group by 
SSex

此查询通过分组和计数,统计了男生和女生的人数。

27. 查询名字中含有“风”字的学生信息

-- 查询名字中含有“风”字的学生信息
select * from 
Student
where 
Sname like '%风%'

此查询通过使用like语句,找出了名字中含有“风”字的学生信息。

28. 查询同名同性学生名单,并统计同名人数

-- 查询同名同性学生名单,并统计同名人数
select distinct  a.* from 
Student as a
join
Student as b
on a.SName=b.Sname and a.SId!=b.SId

select count(distinct a.SId) as num from 
Student as a
join
Student as b
on a.SName=b.Sname and a.SId!=b.SId;

此查询通过自连接学生表,找出了同名同性的学生,并统计了同名的人数。

29. 查询1990年出生的学生名单

-- 查询1990年出生的学生名单
select * from Student where year(Sage)='1990';
select * from Student where substring(Sage,1,4)='1990';

此查询通过提取出生日期的年份,找出了1990年出生的学生。

30. 查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列

-- 查询每门课程的平均成绩
select CId,avg(score) as avg_score from 
SC
group by CId
order by avg_score desc,Cid asc

此查询通过计算每门课程的平均成绩,并按平均成绩降序排列,若平均成绩相同,则按课程编号升序排列。

31. 查询平均成绩大于等于85的所有学生的学号、姓名和平均成绩

-- 查询平均成绩大于等于85的所有学生的学号、姓名和平均成绩
select a.SId,b.SName,avg(score) as avg_score from 
SC as a
join
Student as b
on a.Sid=b.Sid
group by 
a.SId,b.SName
having avg_score >= 85;

此查询通过连接学生表和成绩表,计算了每个学生的平均成绩,并筛选出平均成绩大于等于85的学生。

32. 查询课程名称为「数学」,且分数低于 60 的学生姓名和分数

-- 查询课程名称为「数学」,且分数低于 60 的学生姓名和分数
select b.Sname, a.score from 
SC as a
join
Student as b
on a.Sid = b.Sid
where Cid = (select Cid from Course where CName = '数学') 
and score < 60;

此查询通过连接学生表和成绩表,并筛选出课程名称为「数学」且分数低于60分的学生姓名和分数。

33. 查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况)

-- 查询所有学生的课程及分数情况(包括没有成绩和未选课的学生)
select * from 
Student as a
left join
SC as b
on a.Sid = b.Sid;

此查询通过左连接学生表和成绩表,显示了所有学生的课程及分数情况,包括那些没有成绩或没有选课的学生。

34. 查询任何一门课程成绩在 70 分以上的姓名、课程名称和分数

-- 查询任何一门课程成绩在 70 分以上的姓名、课程名称和分数
select a.SName, c.Cname, b.score from
Student as a
join
SC as b
on a.SId = b.SId
join
Course as c
on b.Cid = c.Cid
where b.score > 70;

此查询通过连接学生表、成绩表和课程表,找出了任何一门课程成绩在70分以上的学生的姓名、课程名称和分数。

35. 查询不及格的课程

-- 查询不及格的课程
select * from
SC
where score < 60;

此查询通过简单的筛选条件,找出了所有不及格的课程记录。

36. 查询课程编号为 01 且课程成绩在 80 分以上的学生的学号和姓名

-- 查询课程编号为 01 且课程成绩在 80 分以上的学生的学号和姓名
select a.Sid, b.Sname, a.score from
SC as a
join
Student as b
on a.Sid = b.Sid
where CId = '01' and score >= 80;

此查询通过连接学生表和成绩表,并筛选出课程编号为01且成绩在80分以上的学生的学号和姓名。

37. 求每门课程的学生人数

-- 求每门课程的学生人数
select CId, count(1) as num from
SC
group by CId;

此查询通过分组和计数,统计了每门课程的学生人数。

38. 成绩不重复的情况下,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩

-- 成绩不重复的情况下,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩
select * from 
Student as a
join
(
    select * from 
    SC
    where Cid in(
    select Cid from 
    Course
    where Tid = (select TId from Teacher where Tname = '张三')
    )
    and score = (select max(score) from SC where Cid in (select Cid from Course where Tid = (select TId from Teacher where Tname = '张三')))
) as b
on a.Sid = b.Sid;

此查询通过连接学生表和成绩表,并筛选出选修「张三」老师所授课程中成绩最高的学生信息及其成绩,假设成绩不重复。

39. 成绩有重复的情况下,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩

-- 成绩有重复的情况下,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩
select * from 
Student as a
join
(
    select SId from 
    SC
    where Cid in (
    select Cid from 
    Course
    where Tid = (select TId from Teacher where Tname = '张三')
    )
    group by SId
    having max(score) = (select max(score) from SC where Cid in (select Cid from Course where Tid = (select TId from Teacher where Tname = '张三')))
) as b
on a.Sid = b.Sid;

此查询在考虑成绩可能有重复的情况下,找出了选修「张三」老师所授课程中成绩最高的学生信息及其成绩。

40. 查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩

-- 查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩
select a.* from 
SC as a,
SC as b
where a.Sid != b.Sid and a.CId != b.CId and a.score = b.score;

此查询通过自连接成绩表,找出了不同课程但成绩相同的学生的学生编号、课程编号和学生成绩。

41. 查询每门课程成绩最好的前两名

-- 查询每门课程成绩最好的前两名
(select * from 
SC
where CId='01'
order by score desc
limit 2)
union all
(select * from 
SC
where CId='02'
order by score desc
limit 2)
union all
(select * from 
SC
where CId='03'
order by score desc
limit 2);

此查询通过分别查询每门课程成绩最好的前两名,然后使用union all合并结果。

42. 统计每门课程的学生选修人数(超过 5 门的课程才统计)

-- 统计每门课程的学生选修人数(超过 5 门的课程才统计)
select Cid, count(1) as num from
SC
group by Cid
having num > 5;

此查询通过分组和计数,统计了每门课程的学生选修人数,只显示超过5门的课程。

43. 检索至少选修两门课程的学生学号

-- 检索至少选修两门课程的学生学号
select SId, count(1) as num from
SC
group by SId
having num >= 2;

此查询通过分组和计数,找出了至少选修两门课程的学生学号。

44. 查询选修了全部课程的学生信息

-- 查询选修了全部课程的学生信息
select SId, count(1) as num from
SC
group by SId
having num = (select count(1) from Course);

此查询通过比较学生选修课程数和总课程数,找出了选修了全部课程的学生。

45. 查询各学生的年龄,只按年份来算

-- 查询各学生的年龄,只按年份来算
select *, year(now()) - year(Sage) as age from 
Student;

此查询通过计算当前年份和学生出生年份的差值,得出学生的岁数。

46. 查询各学生的年龄,按照出生日期来算,当前月份 < 出生年月的月日则,年龄减一

-- 查询各学生的年龄,按照出生日期来算,当前月份 < 出生年月的月日则,年龄减一
select 
*,
year(now()) - year(Sage) as age,
case when date_format(now(),'%m-%d') < date_format(Sage,'%m-%d') then year(now()) - year(Sage) - 1 else year(now()) - year(Sage) end as age
from 
Student;

此查询通过比较当前日期和出生日期,准确计算出学生的年龄。

47. 查询本周过生日的学生

-- 查询本周过生日的学生
select * from 
Student
where week(concat(year(now()),'-',date_format(Sage,'%m-%d'))) = week(now());

此查询通过计算学生出生日期和当前日期的周数,找出本周过生日的学生。

48. 查询下周过生日的学生

-- 查询下周过生日的学生
select *from 
Student
where week(concat(year(now()),'-',date_format(Sage,'%m-%d'))) = week(now()) + 1;

此查询通过计算学生出生日期和当前日期的周数,找出下周过生日的学生。

49. 查询本月过生日的学生

-- 查询本月过生日的学生
select *from 
Student 
where month(concat(year(now()),'-',date_format(Sage,'%m-%d'))) = month(now());

此查询通过计算学生出生日期和当前日期的月份,找出本月过生日的学生。

50. 查询下个月过生日的学生

select *from 
Student
where month(concat(year(now()),'-',date_format(Sage,'%m-%d')))=month(now()) +1;
本文章已经生成可运行项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值