MYSQL数据库系统期末试题及参考答案(2)

期末试题 :

一,创建数据库Game
二,数据表操作
1、创建表格players,记录游戏玩家信息:
player_id:玩家ID,主键
player_name:玩家姓名,不能为空
age:年龄,必须大于等于18岁
country:国家, 默认值为'中国'
unique_player_id:玩家ID唯一约束
2、创建表格games,记录游戏信息:
game_id:游戏ID,主键
game_name:游戏名称,不能为空
release_date:发布日期
genre:游戏类型
unique_game_name:游戏名称唯一约束
3、创建表格scores,记录玩家游戏得分:
score_id:得分ID,主键
player_id:玩家ID,外键参考players表的player_id
game_id:游戏ID,外键参考games表的game_id
score:得分
fk_player:玩家ID外键约束,关联players表
fk_game:游戏ID外键约束,关联games表
三,数据操作
 1、向表格players插入数据:
66407b4765db40c3928f02aae2a4bf11.png
 2、向表格games插入数据:
6243d5dda1384cf591fa1a1ba112c59a.png
 3、向表格scores插入数据:
(1,1, 1, 85),
(2,2, 2, 92),
(3,3, 3, 78),
(4,4, 4, 89),
(5,5, 5, 95),
(6,6, 6, 80),
(7,7, 7, 87),
(8,8, 8, 90),
(9,1, 2, 85),
(10,2, 1, 92),
(11,3, 6, 78),
(12,3, 7, 89),
(13,3, 8, 95),
(14,1, 2, 80),
(15,4, 7, 87),
(16,6, 7, 90),
(17,3, 1, 95),
(18,1, 4, 80),
(19,4, 3, 87),
(20,6, 8, 90);
四,完成如下查询题目
1.查询得分ID、玩家姓名、游戏名称和得分
2.查询有得分大于88分的人的游戏名称,游戏发布日期,游戏类型(不重复信息)
3.总得分大于250的玩家的玩家ID,玩家姓名,年龄,国家
4.查询马起和诸葛亮玩的相同游戏有哪些
5.将每个玩家的总得分计算出来
6.将马超的国家,魏国改成蜀国
7.查询年龄大于25的玩家姓名
8.查询蜀国玩王者荣耀有哪些玩家
9.查询玩各个游戏的总人数
10.查询游戏类型为射击的游戏名称

参考答案: 

-- 一,	创建数据库Game
-- 1,删除数据库DROP DATABASE IF EXISTS Game;
-- 2,创建数据库CREATE DATABASE Game;
-- 3,修改数据库编码方式和字符集排列顺序ALTER DATABASE Game CHARACTER SET utf8 COLLATE utf8_bin;
-- 4,使用数据库USE Game;
-- 二,数据表操作
-- 1、创建表格players,记录游戏玩家信息:
DROP TABLE IF EXISTS players;
CREATE TABLE players (player_id INT PRIMARY KEY, -- 玩家ID,主键player_name VARCHAR(50) NOT NULL, -- 玩家姓名,不能为空age INT CHECK (age >= 18), -- 年龄,必须大于等于18岁country VARCHAR(50) DEFAULT '中国', -- 国家, 默认值为'中国'CONSTRAINT unique_player_id UNIQUE (player_id) -- 玩家ID唯一约束
);
-- 2、创建表格games,记录游戏信息:
DROP TABLE IF EXISTS games;
CREATE TABLE games (game_id INT PRIMARY KEY, -- 游戏ID,主键game_name VARCHAR(50) NOT NULL, -- 游戏名称,不能为空release_date DATE, -- 发布日期genre VARCHAR(50), -- 游戏类型CONSTRAINT unique_game_name UNIQUE (game_name) -- 游戏名称唯一约束
);
-- 3、创建表格scores,记录玩家游戏得分:
DROP TABLE IF EXISTS scores;
CREATE TABLE scores (score_id INT PRIMARY KEY, -- 得分ID,主键player_id INT, -- 玩家ID,外键game_id INT, -- 游戏ID,外键score INT, -- 得分CONSTRAINT fk_player FOREIGN KEY (player_id) REFERENCES players(player_id), -- 玩家ID外键约束,关联players表CONSTRAINT fk_game FOREIGN KEY (game_id) REFERENCES games(game_id) -- 游戏ID外键约束,关联games表
);
-- 三,数据操作
SELECT * FROM players;
SELECT * FROM games;
SELECT * FROM scores;
-- 1、向表格players插入数据:
INSERT INTO players (player_id, player_name, age, country) VALUES
(1,'刘备',21,'蜀国'),
(2,'关羽',23,'蜀国'),
(3,'张飞',45,'蜀国'),
(4,'诸葛亮',28,'蜀国'),
(5,'赵云',30,'蜀国'),
(6,'马超',18,'魏国'),
(7,'黄忠',19,'蜀国'),
(8,'曹贼',27,'魏国');
-- 2、向表格games插入数据:
INSERT INTO games (game_id, game_name, release_date, genre) VALUES
(1,'绝地求生','2023-07-01','射击'),
(2,'英雄联盟','2023-07-02','MOBA'),
(3,'守望先锋','2023-07-03','射击'),
(4,'王者荣耀','2023-07-04','MOBA'),
(5,'蛋仔派对','2023-07-05','休闲'),
(6,'开心消消乐','2023-07-06','休闲'),
(7,'使命召唤','2023-07-07','射击'),
(8,'刺激战场','2023-07-08','射击');
-- 3、向表格scores插入数据:
INSERT INTO scores (score_id, player_id, game_id, score) VALUES
(1,1, 1, 85),
(2,2, 2, 72),
(3,3, 3, 78),
(4,4, 4, 89),
(5,5, 5, 95),
(6,6, 6, 80),
(7,7, 7, 87),
(8,8, 8, 90),
(9,1, 2, 85),
(10,2, 1, 22),
(11,3, 6, 78),
(12,3, 7, 83),
(13,3, 8, 95),
(14,1, 2, 80),
(15,4, 7, 81),
(16,6, 7, 90),
(17,3, 1, 95),
(18,1, 4, 80),
(19,4, 3, 87),
(20,6, 8, 90);
-- 四,完成如下查询题目
-- 1.查询得分ID、玩家姓名、游戏名称和得分
SELECT scores.score_id AS 得分ID, players.player_name AS 玩家姓名, games.game_name AS 游戏名称, scores.score AS 得分
FROM scores
JOIN players ON scores.player_id = players.player_id
JOIN games ON scores.game_id = games.game_id;-- 2.查询有得分大于88分的人的游戏名称,游戏发布日期,游戏类型(不重复信息)
-- 第一种方法
SELECT DISTINCT g.game_name AS 游戏名称, g.release_date AS 游戏发布日期, g.genre AS 游戏类型
FROM games g
INNER JOIN scores s ON g.game_id = s.game_id
WHERE s.score > 88;
-- 第二种方法
SELECT DISTINCT games.game_name AS 游戏名称, games.release_date AS 游戏发布日期, games.genre AS 游戏类型
FROM scores
JOIN games ON scores.game_id = games.game_id
WHERE scores.score > 88;-- 3.总得分大于250的玩家的玩家ID,玩家姓名,年龄,国家
-- 第一种方法
SELECT p.player_id AS 玩家ID, p.player_name AS 玩家姓名, p.age AS 年龄, p.country AS 国家
FROM players p
INNER JOIN scores s ON p.player_id = s.player_id
GROUP BY p.player_id, p.player_name, p.age, p.country
HAVING SUM(s.score) > 250;
-- 第二种方法
SELECT players.player_id AS 玩家ID, players.player_name AS 玩家姓名, players.age AS 年龄, players.country AS 国家
FROM scores
JOIN players ON scores.player_id = players.player_id
GROUP BY players.player_id
HAVING SUM(scores.score) > 250;-- 4.查询马起和诸葛亮玩的相同游戏有哪些
SELECT DISTINCT g.game_name AS 相同游戏
FROM games g
INNER JOIN scores s1 ON g.game_id = s1.game_id
INNER JOIN scores s2 ON s1.game_id = s2.game_id
WHERE s1.player_id = 6 -- 马超的player_id
AND s2.player_id = 4 -- 诸葛亮的player_id;-- 5.将每个玩家的总得分计算出来
SELECT p.player_name AS 玩家姓名, SUM(s.score) AS 总得分
FROM players p
JOIN scores s ON p.player_id = s.player_id
GROUP BY p.player_name;-- 6.将马超的国家,魏国改成蜀国
UPDATE players SET country = '蜀国' WHERE player_name = '马超';-- 7.查询年龄大于25的玩家姓名
SELECT player_name AS 姓名 FROM players WHERE age> 25;-- 8.查询蜀国玩王者荣耀有哪些玩家
SELECT player_name AS 玩家姓名
FROM players
JOIN scores ON players.player_id = scores.player_id
JOIN games ON scores.game_id = games.game_id
WHERE country = '蜀国' AND game_name = '王者荣耀';-- 9.查询玩各个游戏的总人数
SELECT games.game_name AS 游戏名称, COUNT(DISTINCT scores.player_id) AS 总人数
FROM games
LEFT JOIN scores ON games.game_id = scores.game_id
GROUP BY games.game_name;-- 10.查询游戏类型为射击的游戏名称
SELECT game_name AS 游戏名称
FROM games
WHERE genre= '射击';

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/18897.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【软件测试】Windows下同一电脑配置多个Git公钥(详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 首先在配置多个本…

修改npm路径

npm config ls如果是第一次使用NPM安装包的话,在配置中只会看到prefix的选项,就是NPM默认的全局安装目录。但是如果有多次使用NPM安装包的话,就会看到cache和prefix两个路径。 新建两个文件夹node_global_modules和node_cache npm config s…

银河麒麟服务器v10 sp1 部署 mysql 客户端工具 DBeaver

上一篇:银河麒麟服务器v10 sp1 安装mysql_csdn_aspnet的博客-CSDN博客 DBeaver 是数据库管理器的客户端,它允许以舒适的方式管理数据库实例的数据和选项。DBeaver 支持任何具有 JDBC 驱动程序的数据库 – MySQL/MariaDB、PostgreSQL、Oracle、DB2 LUW、…

图像分类——图像分类简介

目录 图像分类常用数据集mnist数据集CIFAR-10和CIFAR-100ImageNet 图像分类 图像分类实质上就是从给定的类别集合中为图像分配对于应的标签任务。也就是说我们的任务是分析一个输入图像并返回一个该图像类别的标签。 常用数据集 mnist数据集 CIFAR-10和CIFAR-100 from tenso…

PFC离散元仿真,3DEC非连续岩石力学与结构问题分析

一、背景: 随着我国经济的发展,岩土工程涉及的要求从材料、理论到施工工艺都提出了全方位的系统升级。在岩土工程分析设计中,3DEC和PFC软件快速建模也一直是岩土工作者所关注的问题。3DEC是非连续岩石力学与结构问题的首选分析程序&#xff0…

排序算法第二辑——选择排序

一,选择排序 选择排序算是简单排序中的渣渣,这种算法基本上是没有什么用处的。但是作为一个初学者,我又必须要会写这种算法。这种算法的实现实现思想和它的名字一样,就是在一个范围内选择最大或者最小的数据然后再交换数据实现排序…

leetcode 98. 验证二叉搜索树

2023.7.9 这题有个陷阱,就是不能单纯的比较左节点小于中间节点,右节点大于中间节点就完事了。我们要比较的是 左子树所有节点小于中间节点,右子树所有节点大于中间节点。 我的思路是先用中序遍历所有节点,并将其放入数组中&#…

如何用ChatGPT做咨询师,附Prompt

对基本问题研究得不深不透、得不到可靠的分析框架支持的情况下,仓促采取就事论事的应对措施 ,由于未能触及事情的根本,往往非但不能获得预期的效果,相反可能引发新的矛盾。 ——吴敬琏(著名经济学家,国务院…

途乐证券-主力砸盘是什么意思?和洗盘有什么区别?

投资者在进行股票交易的过程中,经常会听说主力出货、洗盘以及砸盘等等操作但是不了解是什么意思。那么主力砸盘是什么意思?和洗盘有什么区别?下面就由途乐证券为我们分析: 主力砸盘是什么意思? 主力砸盘便是主力在股票…

uniapp 小程序 vue TypeError: Cannot read property ‘toString‘ of undefined

是因为对字符串使用toString的时候页面中的数据还没有加载 。错误代码: 可以使用 v-if 修改为:

Qt6之QSetting读取为空或失败

一、目的 QSetting终极目的是,模糊平台,一套方法可以同时写入或者读取配置文件及注册表。 二、问题 QSetting确实兼顾了平台,linux、mac、windows三大平台均能使用,但就像所有事物一样,大一统的背后必定要做出一些让步…

【新星计划·2023】认识和学习BASH(一)

作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 目录 一、认识BASH 1、硬件、核心与Shell ①硬件 ②核心管理 ③应用程序 2、为何要学文字接口的shell? 3、系统的合法shel…