MySQL连表查询练习题
1.建库
库名:linux50 字符集:utf8 校验规则:utf8_general_ci

create database linux4 charset utf8 default collate = utf8_general_ci;
2.建表
2.1表一
表名:student(学生表)
| 字段 | 数据类型要求 | 是否为空 | 注释 |
|---|---|---|---|
| sno | 最多20位 | 否 | 学号(主键) |
| sname | 可变长 | 否 | 学生姓名 |
| sage | 最小整数,非负数 | 否 | 学生年龄 |
| ssex | 0,1 | 否 | 学生性别(1是男,0是女)默认为男) |
| sbirthday | 时间类型 | 默认为空 | 学生生日 |
| class | 可变长 | 否 | 学生班级 |

student表:
create table if not exists student(
sno varchar(21) not null primary key comment '学号',
sname varchar(12) not null comment '学生姓名',
sage tinyint unsigned not null comment '学生年龄',
ssex enum('1','0') default '1' comment '学生性别',
sbirthday datetime comment '学生生日',
class varchar(10) not null comment '学生班级') default charset=utf8;
2.2表二
表名:course(课程表)
| 字段 | 数据类型要求 | 是否为空 | 注释 |
|---|---|---|---|
| cno | 最多20位 | 否 | 课程号(主键) |
| cname | 可变长 | 否 | 课程名称 |
| tno | 可变长 | 否 | 教师编号 |

course表:
create table if not exists course(
cno varchar(21) not null primary key comment '课程号',
cname varchar(10) not null comment '课程名称',
tno varchar(10) not null comment '教师编号') default charset=utf8;
2.3表三
表名:score(成绩表)
| 字段 | 数据类型要求 | 是否为空 | 注释 |
|---|---|---|---|
| sno | 最多20位 | 否 | 学号(主键) |
| cno | 最多20位 | 否 | 课程号(主键) |
| mark | 浮点数(4,1) | 否 | 成绩 |
注意:sno和cno在另外两个表中是主键,在这里应该是外键,不过咱们不需要创建,了解即可

score表:
create table if not exists score(
sno varchar(21) not null primary key comment '学号',
cno varchar(21) not null comment '课程号',
mark float(4,1) not null comment '成绩') default charset=utf8;

2.4表四
表名:teacher(教师表)
| 字段 | 数据类型要求 | 是否为空 | 注释 |
|---|---|---|---|
| tno | 最多20位 | 否 | 教师编号(主键) |
| tname | 可变长 | 否 | 教师姓名 |
| tage | 最小整数,非负数 | 否 | 教师年龄 |
| tsex | 0,1 | 否 | 教师性别(1是男,0是女)默认为男) |
| prof | 可变长 | 是 | 教师职称 |
| depart | 可变长 | 否 | 教师部门 |


teacher表:
create table if not exists teacher(
tno varchar(21) not null primary key comment '教师编号',
tname varchar(10) not null comment '教师姓名',
tage tinyint unsigned not null comment '教师年龄',
tsex enum('0','1') not null default '1' comment '教师性别',
prof varchar(10) comment '教师职称',
depart varchar(15) not null comment '教师部门') default charset=utf8;
练习题
#插入数据练习:
1.将自己班级小组所有人员信息插入到student表中(数据自定义)
insert into student(sno,sname,sage,ssex,sbirthday,class)
values(1,'李洋',18,1,19980422,'1'),
(2,'温俊林',19,0,19970422,'1'),
(3,'周恒华',20,1,19950422,'1'),
(4,'张松涛',22,1,19940422,'2'),
(5,'李晖',20,0,19960622,'2'),
(6,'包政',23,1,19930422,'2');
2.将曾导、徐导、李导信息插入教师表中(数据自定义)
insert into teacher(tno,tname,tage,tsex,prof,depart)
values('001','曾导',18,1,'校长','linux'),
('002','徐导',19,1,'教学总监','linux'),
('003','李导',20,1,'讲师','python');
3.将linux、python学科插入到课程表中(数据自定义)
insert into course(cno,cname,tno)
values('1','linux','001'),
('2','linux','002'),
('3','python','003');
4.将分数插入到成绩表中(数据自定义)
insert into score(sno,cno,mark)
values('1','1','99.5'),
('2','1','80.5'),
('3','1','85.5'),
('4','1','84.5'),
('5','1','89.5'),
('6','1','89.5');
#查询练习:
1.查询student表中的所有记录的sname、ssex和class列。
mysql> select sname,ssex,class from student;
+-----------+------+--------+
| sname | ssex | class |
+-----------+------+--------+
| 李洋 | 1 | 1 |
| 温俊林 | 1 | 1 |
| 周恒华 | 1 | 1 |
| 张松涛 | 1 | 2 |
| 李晖 | 1 | 2 |
| 包政 | 1 | 2 |
+-----------+------+--------+
2.查询教师所有的单位即不重复的depart列。
mysql> select depart from teacher;
+--------+
| depart |
+--------+
| linux |
| linux |
| python |
+--------+
3.查询student表的所有记录。
mysql> select * from student;
+-----+-----------+------+------+---------------------+--------+
| sno | sname | sage | ssex | sbirthday | class |
+-----+-----------+------+------+---------------------+--------+
| 1 | 李洋 | 18 | 1 | 1998-04-22 00:00:00 | 1 |
| 2 | 温俊林 | 19 | 0 | 1997-04-22 00:00:00 | 1 |
| 3 | 周恒华 | 20 | 1 | 1995-04-22 00:00:00 | 1 |
| 4 | 张松涛 | 22 | 1 | 1994-04-22 00:00:00 | 2 |
| 5 | 李晖 | 20 | 0 | 1996-06-22 00:00:00 | 2 |
| 6 | 包政 | 23 | 1 | 1993-04-22 00:00:00 | 2 |
+-----+-----------+------+------+---------------------+--------+
4.查询score表中成绩在80到90之间的所有记录。
mysql> select * from score where mark>80 and mark<90;
+-----+------+------+
| sno | cno | mark |
+-----+------+------+
| 2 | 1 | 80.5 |
| 3 | 1 | 85.5 |
| 4 | 1 | 84.5 |
| 5 | 1 | 89.5 |
| 6 | 1 | 89.5 |
+-----+------+------+
5.查询score表中成绩为85.5,89.5或80.5的记录。
mysql> select * from score where mark=85.5 or mark=89.5 or mark=80.5;
+-----+------+------+
| sno | cno | mark |
+-----+------+------+
| 2 | 1 | 80.5 |
| 3 | 1 | 85.5 |
| 5 | 1 | 89.5 |
| 6 | 1 | 89.5 |
+-----+------+------+
6.查询student表中1班或性别为“女”的同学记录。
mysql> select * from student where class=1 or ssex='0';
+-----+-----------+------+------+---------------------+-------+
| sno | sname | sage | ssex | sbirthday | class |
+-----+-----------+------+------+---------------------+-------+
| 1 | 李洋 | 18 | 1 | 1998-04-22 00:00:00 | 1 |
| 2 | 温俊林 | 19 | 0 | 1997-04-22 00:00:00 | 1 |
| 3 | 周恒华 | 20 | 1 | 1995-04-22 00:00:00 | 1 |
| 5 | 李晖 | 20 | 0 | 1996-06-22 00:00:00 | 2 |
+-----+-----------+------+------+---------------------+-------+
7.以class降序查询Student表的所有记录。
mysql> select * from student order by class desc;
+-----+-----------+------+------+---------------------+-------+
| sno | sname | sage | ssex | sbirthday | class |
+-----+-----------+------+------+---------------------+-------+
| 4 | 张松涛 | 22 | 1 | 1994-04-22 00:00:00 | 2 |
| 5 | 李晖 | 20 | 0 | 1996-06-22 00:00:00 | 2 |
| 6 | 包政 | 23 | 1 | 1993-04-22 00:00:00 | 2 |
| 1 | 李洋 | 18 | 1 | 1998-04-22 00:00:00 | 1 |
| 2 | 温俊林 | 19 | 0 | 1997-04-22 00:00:00 | 1 |
| 3 | 周恒华 | 20 | 1 | 1995-04-22 00:00:00 | 1 |
+-----+-----------+------+------+---------------------+-------+
8.以cno升序、mark降序查询Score表的所有记录
mysql> select * from score order by cno asc,mark desc;
+-----+------+------+
| sno | cno | mark |
+-----+------+------+
| 1 | 1 | 99.5 |
| 5 | 1 | 89.5 |
| 6 | 1 | 89.5 |
| 3 | 1 | 85.5 |
| 4 | 1 | 84.5 |
| 2 | 1 | 80.5 |
+-----+------+------+
9.查询2班的学生人数。
mysql> select * from student where class=2;
+-----+-----------+------+------+---------------------+-------+
| sno | sname | sage | ssex | sbirthday | class |
+-----+-----------+------+------+---------------------+-------+
| 4 | 张松涛 | 22 | 1 | 1994-04-22 00:00:00 | 2 |
| 5 | 李晖 | 20 | 0 | 1996-06-22 00:00:00 | 2 |
| 6 | 包政 | 23 | 1 | 1993-04-22 00:00:00 | 2 |
+-----+-----------+------+------+---------------------+-------+
10.查询”曾志高翔“教师任课的学生成绩。
mysql> select teacher.tname,course.cname,student.sname,score.mark from teacher,course,student,score where student.sno=score.sno and course.cno=score.cno and course.tno=teacher.tno;
+--------+-------+-----------+------+
| tname | cname | sname | mark |
+--------+-------+-----------+------+
| 曾导 | linux | 李洋 | 99.5 |
| 曾导 | linux | 温俊林 | 80.5 |
| 曾导 | linux | 周恒华 | 85.5 |
| 曾导 | linux | 张松涛 | 84.5 |
| 曾导 | linux | 李晖 | 89.5 |
| 曾导 | linux | 包政 | 89.5 |
+--------+-------+-----------+------+
11.查询linux课程所有男生的成绩并且查出对应课程的教师名,职称,及所在部门。
mysql> select teacher.tname,teacher.prof,teacher.depart,course.cname,student.ssex,score.mark from teacher,course,student,score where student.sno=score.sno and course.cno=score.cno and course.tno=teacher.tno and ssex='1';
+--------+--------+--------+-------+------+------+
| tname | prof | depart | cname | ssex | mark |
+--------+--------+--------+-------+------+------+
| 曾导 | 校长 | linux | linux | 1 | 99.5 |
| 曾导 | 校长 | linux | linux | 1 | 85.5 |
| 曾导 | 校长 | linux | linux | 1 | 84.5 |
| 曾导 | 校长 | linux | linux | 1 | 89.5 |
+--------+--------+--------+-------+------+------+
12.把11题查出的成绩按照降序排序。
mysql> select teacher.tname,teacher.prof,teacher.depart,course.cname,student.ssex,score.mark from teacher,course,student,score where student.sno=score.sno and course.cno=score.cno and course.tno=teacher.tno and ssex='1' order by mark desc;
+--------+--------+--------+-------+------+------+
| tname | prof | depart | cname | ssex | mark |
+--------+--------+--------+-------+------+------+
| 曾导 | 校长 | linux | linux | 1 | 99.5 |
| 曾导 | 校长 | linux | linux | 1 | 89.5 |
| 曾导 | 校长 | linux | linux | 1 | 85.5 |
| 曾导 | 校长 | linux | linux | 1 | 84.5 |
+--------+--------+--------+-------+------+------+
MySQL连表查询练习题的更多相关文章
- MySQL多表查询练习题
一.准备数据 #创建表及插入记录 CREATE TABLE class ( cid ) NOT NULL AUTO_INCREMENT, caption ) NOT NULL, PRIMARY KEY ...
- MySQL多表查询之外键、表连接、子查询、索引
MySQL多表查询之外键.表连接.子查询.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为 ...
- Mysql 单表查询 子查询 关联查询
数据准备: ## 学院表create table department( d_id int primary key auto_increment, d_name varchar(20) not nul ...
- (转)Mysql 多表查询详解
MySQL 多表查询详解 一.前言 二.示例 三.注意事项 一.前言 上篇讲到mysql中关键字执行的顺序,只涉及了一张表:实际应用大部分情况下,查询语句都会涉及到多张表格 : 1.1 多表连接有 ...
- MySQL多表查询回顾
----------------------siwuxie095 MySQL 多表查询回顾 以客户和联系人为例(一对多) 1.内连接 /*内连接写法一*/ select * from t_custom ...
- python 3 mysql 单表查询
python 3 mysql 单表查询 1.准备表 company.employee 员工id id int 姓名 emp_name varchar 性别 sex enum 年龄 age int 入职 ...
- python3 mysql 多表查询
python3 mysql 多表查询 一.准备表 创建二张表: company.employee company.department #建表 create table department( id ...
- Mysql 单表查询-排序-分页-group by初识
Mysql 单表查询-排序-分页-group by初识 对于select 来说, 分组聚合(((group by; aggregation), 排序 (order by** ), 分页查询 (limi ...
- Mysql 单表查询where初识
Mysql 单表查询where初识 准备数据 -- 创建测试库 -- drop database if exists student_db; create database student_db ch ...
随机推荐
- 1、DNS服务基础
w'indows上名称解析目录: C:\Windows\System32\drivers\etc https://jocent.me/2017/06/18/dns-protocol-principle ...
- 手写web框架之加载配置项目
一 定义框架配置项 在项目的src/main/resources目录下创建一个名为smart.propertiesd的文件,文件的内容如下: smart.framework.jdbc.driver= ...
- Spring-Kafka —— KafkaListener定时启动和停止
一.定时启动的应用场景 比如现在单机环境下,我们需要利用Kafka做数据持久化的功能,由于用户活跃的时间为早上10点至晚上12点,那在这个时间段做一个大数据量的持久化可能会影响数据库性能导致用户体验降 ...
- DevOps - 构建本地开发环境
1 - 构建个人本地开发环境 在个人计算机中搭建一个精简版的.与生产环境基本一致的本地开发环境,既不会占用团队公共环境的资源,也可以缩短等待时间,从整体上提高效率. 本地开发环境的适用场景: 从应用程 ...
- idea 中的new file 没有jsp
idea 的new file中没有你需要的文件,原因是IDEA认为当前包下不应该创建该文件,以就没有创建该文件的选项. 以jsp 文件为例.其他文件类似. 解决方法: File ---> pro ...
- docker search 报错
docker 出现 Error response from daemon vim /etc/containers/registries.conf [registries.search]registri ...
- A smooth collaborative recommender system 推荐系统-浅显了解
characteristic: 1.Tracking user 2.personliza 3.面对的问题类似于分形学+混沌学(以有观无+窥一管而知全貌) 4.Data:high-volume.spar ...
- 刀塔OMG塔防1.23单机版使用方法
使用方法1.确保魔兽的版本为1.26(低版本会报错),如果版本不对用附件中的版本转换器转一下2.把 omg.w3x 复制到 魔兽的MAPS文件夹 WarcraftIII 游戏根目录\Maps3.双击运 ...
- 配置cinder-backup服务使用ceph作为后端存储
在ceph监视器上执行 CINDER_PASSWD='cinder1234!'controllerHost='controller'RABBIT_PASSWD='0penstackRMQ' 1.创建p ...
- python3.7环境下创建app、运行Django1.11版本项目报错Generator expression must be parenthesized
有些同学喜欢追求新鲜感~但追求新鲜感终归是要付出一点点代价的 在编程领域有一句至理名言:用东西不要用最新的! 就像每次苹果系统的升级都会有相当一部分用户的手机成砖一样 下面我们就介绍一个因版本升级带来 ...