boxmoe_header_banner_img

欢迎来到我的博客

加载中

加载中动画图标 0%

加载中...

文章导读

实验5 多表连接与增删改操作


avatar
菰 远 2025-09-28 29

老师的网站:47.107.46.163

相关软件下载地址

这个实验是使用ol83_vm15-16_GY环境下做的
下载ol83_vm15-16_GY.7z实在太慢可以找我拿U盘拷贝
下载地址:

星辰云盘:数据库相关软件包括虚拟机等
123网盘:数据库相关软件包括虚拟机等
百度网盘:数据库相关软件包括虚拟机等
huang1111:数据库相关软件包括虚拟机等
小飞机网盘:数据库相关软件包括虚拟机等
115网盘:数据库相关软件包括虚拟机等
send:数据库相关软件包括虚拟机等
VMware 17.5:VMware Workstation Pro 17.5.1 build-23298084 软件安装包
SecureCRT 8.5.1.3:SecureCRT 8.5.1.3 中文破解版

系统账号密码都是root
数据库的账号为root 密码为123456
这个虚拟机内已经有一个快照了要是配置错误可以直接恢复快照,平常也可以把整个虚拟机文件夹ol83_vm15-16_GY丢自己U盘,这样就不用每次都要下载了

实验环境准备

这个实验是使用ol83_vm15-16_GY环境下做的
下载ol83_vm15-16_GY.7z实在太慢可以找我拿U盘拷贝

#这个命令是启动mysql,虚拟机第一次启动或者重新启动都需要输入一次
cd /usr/local/mysql
bin/mysqld_safe --user=mysql &
#输入之后ctrl+c退出
mysql -u root -p
#如果输出 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111) 那就是没有启动mysql,相关命令在《实验环境准备》都有放着
#密码在上面已经写的清清楚楚了
USE dbXXX;
#这个命令表示连接dbxxx数据库,每次进入数据库都要连接一次,不然会提示没有数据库
#XXX为你自己名字的首字母注意!!!!!!

要是输出 ERROR 1049 (42000): Unknown database ‘dbXXX’ 那就是没有这个数据库需要创建数据库输入这个(CREATE DATABASE dbXXX;)再试试就可以了
以下的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

DROP TABLE report, course, stu;
create table stu
(
sno int primary key,
sname varchar(12)
);
create table course
(
cno int primary key,
cname varchar(20)
);
create table report 
(
sno int references stu(sno),
cno int references course(cno),
grade int,
primary key(sno,cno)
);
insert into stu values(202101,'John');
insert into stu values(202102,'Mike');
insert into stu values(202103,'Tom');
insert into stu values(202104,'Smith');
insert into course values(1001,'English');
insert into course values(1002,'Maths');
insert into course values(1003,'Computer');
insert into course values(1004,'Game');
insert into report values(202101,'1001',60);
insert into report values(202102,'1001',70);
insert into report values(202102,'1002',80);
insert into report values(202102,'1003',90);
insert into report values(202103,'1001',90);
insert into report values(202103,'1002',50);
insert into report values(202104,'1004',55);

以上的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

1. 查询每个学生的名称、其所选课程名称及所选课程分数。

-- XXX
#XXX为你名字首字母!!! --(有空格)XXX!!!

以下的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

SELECT s.sname AS 学生姓名, c.cname AS 课程名称, r.grade AS 分数
FROM stu s
LEFT JOIN report r ON s.sno = r.sno
LEFT JOIN course c ON r.cno = c.cno;

以上的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

输出7 rows in set (0.00 sec)是正确的,因为有符合要求的数据
截图从– XXX到输出7 rows in set (0.00 sec)为止的全部

2. 查询Mike选的所有课程名称及分数

-- XXX
#XXX为你名字首字母!!! --(有空格)XXX!!!

以下的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

SELECT c.cname AS 课程名称, r.grade AS 分数
FROM stu s
JOIN report r ON s.sno = r.sno
JOIN course c ON r.cno = c.cno
WHERE s.sname = 'Mike';

以上的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

输出3 rows in set (0.00 sec)是正确的,因为有符合要求的数据
截图从– XXX到输出3 rows in set (0.00 sec)为止的全部

3. 查询选English课程的学生名称

-- XXX
#XXX为你名字首字母!!! --(有空格)XXX!!!

以下的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

SELECT DISTINCT s.sname AS 学生姓名
FROM stu s
JOIN report r ON s.sno = r.sno
JOIN course c ON r.cno = c.cno
WHERE c.cname = 'English';

以上的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

输出3 rows in set (0.00 sec)是正确的,因为有符合要求的数据
截图从– XXX到输出3 rows in set (0.00 sec)为止的全部

4. 查询选English课程的学生中,哪个学生的English课程分数最高,要求查出学生名称及其English分数

-- XXX
#XXX为你名字首字母!!! --(有空格)XXX!!!

以下的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

SELECT s.sname AS 学生姓名, r.grade AS 最高分数
FROM stu s
JOIN report r ON s.sno = r.sno
JOIN course c ON r.cno = c.cno
WHERE c.cname = 'English'
ORDER BY r.grade DESC
LIMIT 1;

以上的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

输出1 rows in set (0.00 sec)是正确的,因为有符合要求的数据
截图从– XXX到输出1 rows in set (0.00 sec)为止的全部

5. 查询选课最多的学生的名称

-- XXX
#XXX为你名字首字母!!! --(有空格)XXX!!!

以下的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

SELECT s.sname AS 学生姓名, COUNT(r.cno) AS 选课数量
FROM stu s
JOIN report r ON s.sno = r.sno
GROUP BY s.sno, s.sname
ORDER BY COUNT(r.cno) DESC
LIMIT 1;

以上的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

输出1 rows in set (0.00 sec)是正确的,因为有符合要求的数据
截图从– XXX到输出1 rows in set (0.00 sec)为止的全部

6. 对course表添加1行记录:1005, history of xi’a

-- XXX
#XXX为你名字首字母!!! --(有空格)XXX!!!

以下的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

INSERT INTO course (cno, cname) 
VALUES (1005, 'history of xi''an');
SELECT * FROM course;

以上的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

输出5 rows in set (0.00 sec)是正确的,因为有符合要求的数据
截图从– XXX到输出5 rows in set (0.00 sec)为止的全部

7. 把Maths科目的成绩在原分数基础上再加10分

-- XXX
#XXX为你名字首字母!!! --(有空格)XXX!!!

以下的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

UPDATE report r
JOIN course c ON r.cno = c.cno
SET r.grade = r.grade + 10
WHERE c.cname = 'Maths';
SELECT s.sname, c.cname, r.grade
FROM stu s
JOIN report r ON s.sno = r.sno
JOIN course c ON r.cno = c.cno
WHERE c.cname = 'Maths';

以上的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

输出2 rows in set (0.00 sec)是正确的,因为有符合要求的数据
截图从– XXX到输出2 rows in set (0.00 sec)为止的全部

感谢您的支持
微信赞赏

微信扫一扫

支付宝赞赏

支付宝扫一扫



评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字

插入代码
GuYuan-V-个人博客
🎉 我的生日

日期:09月29日

--