MySQL学习(六)

MySQL学习(六)
本MySQL学习系列博客共七篇,此为第六篇。
目录:
1、实现内容
2、代码示例
3、运行结果

1、实现内容:

图1.1 实现内容

2、代码示例:
#1、查询计算机学院学生的最高年龄、最低年龄及之间相差的年龄数。
select max(t.age) as max_age, min(t.age) as min_age, max(t.age) - min(t.age) as D_value
from (
	select student_id, v_student.department_id,
	(extract(year from current_date()) - extract(year from student_birthday)) as age
	from v_student, v_department
	where v_student.department_id = v_department.department_id
	and department_name = '计算机学院'
)t;

#2、查询总成绩在200分以上(含200分)的学生编号和总成绩。
select student_id, sum(grade) as sum_grade
from v_student_score
group by student_id
having sum(grade) >= 200;

#3、查询选修两门以上的课程的学生学号和选课门数。
select student_id, count(student_id) as num
from v_student_score
group by student_id
having count(*) > 2;

#4、求选课在2门以上且各门课程均及格的学生的学号及其总成绩,查询结果按总成绩降序列出。
select student_id, sum(grade) as sum_grade 
from v_student_score
where grade >= 60
group by student_id
having count(*) >= 2
order by sum(grade) desc;

#5、查询至少有一门课程在80分以上的学生。
select v_student_score.student_id, student_name
from v_student, v_student_score
where grade > 80
and v_student.student_id = v_student_score.student_id
group by v_student_score.student_id
having count(*) >= 1;

#6、查询教材名称中不包含“Database”、“SQL”、“数据库”等字样的教材信息。
select * 
from v_textbook
where textbook_name not like '%Database%'
and textbook_name not like '%SQL%'
and textbook_name not like '%数据库%';

#7、为院系表的院系负责人增加外键约束。
#首先根据院系表创建一个新表v_admin
create table v_admin(
	select department_administrator, department_phone
	from v_department
);
alter table v_admin
add primary key(department_administrator);
#增加外键约束
alter table v_department
	add constraint fk_admin
	foreign key(department_administrator)
	references v_admin(department_administrator);
#查看外键
select * 
from information_schema.TABLE_CONSTRAINTS as t
where t.table_name = 'v_department';

#8、把讲授数据库的教师的工龄增加1年。
update v_teacher
left join (
	select v_teacher_course_task.teacher_id
	from v_teacher_course_task, v_course
	where v_course.course_id = v_teacher_course_task.course_id
	and v_course.course_name = '数据库'
)t
on v_teacher.teacher_id = t.teacher_id
set teacher_workyear = date_add(teacher_workyear, interval -1 year)
where v_teacher.teacher_id = t.teacher_id;

select * from v_teacher;

#9、将课程名称为“数据库”的成绩增加1分。
update v_student_score
left join(
	select v_student_score.course_id
	from v_student_score, v_course
	where v_course.course_name = '数据库'
	and v_course.course_id = v_student_score.course_id
)t
on v_student_score.course_id = t.course_id
set grade = grade + 1
where v_student_score.course_id = t.course_id;

3、运行结果:
(1)查询计算机学院学生的最高年龄、最低年龄及之间相差的年龄数。

图3.1 第1题执行结果
(2)查询总成绩在200分以上(含200分)的学生编号和总成绩。

图3.2 第2题执行结果
(3)查询选修两门以上的课程的学生学号和选课门数。

图3.3 第3题执行结果
(4)求选课在2门以上且各门课程均及格的学生的学号及其总成绩,查询结果按总成绩降序列出。

图3.4 第4题执行结果
(5)查询至少有一门课程在80分以上的学生。

图3.5  第5题执行结果
(6)查询教材名称中不包含“Database”、“SQL”、“数据库”等字样的教材信息。

图3.6 第6题执行结果
(7)为院系表的院系负责人增加外键约束。

图3.7 第7题执行结果
(8)把讲授数据库的教师的工龄增加1年。

图3.8 第8题执行结果
(9)将课程名称为“数据库”的成绩增加1分。

图3.9 第9题执行结果

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值