MySQL练习题
MySQL测试题
一、表关系
请创建如下表,并创建相关约束

备注:图片中有一处错误:成绩表中的,corse_id书写错误,应为course_id,在后面的实操中会有改正。否则后面无法操作表与表关联。
二、操作表
1、自行创建测试数据
2、查询“生物”课程比“物理”课程成绩高的所有学生的学号;
3、查询平均成绩大于60分的同学的学号和平均成绩;
4、查询所有同学的学号、姓名、选课数、总成绩;
5、查询姓“李”的老师的个数;
6、查询没学过“叶平”老师课的同学的学号、姓名;
7、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;
8、查询学过“叶平”老师所教的所有课的同学的学号、姓名;
9、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;
10、查询有课程成绩小于60分的同学的学号、姓名;
11、查询没有学全所有课的同学的学号、姓名;
12、查询至少有一门课与学号为“001”的同学所学相同的同学的学号和姓名;
13、查询至少学过学号为“001”同学所选课程中任意一门课的其他同学学号和姓名;
14、查询和“002”号的同学学习的课程完全相同的其他同学学号和姓名;
15、删除学习“叶平”老师课的SC表记录;
16、向SC表中插入一些记录,这些记录要求符合以下条件:①没有上过编号“002”课程的同学学号;②插入“002”号课程的平均成绩;
17、按平均成绩从低到高显示所有学生的“语文”、“数学”、“英语”三门的课程成绩,按如下形式显示: 学生ID,语文,数学,英语,有效课程数,有效平均分;
18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分;
19、按各科平均成绩从低到高和及格率的百分数从高到低顺序;
20、课程平均分从高到低显示(现实任课老师);
21、查询各科成绩前三名的记录:(不考虑成绩并列情况)
22、查询每门课程被选修的学生数;
23、查询出只选修了一门课程的全部学生的学号和姓名;
24、查询男生、女生的人数;
25、查询姓“张”的学生名单;
26、查询同名同姓学生名单,并统计同名人数;
27、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列;
28、查询平均成绩大于85的所有学生的学号、姓名和平均成绩;
29、查询课程名称为“数学”,且分数低于60的学生姓名和分数;
30、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名;
31、求选了课程的学生人数
32、查询选修“杨艳”老师所授课程的学生中,成绩最高的学生姓名及其成绩;
33、查询各个课程及相应的选修人数;
34、查询不同课程但成绩相同的学生的学号、课程号、学生成绩;
35、查询每门课程成绩最好的前两名;
36、检索至少选修两门课程的学生学号;
37、查询全部学生都选修的课程的课程号和课程名;
38、查询没学过“叶平”老师讲授的任一门课程的学生姓名;
39、查询两门以上不及格课程的同学的学号及其平均成绩;
40、检索“004”课程分数小于60,按分数降序排列的同学学号;
41、删除“002”同学的“001”课程的成绩;
创建库和表:
C:\Windows\system32>mysql -u root -p
Enter password: *** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 14 Server version: 8.0.27 MySQL Community Server - GPL Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. #登陆成功。 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | mysql测试题 | | performance_schema | | sys | | test1 | | test2 | | ttttt | | 数据库名称 | +--------------------+ 9 rows in set (0.01 sec) #显示所有数据库 mysql> create database mysql测试题1 default charset utf8 collate utf8_general_ci; Query OK, 1 row affected, 2 warnings (0.09 sec) #创建数据库:mysql测试题1 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | mysql测试题 | | mysql测试题1 | | performance_schema | | sys | | test1 | | test2 | | ttttt | | 数据库名称 | +--------------------+ 10 rows in set (0.00 sec) mysql> use mysql测试题1; Database changed #进入数据库 mysql> create table 班级表:class1( -> cid int not null, -> caption varchar(20) -> )engine=innodb default charset=utf8; Query OK, 0 rows affected, 1 warning (0.28 sec) #创建表:班级表:classs1 mysql> create table 学生表:student( -> sid int not null, -> sname varchar(20), -> gender varchar(2), -> class_id int null -> )engine=innodb default charset=utf8; Query OK, 0 rows affected, 1 warning (0.71 sec) mysql> create table 老师表:teacher( -> tid int not null, -> tname varchar(8) -> )engine=innodb default charset=utf8; Query OK, 0 rows affected, 1 warning (0.27 sec) mysql> create table 课程表:course( -> cid int not null, -> cname varchar(8), -> teach_id int null -> )engine=innodb default charset=utf8; Query OK, 0 rows affected, 1 warning (0.37 sec) mysql> create table 成绩表:score( -> sid int not null, -> student_id int null, -> corse_id int null, -> number int null -> )engine=innodb default charset=utf8; Query OK, 0 rows affected, 1 warning (0.63 sec) mysql> drop table mysql测试题1; Query OK, 0 rows affected (0.29 sec) #删除表:mysql测试题1 mysql> alter table 班级表:class1 rename to 班级表:class; Query OK, 0 rows affected (0.27 sec) #更改表名:班级表:class1 为 班级表:class mysql> insert into 班级表:class(cid,caption) values(1,'三年二班'),(2,'一年三班'),(3,'三年一班'); Query OK, 3 rows affected (0.06 sec) Records: 3 Duplicates: 0 Warnings: 0 #往班级表:class中插入下面数据 #插入数据: cid caption # 1 三年二班 # 2 一年三班 # 3 三年一班 mysql> insert into 学生表:student(sid,sname,gender,class_id) values(1,'钢蛋','女',1),(2,'铁锤','女',1),(3,'山炮','男',2); Query OK, 3 rows affected (0.06 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> insert into 老师表:teacher(tid,tname) values(1,'波多'),(2,'苍空'),(3,'饭岛'); Query OK, 3 rows affected (0.06 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> insert into 课程表:course(cid,cname,teach_id) values(1,'生物',1),(2,'体育',1),(3,'物理',2); Query OK, 3 rows affected (0.06 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> insert into 成绩表:score(sid,student_id,corse_id,number) values(1,1,1,60),(2,1,2,59),(3,2,2,100); Query OK, 3 rows affected (0.06 sec) Records: 3 Duplicates: 0 Warnings: 0
mysql> show tables; +------------------------+ | Tables_in_mysql测试题1 | +------------------------+ | 学生表:student | | 成绩表:score | | 班级表:class | | 老师表:teacher | | 课程表:course | +------------------------+ 5 rows in set (0.01 sec) #查看数据库中的表 mysql> desc 成绩表:score; +------------+------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+------+------+-----+---------+-------+ | sid | int | NO | | NULL | | | student_id | int | YES | | NULL | | | corse_id | int | YES | | NULL | | | number | int | YES | | NULL | | +------------+------+------+-----+---------+-------+ 4 rows in set (0.03 sec) #查看表的结构 mysql> select * from 成绩表:score; +-----+------------+----------+--------+ | sid | student_id | corse_id | number | +-----+------------+----------+--------+ | 1 | 1 | 1 | 60 | | 2 | 1 | 2 | 59 | | 3 | 2 | 2 | 100 | +-----+------------+----------+--------+ 3 rows in set (0.00 sec) mysql> select * from 学生表:student; +-----+-------+--------+----------+ | sid | sname | gender | class_id | +-----+-------+--------+----------+ | 1 | 钢蛋 | 女 | 1 | | 2 | 铁锤 | 女 | 1 | | 3 | 山炮 | 男 | 2 | +-----+-------+--------+----------+ 3 rows in set (0.02 sec) #查看表中的数据
mysql> alter table score change corse_id course_id int;
Query OK, 0 rows affected (0.66 sec)
Records: 0 Duplicates: 0 Warnings: 0
#将图片中的错误信息改正,表score中的corse_id 改为course_id。
mysql> select * from score;
+-----+------------+-----------+--------+
| sid | student_id | course_id | number |
+-----+------------+-----------+--------+
| 1 | 1 | 1 | 60 |
| 2 | 1 | 2 | 59 |
| 3 | 2 | 2 | 100 |
+-----+------------+-----------+--------+
3 rows in set (0.02 sec)
#这是正确的score表格。
mysql> select
-> score.student_id,
-> score.course_id,
-> student.sname,
-> course.cname,
-> score.number
-> from score
-> left join student on score.student_id=student.sid
-> left join course on score.course_id=course.cid;
+------------+-----------+-------+-------+--------+
| student_id | course_id | sname | cname | number |
+------------+-----------+-------+-------+--------+
| 1 | 1 | 钢蛋 | 生物 | 60 |
| 1 | 2 | 钢蛋 | 体育 | 59 |
| 2 | 2 | 铁锤 | 体育 | 100 |
+------------+-----------+-------+-------+--------+
3 rows in set (0.03 sec)
#关联后的表格。
转自:https://www.cnblogs.com/wupeiqi/articles/5729934.html
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
浙公网安备 33010602011771号