mysql score表_MySQL连表查询练习题

本文介绍了如何在MySQL中创建和操作数据库、表,包括score表的建立和相关练习,如数据插入、查询等。通过示例展示了如何进行连表查询,如查询特定教师任课的学生成绩。
摘要由CSDN通过智能技术生成

建库

库名:linux50 字符集:utf8 校验规则:utf8_general_ci

mysql> create database if not exists linux5 charset utf8 collate utf8_general_ci;

Query OK, 1 row affected (0.00 sec)

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| linux5 |

| mysql |

| performance_schema |

| test |

| world |

+--------------------+

9ba36f29243287dbdfc7e696f09ddc03.png

建表

表名:student(学生表)

字段

数据类型要求

是否为空

注释

sno

最多20位

学号(主键)

sname

可变长

学生姓名

sage

最小整数,非负数

学生年龄

ssex

0,1

学生性别(1是男,0是女)默认为男)

sbirthday

时间类型

默认为空

学生生日

class

可变长

学生班级

mysql> create table student(

sno bigint(20) #zerofill# not null primary key auto_increment comment '学号',

sname varchar(12) not null comment '学生姓名',

sage tinyint unsigned not null comment '学生年龄',

ssex enum('0','1') not null default '1' comment '学生性别(1是男,0是女)默认为男',

sbirthday datetime comment '学生生日',

class varchar(10) not null comment '学生班级');

mysql> desc student;

+-----------+---------------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+-----------+---------------------+------+-----+---------+----------------+

| sno | bigint(20) | NO | PRI | NULL | auto_increment |

| sname | varchar(12) | NO | | NULL | |

| sage | tinyint(3) unsigned | NO | | NULL | |

| ssex | enum('0','1') | NO | | 1 | |

| sbirthday | datetime | YES | | NULL | |

| class | varchar(10) | NO | | NULL | |

+-----------+---------------------+------+-----+---------+----------------+

ee117adcc6923797f5d38e2a0817df95.png

表名:course(课程表)

字段

数据类型要求

是否为空

注释

cno

最多20位

课程号(主键)

cname

可变长

课程名称

tno

可变长

教师编号

mysql> create table course(

cno bigint(20) not null primary key auto_increment comment '课程号',

cname varchar(20) not null comment '课程名称',

tno varchar(20) not null comment '教师编号');

mysql> desc course;

+-------+-------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+----------------+

| cno | bigint(20) | NO | PRI | NULL | auto_increment |

| cname | varchar(20) | NO | | NULL | |

| tno | varchar(20) | NO | | NULL | |

+-------+-------------+------+-----+---------+----------------+

51447d8bbca725cecb27d95fcb4a0bef.png

表名:score(成绩表)

字段

数据类型要求

是否为空

注释

sno

最多20位

学号(主键)

cno

最多20位

课程号(主键)

mark

浮点数(4,1)

成绩

注意:sno和cno在另外两个表中是主键,在这里应该是外键,不过咱们不需要创建,了解即可

mysql> create table score(

sno bigint(20) comment '学号',

cno bigint(20) comment '课程号',

mark float(4,1) not null comment '成绩'),

primary key (sno,cno));

mysql> desc score;

+-------+------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+------------+------+-----+---------+-------+

| sno | bigint(20) | NO | PRI | NULL | |

| cno | bigint(20) | NO | PRI | NULL | |

| mark | float(4,1) | NO | | NULL | |

+-------+------------+------+-----+---------+-------+

82234d2f34fd060b4b3353af4a300a65.png

表名:teacher(教师表)

字段

数据类型要求

是否为空

注释

tno

最多20位

教师编号(主键)

tname

可变长

教师姓名

tage

最小整数,非负数

教师年龄

tsex

0,1

教师性别(1是男,0是女)默认为男)

prof

可变长

教师职称

depart

可变长

教师部门

mysql> create table teacher(

tno bigint(20) not null primary key auto_increment comment '教师编号',

tname varchar(12) not null comment '教师姓名',

tage tinyint unsigned not null comment '教师年龄',

tsex enum('0','1') not null default '1' comment '教师性别(1是男,0是女)默认为男',

prof varchar(20) comment '教师职称',

depart varchar(20) not null comment '教师部门');

mysql> desc teacher;

+--------+---------------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+--------+---------------------+------+-----+---------+-------+

| tno | bigint(20) | NO | PRI | NULL | |

| tname | varchar(12) | NO | | NULL | |

| tage | tinyint(3) unsigned | NO | | NULL | |

| tsex | enum('0','1') | NO | | 1 | |

| prof | varchar(20) | YES | | NULL | |

| depart | varchar(20) | NO | | NULL | |

+--------+---------------------+------+-----+---------+-------+

c618d4b396bf096c1f57469d811369d6.png

练习题

插入数据练习:

1.将自己班级小组所有人员信息插入到student表中(数据自定义)

mysql> insert into student(sname,sage,ssex,class) values('张毅',18,'1',5),('李琦',18,'1',5),('王相伟',18,'1',5),('庄晨浩',18,'1',5),('黄杨浩',18,'1',5),('巩景云',18,'0',5),('陈妙',18,'0',5),('朱慧萍',18,'0',5);

mysql> select * from student;

+-----+------------+------+------+-----------+-------+

| sno | sname | sage | ssex | sbirthday | class |

+-----+------------+------+------+-----------+-------+

| 9 | 张毅 | 18 | 1 | NULL | 5 |

| 10 | 李琦 | 18 | 1 | NULL | 1 |

| 11 | 王相伟 | 18 | 1 | NULL | 2 |

| 12 | 庄晨浩 | 18 | 1 | NULL | 5 |

| 13 | 黄杨浩 | 18 | 1 | NULL | 5 |

| 14 | 巩景云 | 18 | 0 | NULL | 5 |

| 15 | 陈妙 | 18 | 0 | NULL | 5 |

| 16 | 朱 慧萍 | 18 | 0 | NULL | 5 |

+-----+------------+------+------+-----------+-------+

2.将曾导、徐导、李导信息插入教师表中(数据自定义)

mysql> insert into teacher(tno,tname,tage,prof,depart) values(1,'曾导',20,'讲师','linux'),(2,'徐导',20,'讲师','linux'),(3,'李导',20,'讲师','linux')(4,'邱导',20,'讲师','python'),(5,'林导',20,'讲师','DBA');

mysql> select * from teacher;

+-----+--------+------+------+--------+--------+

| tno | tname | tage | tsex | prof | depart |

+-----+--------+------+------+--------+--------+

| 1 | 曾导 | 20 | 1 | 讲师 | linux |

| 2 | 徐导 | 20 | 1 | 讲师 | linux |

| 3 | 李导 | 20 | 1 | 讲师 | linux |

| 4 | 邱导 | 20 | 1 | 讲师 | python |

| 5 | 林导 | 20 | 1 | 讲师 | DBA |

+-----+--------+------+------+--------+--------+

3.将数学、语文、英语学科插入到课程表中(数据自定义)

mysql> insert into course(cno,cname,tno) values(1,'DBA',1),(2,'python',2),(3,'linux',1);

mysql> select * from course;

+-----+--------+-----+

| cno | cname | tno |

+-----+--------+-----+

| 1 | DBA | 1 |

| 2 | python | 2 |

| 3 | linux | 1 |

+-----+--------+-----+

4.将分数插入到成绩表中(数据自定义)

mysql> insert into score(sno,cno,mark) values(9,'1',98),(10,'1',8),(11,'2',80),(12,'1',65),(13,'2',98),(14,'1',98),(15,'1',98),(16,'1',98);

mysql> select * from score;

+-----+-----+------+

| sno | cno | mark |

+-----+-----+------+

| 9 | 1 | 98.0 |

| 10 | 1 | 8.0 |

| 11 | 2 | 80.0 |

| 12 | 1 | 65.0 |

| 13 | 2 | 98.0 |

| 14 | 1 | 98.0 |

| 15 | 1 | 98.0 |

| 16 | 1 | 98.0 |

+-----+-----+------+

查询练习:

1.查询student表中的所有记录的sname、ssex和class列。

mysql> select sname,ssex,class from student;

+------------+------+-------+

| sname | ssex | class |

+------------+------+-------+

| 张毅 | 1 | 5 |

| 李琦 | 1 | 1 |

| 王相伟 | 1 | 2 |

| 庄晨浩 | 1 | 5 |

| 黄杨浩 | 1 | 5 |

| 巩景云 | 0 | 5 |

| 陈妙 | 0 | 5 |

| 朱 慧萍 | 0 | 5 |

+------------+------+-------+

2.查询教师所有的单位即不重复的depart列。

mysql> select distinct(depart) from teacher;

+--------+

| depart |

+--------+

| linux |

| python |

| DBA |

+--------+

3.查询student表的所有记录。

mysql> select * from student;

+-----+------------+------+------+-----------+-------+

| sno | sname | sage | ssex | sbirthday | class |

+-----+------------+------+------+-----------+-------+

| 9 | 张毅 | 18 | 1 | NULL | 5 |

| 10 | 李琦 | 18 | 1 | NULL | 1 |

| 11 | 王相伟 | 18 | 1 | NULL | 2 |

| 12 | 庄晨浩 | 18 | 1 | NULL | 5 |

| 13 | 黄杨浩 | 18 | 1 | NULL | 5 |

| 14 | 巩景云 | 18 | 0 | NULL | 5 |

| 15 | 陈妙 | 18 | 0 | NULL | 5 |

| 16 | 朱 慧萍 | 18 | 0 | NULL | 5 |

+-----+------------+------+------+-----------+-------+

4.查询score表中成绩在60到80之间的所有记录。

mysql> select * from score where mark>60 and mark<80;

+-----+-----+------+

| sno | cno | mark |

+-----+-----+------+

| 12 | 1 | 65.0 |

+-----+-----+------+

5.查询score表中成绩为85,86或88的记录。

mysql> select * from score where mark=98 or mark=80 or mark=65;

mysql> select * from score where mark in (98,80,65);

+-----+-----+------+

| sno | cno | mark |

+-----+-----+------+

| 9 | 1 | 98.0 |

| 11 | 2 | 80.0 |

| 12 | 1 | 65.0 |

| 13 | 2 | 98.0 |

| 14 | 1 | 98.0 |

| 15 | 1 | 98.0 |

| 16 | 1 | 98.0 |

+-----+-----+------+

6.查询student表中1班或性别为“女”的同学记录。

mysql> select * from student where class='1' or ssex='0';

+-----+------------+------+------+-----------+-------+

| sno | sname | sage | ssex | sbirthday | class |

+-----+------------+------+------+-----------+-------+

| 10 | 李琦 | 18 | 1 | NULL | 1 |

| 14 | 巩景云 | 18 | 0 | NULL | 5 |

| 15 | 陈妙 | 18 | 0 | NULL | 5 |

| 16 | 朱 慧萍 | 18 | 0 | NULL | 5 |

+-----+------------+------+------+-----------+-------+

7.以class降序查询Student表的所有记录。

mysql> select * from student order by class desc;

+-----+------------+------+------+-----------+-------+

| sno | sname | sage | ssex | sbirthday | class |

+-----+------------+------+------+-----------+-------+

| 9 | 张毅 | 18 | 1 | NULL | 5 |

| 12 | 庄晨浩 | 18 | 1 | NULL | 5 |

| 13 | 黄杨浩 | 18 | 1 | NULL | 5 |

| 14 | 巩景云 | 18 | 0 | NULL | 5 |

| 15 | 陈妙 | 18 | 0 | NULL | 5 |

| 16 | 朱 慧萍 | 18 | 0 | NULL | 5 |

| 11 | 王相伟 | 18 | 1 | NULL | 2 |

| 10 | 李琦 | 18 | 1 | NULL | 1 |

+-----+------------+------+------+-----------+-------+

8 rows in set (0.00 sec)

8.以cno升序、mark降序查询Score表的所有记录

mysql> select * from score order by mark desc,cno asc;

9.查询2班的学生人数。

mysql> select count(sname) from student where class=5;

+--------------+

| count(sname) |

+--------------+

| 6 |

+--------------+

1 row in set (0.00 sec)

10.查询”曾志高翔“教师任课的学生成绩。

mysql> select student.sno as 学号,course.cname as 课程,score.mark as 分数

from student

join score on score.sno=student.sno

join course on score.cno=course.cno

where course.tno=1;

mysql> select teacher.tname,student.sname,course.cname,score.mark

from student

join score on score.sno=student.sno

join course on score.cno=course.cno

join teacher on teacher.tno=course.tno

where teacher.tname='曾导';

+--------+--------+--------+

| 学号 | 课程 | 分数 |

+--------+--------+--------+

| 9 | DBA | 98.0 |

| 10 | DBA | 8.0 |

| 12 | DBA | 65.0 |

| 14 | DBA | 98.0 |

| 15 | DBA | 98.0 |

| 16 | DBA | 98.0 |

+--------+--------+--------+

11.查询语文课程所有男生的成绩并且查出对应课程的教师名,职称,及所在部门。

mysql> select student.sname,score.mark,course.cname,teacher.tname,teacher.prof,teacher.depart

from student

join score on score.sno=student.sno

join course on score.cno=course.cno

join teacher on teacher.tno=course.tno

where student.ssex='1' and course.cname='DBA';

+-----------+------+-------+--------+--------+--------+

| sname | mark | cname | tname | prof | depart |

+-----------+------+-------+--------+--------+--------+

| 张毅 | 98.0 | DBA | 曾导 | 讲师 | linux |

| 李琦 | 8.0 | DBA | 曾导 | 讲师 | linux |

| 庄晨浩 | 65.0 | DBA | 曾导 | 讲师 | linux |

+-----------+------+-------+--------+--------+--------+

12.把11题查出的成绩按照降序排序。

mysql> select student.sname,score.mark,course.cname,teacher.tname,teacher.prof,teacher.depart

from student

join score on score.sno=student.sno

join course on score.cno=course.cno

join teacher on teacher.tno=course.tno

where student.ssex='1' and course.cname='DBA'

order by mark desc;

+-----------+------+-------+--------+--------+--------+

| sname | mark | cname | tname | prof | depart |

+-----------+------+-------+--------+--------+--------+

| 张毅 | 98.0 | DBA | 曾导 | 讲师 | linux |

| 庄晨浩 | 65.0 | DBA | 曾导 | 讲师 | linux |

| 李琦 | 8.0 | DBA | 曾导 | 讲师 | linux |

+-----------+------+-------+--------+--------+--------+

MySQL 查询练习(50题) MySQL 查询练习(50题) I 1 -- 建 1 1.1 -- 学生 1 1.2 -- 课程 1 1.3 -- 教师 1 1.4 -- 成绩 2 1.5 -- 插入学生测试数据 2 1.6 -- 课程测试数据 2 1.7 -- 教师测试数据 2 1.8 -- 成绩测试数据 2 2 -- 1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数 3 3 -- 2、查询"01"课程比"02"课程成绩低的学生的信息及课程分数 4 4 -- 3、查询平均成绩大于等于85分的同学的学生编号和学生姓名和平均成绩 4 5 -- 4、查询平均成绩小于60分的同学的学生编号和学生姓名和平均成绩-- (包括有成绩的和无成绩的) 4 6 -- 5、查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩 5 7 -- 6、查询"李"姓老师的数量 5 8 -- 7、查询学过"张三"老师授课的同学的信息 5 9 -- 8、查询没学过"张三"老师授课的同学的信息 5 10 -- 9、查询学过编号为"01"并且也学过编号为"02"的课程的同学的信息 6 11 -- 10、查询学过编号为"01"但是没有学过编号为"02"的课程的同学的信息 6 12 -- 11、查询没有学全所有课程的同学的信息 6 13 -- 12、查询至少有一门课与学号为"01"的同学所学相同的同学的信息 6 14 -- 13、查询和"01"号的同学学习的课程完全相同的其他同学的信息 7 15 -- 14、查询没学过"张三"老师讲授的任一门课程的学生姓名 7 16 -- 15、查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩 7 17 -- 16、检索"01"课程分数小于60,按分数降序排列的学生信息 7 18 -- 17.按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩 8 19 -- 18.查询各科成绩最高分、最低分和平均分:以如下形式显示:课程ID,课程name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率--及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90 8 20 -- 19、按各科成绩进行排序,并显示排名(实现不完全) 9 21 -- 20、查询学生的总成绩并进行排名 10 22 -- 21、查询不同老师所教不同课程平均分从高到低显示 10 23 -- 22、查询所有课程的成绩第2名到第3名的学生信息及该课程成绩 10 24 -- 23、统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[0-60]及所占百分比 11 25 -- 24、查询学生平均成绩及其名次 11 26 -- 25、查询各科成绩前三名的记录 12 27 -- 26、查询每门课程被选修的学生数 12 28 -- 27、查询出只有两门课程的全部学生的学号和姓名 12 29 -- 28、查询男生、女生人数 12 30 -- 29、查询名字中含有"风"字的学生信息 12 31 -- 30、查询同名同性学生名单,并统计同名人数 12 32 -- 31、查询1990年出生的学生名单 13 33 -- 32、查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列 13 34 -- 33、查询平均成绩大于等于85的所有学生的学号、姓名和平均成绩 13 35 -- 34、查询课程名称为"数学",且分数低于60的学生姓名和分数 13 36 -- 35、查询所有学生的课程及分数情况; 13 37 -- 36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数; 14 38 -- 37、查询不及格的课程 14 39 --38、查询课程编号为01且课程成绩在80分以上的学生的学号和姓名; 14 40 -- 39、求每门课程的学生人数 14 41 -- 40、查询选修"张三"老师所授课程的学生中,成绩最高的学生信息及其成绩 14 42 -- 41、查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩 15 43 -- 42、查询每门功成绩最好的前两名 15 44 -- 43、统计每门课程的学生选修人数(超过5人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列, 15 45 -- 44、检索至少选修两门课程的学生学号 15 46 -- 45、查询选修了全部课程的学生信息 15 47 -- 46、查询各学生的年龄 16 48 -- 47、查询本周过生日的学生 16 49 -- 48、查询下周过生日的学生 16 50 -- 49、查询本月过生日的学生 16 51 -- 50、查询下月过生日的学生 16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值