多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
~~~ create database if not exists stu default character set utf8; use stu; create table if not exists s_student( sno int unsigned key, sname varchar(250), ssex enum('男','女','保密') default '保密', sbirthday int, class varchar(50) )engine=innodb charset=utf8; create table if not exists s_course( cno text, cname varchar(250), tno int )engine=innodb; create table if not exists s_score( sno int unsigned key, cno text, degree tinyint )engine=innodb; create table if not exists s_teacher( tno int unsigned key, tname varchar(250) not null, tssex enum('男','女','保密') default '保密', tbirthday int, title varchar(250), depart varchar(250) )engine=innodb; -- 一、每张表使用SQL语句插入至少10条数据。 insert s_student(sno,sname,ssex,sbirthday,class) values(0001,'neo1','男','20010101',95033), (0002,'王neo2','女','20010102',95031), (0003,'neo3','男','20010103',95033), (0004,'王neo4','女','20010104',95033), (0005,'neo5','男','20010105',95031), (0006,'王neo6','女','20010106','4A'), (0007,'neo7','男','20010107','1A'), (0008,'neo8','女','20010108','3A'), (0009,'neo9','男','20010109',95031), (0010,'neo10','女','20010110','1A'); insert s_course(cno,cname,tno) values(201601,'电脑1',201501), (201602,'计算机导论',201503), ('3-102','计算机导论123',201503), (201604,'电脑4',201501), (201605,'计算机导论234',201501), (201606,'计算机导论345',201503), (201607,'电脑7',201503), (201608,'电脑8',201503), (201609,'电脑9',201503), (201610,'电脑10',201502); insert s_score(sno,cno,degree) values(0001,'3-102',75), (0002,'3-102',85), (0003,'201602',70), (0004,'3-105',86), (0005,'3-102',90), (0006,201602,50), (0007,'3-102',60), (0008,'3-105',70), (0009,'3-102',80), (0010,'3-102',90); insert s_teacher(tno,tname,tssex,tbirthday,title,depart) values(201501,'老师1','男',19910101,'教职员1','IT组'), (201502,'老师2','女',19910102,'教职员2','总务组'), (201503,'张旭','男',19910103,'教职员3','IT组'), (201504,'老师4','女',19910104,'教职员4','总务组'), (201505,'老师5','男',19910105,'教职员5','IT组'), (201506,'老师6','女',19910106,'教职员6','总务组'), (201507,'老师7','男',19910107,'教职员7','IT组'), (201508,'老师8','女',19910108,'教职员8','总务组'), (201509,'老师9','男',19910109,'教职员9','IT组'), (201510,'老师10','女',19910110,'教职员10','总务组'); update s_teacher set tssex='男' where tno in(201501,201503,201504,201505); update s_teacher set tssex='女' where tno in(201502,201506,201507,201508); update s_teacher set tssex='保密' where tno in(201510,201509); -- 二、完成以下查询题目: -- 1、 查询Student表中的所有记录的Sname、Ssex和Class列。 select sname,ssex,class from s_student; -- 2、 查询教师所有的单位即不重复的Depart列。 select * from s_teacher group by depart; -- 3、 查询Student表的所有记录。 select * from s_student; -- 4、 查询Score表中成绩在60到80之间的所有记录。 select * from s_score where degree between 60 and 80; -- 5、 查询Score表中成绩为85,86或88的记录。 select * from s_score where degree in(85,86,88); -- 6、 查询Student表中“95031”班或性别为“女”的同学记录。 select * from s_student where class in(95031) or ssex in('女'); -- 7、 以Class降序查询Student表的所有记录。 select * from s_student order by class desc; -- 8、 以Cno升序、Degree降序查询Score表的所有记录。 select * from s_score order by cno asc,degree desc; -- 9、 查询“95031”班的学生人数。 select count(*) as '95031班人数' from s_student where class in(95031); -- 10、查询Score表中的最高分的学生学号和课程号。 select sno,cno,degree as '最高分' from s_score where degree>=all(select degree from s_score); -- select sno,cno,degree as '最高分' -- from s_score -- order by degree desc -- limit 0,2; -- 11、查询‘3-105’号课程的平均分。 select avg(degree) as '3-105的平均分' from s_score where cno in('3-105'); -- 12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。 select avg(degree) as '以3开头的课程的平均分数' from s_score where cno like '3%'; -- 13、查询所有学生的Sname、Cno和Degree列。 select s_st.sname,s_sc.cno,s_sc.degree from s_student as s_st join s_score as s_sc on s_st.sno=s_sc.sno; -- 14、查询“95033”班所选课程的平均分。 select avg(degree) as '“95033”班所选课程的平均分' from s_score as sc join s_student as st on sc.sno=st.sno where class in(95033); -- 15、假设使用如下命令建立了一个grade表: create table grade(low int,upp int,rank char(1)); insert into grade values(90,100,'A'); insert into grade values(80,89,'B'); insert into grade values(70,79,'C'); insert into grade values(60,69,'D'); insert into grade values(0,59,'E'); commit; -- 现查询所有同学的Sno、Cno和rank列。 select c.sno,c.cno,g.rank from s_score as c join grade as g where c.degree between low and upp; -- 16、查询"张旭"教师任课的学生成绩。 select t.tname,s.sname,c.degree from s_score as c join s_student as s on c.sno=s.sno join s_course as r on c.cno=r.cno join s_teacher as t on t.tno=r.tno where t.tname in('张旭'); -- select r.tno,t.sname,c.degree -- from s_score as c -- join s_student as t -- on c.sno=t.sno -- join s_course as r -- on c.cno=r.cno -- where r.tno in(201503); -- 17、查询选修某课程的同学人数多于5人的教师姓名。 select t.tname as '同学人数多于5人的教师' from s_teacher as t join s_course as c on t.tno=c.tno join s_score as r on c.cno=r.cno group by c.cno having count(*)>5; -- select c.tno as '同学人数多于5人的教师' -- from s_score as r -- join s_course as c -- on r.cno=c.cno -- group by c.cno -- having count(*)>5; -- 18、查询所有教师和同学的Name、Sex和Birthday。 select sname as name,ssex as sex,sbirthday as birthday from s_student union all select tname,tssex,tbirthday from s_teacher; -- 19 查询所有未讲课的教师的Tname和Depart。 select t.tname,t.depart from s_teacher as t join s_score as c where t.tno not in(select tno from s_course) group by t.tname; -- 20、查询至少有2名男生的班号。 select class as '至少有2名男生的班号' from s_student where ssex='男' group by class having count(*)>=2; -- 21、查询Student表中不姓“王”的同学记录。 select * from s_student where sname not like '王%'; -- 22、查询所有选修“计算机导论”课程的“男”同学的成绩表。 select t.sno,t.sname,t.ssex,c.cname,r.degree from s_score as r join s_course as c on r.cno=c.cno join s_student as t on r.sno=t.sno where c.cname='计算机导论' and t.ssex='男'; ~~~ <hr/> Mysql基础练习效果图: ![](https://box.kancloud.cn/dea3688412e7f7c7280aa2ebe9a347ce_497x1005.png)