Mysql数据库第三章高级查询上机

--上机练习1
create table preson(
  number int(4) not null comment '序号' PRIMARY KEY,
  name VARCHAR(50) not null comment'姓名',
  sex char(2) null comment'性别',
  bornDate datetime comment'出生日期'
)comment'person结构表'

#修改表名称
ALTER table preson rename tb_preson

#删除出生日期字段
alter table tb_preson drop bornDate

#添加出生日期
alter table tb_preson add bornDate date null

#修改字段名称
alter table tb_preson CHANGE name id VARCHAR(50) not null


--上机练习2
alter table result add CONSTRAINT FK_student_result FOREIGN KEY(studentNo)
REFERENCES student(studentNo);

--上机练习3
/*科目表数据*/
select * from subject
insert into subject(subjectName,classHour,gradeid)
VALUES('Logic Java',220,1),('HTML',160,1),('Java OOP',230,2);

/*成绩表数据*/
select * from result;
insert into result(studentNo,subjectNo,examDate,studentResult)
VALUES(10002,1,'2021-8-7',54),(10003,1,'2021-8-7',124),(10004,2,'2021-8-7',74);

/*student表数据*/
insert into `student` (`studentNo`, `loginPwd`, `studentName`, `sex`, `gradeId`, `phone`, `address`, `bornDate`, `email`, `identityCard`) values('10000','123','郭靖','男','1','13645667783','天津市河西区','1990-09-08 00:00:00',NULL,NULL);
insert into `student` (`studentNo`, `loginPwd`, `studentName`, `sex`, `gradeId`, `phone`, `address`, `bornDate`, `email`, `identityCard`) values('10001','123','李文才','男','1','13645667890','地址不详','1994-04-12 00:00:00',NULL,NULL);
insert into `student` (`studentNo`, `loginPwd`, `studentName`, `sex`, `gradeId`, `phone`, `address`, `bornDate`, `email`, `identityCard`) values('10002','123','李斯文','男','1','13645556793','河南洛阳','1993-07-23 00:00:00',NULL,NULL);
insert into `student` (`studentNo`, `loginPwd`, `studentName`, `sex`, `gradeId`, `phone`, `address`, `bornDate`, `email`, `identityCard`) values('10003','123','张萍','女','1','13642345112','地址不详','1995-06-10 00:00:00',NULL,NULL);
insert into `student` (`studentNo`, `loginPwd`, `studentName`, `sex`, `gradeId`, `phone`, `address`, `bornDate`, `email`, `identityCard`) values('10004','123','韩秋洁','女','1','13812344566','北京市海淀区','1995-07-15 00:00:00',NULL,NULL);
insert into `student` (`studentNo`, `loginPwd`, `studentName`, `sex`, `gradeId`, `phone`, `address`, `bornDate`, `email`, `identityCard`) values('10005','123','张秋丽','女','1','13567893246','北京市东城区','1994-01-17 00:00:00',NULL,NULL);
insert into `student` (`studentNo`, `loginPwd`, `studentName`, `sex`, `gradeId`, `phone`, `address`, `bornDate`, `email`, `identityCard`) values('10006','123','肖梅','女','1','13563456721','河北省石家庄市','1991-02-17 00:00:00',NULL,NULL);
insert into `student` (`studentNo`, `loginPwd`, `studentName`, `sex`, `gradeId`, `phone`, `address`, `bornDate`, `email`, `identityCard`) values('10007','123','秦洋','男','1','13056434411','上海市卢湾区','1992-04-18 00:00:00',NULL,NULL);
insert into `student` (`studentNo`, `loginPwd`, `studentName`, `sex`, `gradeId`, `phone`, `address`, `bornDate`, `email`, `identityCard`) values('10008','123','何睛睛','女','1','13053445221','广州市天河区','1997-07-23 00:00:00',NULL,NULL);
insert into `student` (`studentNo`, `loginPwd`, `studentName`, `sex`, `gradeId`, `phone`, `address`, `bornDate`, `email`, `identityCard`) values('20000','123','王宝宝','男','2','15076552323','地址不详','1996-06-05 00:00:00',NULL,NULL);

--上机练习4
#将学生表中的学号为20000的学生修改邮箱和密码
SELECT * FROM STUDENT
update student set email='sum@163.com',loginPwd='123456' where studentNo=20010;
#将科目表中课时大于200的-10
select * from subject
update `subject` set  classHour=classHour-10 where classHour>200 AND subjectNo=1;
#将所有年级编号为1的学生信息保存到新表 
create table student_grade1(select studentName,sex,bornDate,phone from student where gradeId=1) 

--上机练习5
#查询2016-2-17考试前5的学生
select subjectNo,examDate,studentResult from result 
WHERE examDate='2016-2-17'
ORDER BY studentResult desc
limit 5 
#将所有女学生按年级从大到小排序,从2条记录到6条
select * from student where sex = '女'
ORDER BY bornDate 
limit 1,6
#按出生日期统计学生人数 将各组在人数达到2人的年份和人数显示出来
select year(bornDate),count(*)FROM student
GROUP BY YEAR(bornDate)
HAVING count(*)>=2
#查询参加2016年17日考试的所有学员的分
SELECT max(studentResult) as 最高分,min(studentResult) as 最低,avg(studentResult)as 平均分 FROM result


--上机练习6
#查询参最近一次Logic Java考试成绩的学生
select max(studentResult)as 最高分, min(studentResult)as 最低分 from result
where examDate =(
  select max(examDate) from result where subjectNo=(
        select subjectNo from `subject` where subjectName= "Logic Java"
    )
)AND subjectNo =(
 select subjectNo from `subject` where subjectName= "Logic Java"
)

--上机练习7
#使用IN关键字的子查询出来查询第一学期s1学期开设的课程
select * from `subject`
where gradeID= (
    select gradeID from grade where gradeName = 'S1'
)

--上机练习8
-- 查询未参加“HTML”课程最近一次考试的在读学生名单
select * from student where studentNo not in(
 select studentNo from result where examDate=(
     select max(examDate) from result where subjectNo=(
       SELECT subjectNo FROM `subject` WHERE subjectName ="HTML"
     )
 )AND subjectNo =(
     SELECT subjectNo FROM `subject` WHERE subjectName ="HTML"
 )
)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coanan

谢谢您的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值