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

news2024/9/22 1:17:11

期末试题 :

一,创建数据库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.coloradmin.cn/o/740168.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python数据分析常见Matplotlib SeaBorn图表

Matplotlib绘图 Matplotlib基本概念 Matplotlib:基于对象的思维构建的视觉符号。 每一个Axes(坐标轴)对象包含一个或者多个Axis(轴)对象,比如X轴、Y轴。 一个Figure(画像)是由一堆坐标轴对象组成的。 换…

2023中国数交会|美创科技获数字和软件服务行业两项大奖!

7月6日-9日,为期四天的2023中国国际数字和软件服务交易会(简称:数交会)圆满落幕。 作为国务院批准举办的国家级展会,本届数交会由商务部、科技部、中国贸促会和辽宁省政府主办,以“数字创新、融合发展”为主…

操作系统实战45讲|03.黑盒之中有什么、04.震撼的Linux全景图

03.黑盒之中有什么 黑盒之中有什么 从抽象的角度来看,内核就是计算机资源的管理者,管理资源是为了让应用使用资源。 计算机中的资源分为两类:硬件资源、软件资源; 硬件资源有以下这些: 总线,负责连接各种…

一个Transformer在尺度上适合多模态扩散的所有分布

文章目录 One Transformer Fits All Distributions in Multi-Modal Diffusion at Scale摘要本文方法实验结果 One Transformer Fits All Distributions in Multi-Modal Diffusion at Scale 摘要 本文提出了一个统一的扩散框架(UniDiffuser)来拟合一个模型中与一组多模态数据相…

Vue3+Vite+Pinia+Naive后台管理系统搭建之三:vue-router 的安装和使用

前言 如果对 vue3 的语法不熟悉的,可以移步 Vue3.0 基础入门快速入门。 如果对 vue-router 语法不熟悉的,可以移步Vue3 系列:vue-router。 1. 安装依赖 yarn add vue-router // or npm install vue-router 2. 构建 src/router/index.js …

对话式ai人工智能的主要好处有哪些

对话式 AI 是客户服务的一个重要且不断增长的组成部分,尤其是客户越来越多地采用的数字自助服务。 对话式 AI 可以在提高客户满意度 (CSAT) 方面发挥很重要的作用。在 IBM 于 2021 年进行的一项研究中,99% 的公司报告称,由于使用虚拟对话式 …

支持源码的低代码核心工具,逻辑引擎

在现代企业管理中,决策扮演着至关重要的角色。然而,随着业务规模的扩大和数据量的增加,人工决策变得越来越困难和耗时,而且容易受到主观因素的影响。逻辑引擎的出现为企业提供了一种高效、准确的决策推理工具,能够以逻…

数字化转型迫在眉睫

在挑战商业世界现状并实现数字化转型时,一定程度的阻力是不可避免的。事实上,《福布斯》的一篇文章援引哈佛商学院的研究表明,70%的组织变革努力都失败了,“原因之一是高管们没有从足够多的人那里了解他们的计划和想法。”支持。”…

市面上的ipad国产触控笔怎么样?好用的电容笔合集

而对那些把IPAD当作学习工具的人而言,这个Apple Pencil绝对是不可或缺的。然而,苹果版本的Pencil却是昂贵得让许多人望而却步。因此,最佳方法是选择一个平替的电容笔。我是从几年前开始用IPAD的,也是一个数码爱好者,近…

AIGC行业周刊【2023-0709】【第六期】2023年世界人工智能大会大佬发言汇总

点击加入->【智子纪元-AIGC】技术交流群 一、大咖观点: 0709AI日报:2023年世界人工智能大会大佬发言汇总「5年内,人类程序员没了」,Stability AI老板大胆预测,一众大佬狂怼:大错特错,都懒得…

在vite创建的vue3项目中加载Cesium立体地形信息并调整初始化角度

在vite创建的vue3项目中加载Cesium立体地形信息并调整初始化角度 使用vite创建vue3项目 npm create vitelatestcd到创建的项目文件夹中 npm install安装Cesium npm i cesium vite-plugin-cesium vite -D配置 (1)在项目的vite.config.js文件中添加&#x…

算法训练营第三十一天||理论基础 ● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和

理论基础 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 这么说有点抽象,来举一个例子: 例如,有一堆钞票,你可以拿走十张,如果想达到最大的金额,你要怎么拿? 指定每次…

专项练习24

目录 一、选择题 1、JavaScript 中的数字在计算机内存中占多少个Byte? 2、请问以下JS代码会输出什么 二、编程题 1、以数字的形式返回数字参数向下取整的结果 一、选择题 1、JavaScript 中的数字在计算机内存中占多少个Byte? A、2 Byte B、4Byte C…

如何在购物 App 上实现商品快递物流信息的展示

前言 现如今,人们大多数会选择在手机购物App上进行购物,这样买东西很是便捷,不用出门就能买到全国各地甚至是国外的商品,下单之后只需要等待快递送达就可以了。一个购物APP,不可或缺的一个辅助功能就是,展…

GPT-4 验明真身的经典三连问:快速区分 GPT-3.5 与 GPT-4

GPT-4 验明真身的经典三连问:快速区分 GPT-3.5 与 GPT-4

华为VRP系统基础

系列文章目录 华为数通学习(1) 目录 一,什么是VRP? 二,VRP的发展 三,VRP的文件系统 3.1,系统文件:.cc结尾 ​编辑 3.2,配置文件:.cfg,.zip,.dat结尾 3.…

统计年,月,日,java补充无的数据

需求:营收趋势图。需要按年,按月,按日。按年,后方选择日历 起始年-结束年。例如start2013 end 2023 按月,后方选择月份 起始月-结束月。例如start 2022-10 end 2023-07。 按日,后方选择日 起始日-结束日。例…

Vue-CodeMirror 使用

vue2 安装 npm install vue-codemirror -S # or yarn add vue-codemirror -S 全局配置&#xff0c;main.js文件引入 import VueCodemirror from vue-codemirror // import base style import codemirror/lib/codemirror.css Vue.use(VueCodemirror)Vue 文件内使用 <templ…

QDialog的相关API函数

目录 常用的一些 API 函数: QDialog 的子类 QMessageBox&#xff1a; QFileDialog QFont 字体类 QColorDialog QInputDialog QProgressDialog 总结 QDialog是Qt框架中的一个控件类&#xff0c;用于实现对话框的界面。对话框通常用于显示一个独立的窗口&#xff0c;该窗口会显…

手撕spring05(xml解析bean)

概述 通过加载配置文件的信息&#xff0c;注册xml的bean配置 整体设计 知识点补充 返回指定资源的输入流 // 相对路径获取流 java.lang.ClassLoader#getResourceAsStream // 绝对路径获取流 java.io.FileInputStream#FileInputStream(java.io.File) // URL获取流 java.net…