1、实现内容

2、代码示例

3、运行结果


1、实现内容:

 

MySQL 算工作日 mysql计算工龄_查询

图1.1 实验内容

2、代码示例:

#1、求计算机学院学生的总数。
select department_name, count(student_id) as student_number
from v_student, v_department
where v_student.department_id = v_department.department_id
and v_department.department_name = '计算机学院';

#2、查询年龄为工龄若干倍(可以为小数)的教师信息。
select teacher_id, teacher_name,
(extract(year from current_date()) - extract(year from teacher_birthday)) / 
(extract(year from current_date()) - extract(year from teacher_workyear)) as times
from v_teacher;

#3、查询任课数超过2门的教师的编号。
select *
from (
	select teacher_id, count(teacher_id) as task_number 
	from v_teacher_course_task
	group by teacher_id
)t
where t.task_number > 2;

#4、查询院系为计算机学院或经济与工商管理学院且年龄大于等于21的学生的学号、院系名称和姓名
select student_id, department_name, student_name
from v_student, v_department
where (extract(year from current_date()) - extract(year from student_birthday)) >= 21
and v_department.department_id = v_student.department_id
and v_department.department_name in('计算机学院', '工商管理学院');

#5、查询年龄为20或21的学生的学号、院系编号、姓名、年龄。
select student_id, department_id, student_name,
(extract(year from current_date()) - extract(year from student_birthday)) as age 
from v_student
where (extract(year from current_date()) - extract(year from student_birthday)) between 20 and 21;

#6、查询学号为3114005833,3114005849,3214005848,3114005847的学生的平均年龄。
select avg(t.a) as avg_age
from (
	select student_id, (extract(year from current_date()) - extract(year from student_birthday)) as a
	from v_student
	where student_id in('3114005833', '3114005849', '3214005848', '3114005847')
)t;

#7、查询最便宜的名字带“教材”二字的教材的信息。
select textbook_id, textbook_name, press, unit_price, publish_date
from v_textbook, (
	select min(unit_price) as price
	from v_textbook
	where textbook_name like '%教材%'
)t
where t.price = unit_price;

#8、把教师表中年龄小于等于60的计算机教师的年龄提高10%。
#首先根据教师表创建包含年龄项的新表
create table t(
	select teacher_id, teacher_name,
	(extract(year from current_date()) - extract(year from teacher_birthday)) as age
	from v_teacher
	where (extract(year from current_date()) - extract(year from teacher_birthday))< 60
);
#更新年龄
update t
set age = age * 1.1;
#查看更新后的结果
select *
from t;




3、运行结果:

答:(1)求计算机学院学生的总数。

MySQL 算工作日 mysql计算工龄_更新_02

图3.1 第1题执行结果

(2)查询年龄为工龄若干倍(可以为小数)的教师信息。

MySQL 算工作日 mysql计算工龄_代码示例_03

图3.2 第2题执行结果

(3)查询任课数超过2门的教师的编号。

MySQL 算工作日 mysql计算工龄_MySQL 算工作日_04

图3.3 第3题执行结果

(4)查询院系为计算机学院或经济与工商管理学院且年龄大于等于21的学生的学号、院系名称和姓名

MySQL 算工作日 mysql计算工龄_更新_05

图3.4 第4题执行结果

(5)查询年龄为20或21的学生的学号、院系编号、姓名、年龄。

MySQL 算工作日 mysql计算工龄_MySQL_06

图3.5 第5题执行结果

(6)查询学号为3114005833,3114005849,3214005848,3114005847的学生的平均年龄。

MySQL 算工作日 mysql计算工龄_MySQL 算工作日_07

图3.6 第6题执行结果

(7)查询最便宜的名字带“教材”二字的教材的信息。

MySQL 算工作日 mysql计算工龄_代码示例_08

图3.7 第7题执行结果

(8)把教师表中年龄小于等于60的计算机教师的年龄提高10%。

MySQL 算工作日 mysql计算工龄_代码示例_09

图3.8 第8题执行结果