MySQL 课后习题解析与笔记——学生选课数据库相关操作

news2024/11/26 8:30:48

文章目录

  • 📋前言
  • 🎯题目解析
    • 1️⃣创建数据库
    • 2️⃣创建表
      • 📑Student 表
      • 📑Course 表
      • 📑SC 表
  • 🎯完整答案
  • 📝最后


请添加图片描述

📋前言

这篇文章记录一下帮助粉丝朋友一起学习解决的 MySQL 课后习题,内容很基础,都是基础的数据库语句和操作,内容是关于学生选课数据库的一些操作。这里我用 MySQLNavicat 完成这些题目。


🎯题目解析

题目如下:

现有学生选课数据库:Student(Sno,Sname,Sage,Ssex,Sdept)、 Course(Cno,Cname, Teacher)、SC(Sno,Cno,Grade),试用SQL完成下列操作。
(1)创建 SC 表,注明主码和外码。
(2)检索刘军老师所授课程的课程号和课程名。
(3)检素年龄大于 23 的男学生的学号和姓名。
(4)检索学号为 95001 学生所学课程的课程名与任课教师名。
(5)检索课程平均成绩 90 分(含 90 分)以上的学生姓名和学号。
(6)删除学号为 95002 学生的选课记录。
(7)将学号为 95003 学生的年龄修改为 19 岁
(8)插入一条学生记录(95004,李玉荷,18,计算机系,女)。
(9)将 SC 表查询的权限授权给所有用户。
(10)创建数学系的学生视图。

因为是教材的课后习题,所以我们没有开箱即用的数据库和表,因此我们要先创建数据库,并且建相对应的三个表,分别是Student(Sno,Sname,Sage,Ssex,Sdept)、 Course(Cno,Cname, Teacher)、SC(Sno,Cno,Grade)。

1️⃣创建数据库

首先创建数据库 course_select ,可以通过 SQL 语句创建,也可以通过 Navicat 的可视化操作创建 (右键连接 => 新建数据库 =>输入数据库名、字符集、排序规则 => 确定即可)

CREATE DATABASE `course_select` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';

在这里插入图片描述

2️⃣创建表

创建好数据库以后,我们根据题目的描述,创建对应的表以及表所需要的字段。同时插入一些默认数据,以及题目中所需要的数据,比如说年龄大于 23 、学号的命名规则(95001)、老师名字(如刘军老师)。

然后是关于表的创建 ,可以通过 SQL 语句创建,也可以通过 Navicat 的可视化操作创建 (下图是创建数据库的方法,右击表 => 新建表 =>在窗口输入内容,如字段名、类型、长度 => 保存 =>给表命名),但这里建议用 SQL 语句创建(巩固基础)。
在这里插入图片描述
创建的表和字段名为 Student(Sno,Sname,Sage,Ssex,Sdept)、 Course(Cno,Cname, Teacher)、SC(Sno,Cno,Grade) 。参考的 SQL 语句和插入的默认数据如下。

📑Student 表

-- 创建 Student 表
CREATE TABLE Student (
  Sno CHAR(8) NOT NULL,
  Sname VARCHAR(20),
  Sage INT,
  Ssex CHAR(2),
  Sdept VARCHAR(20),
  PRIMARY KEY (Sno)
);

-- 插入 student 表数据
INSERT INTO Student (Sno, Sname, Sage, Ssex, Sdept) VALUES 
  ('95001', '张可可', 20, '男', '计算机系'),
  ('95002', '李晓晓', 21, '男', '数学系'),
  ('95003', '黄珊', 22, '女', '英语系');

Navicat 新建查询,然后运行 SQL 语句创建表(下面两个表也是这样操作,不重复赘述)
在这里插入图片描述
在这里插入图片描述

📑Course 表

-- 创建 Course 表
CREATE TABLE Course (
  Cno CHAR(4) NOT NULL,
  Cname VARCHAR(20),
  teacher VARCHAR(20),
  PRIMARY KEY (Cno)
);
-- 插入 Course 表数据
INSERT INTO Course (Cno, Cname, Teacher) VALUES 
  ('001', '高等数学', '张三'),
  ('002', '大学英语', '李四'),
  ('003', '计算机体系结构', '刘军');

在这里插入图片描述
在这里插入图片描述

📑SC 表

-- 创建 SC 表
CREATE TABLE SC (
  Sno CHAR(8) NOT NULL,
  Cno CHAR(4) NOT NULL,
  Grade FLOAT,
  PRIMARY KEY (Sno, Cno),
  FOREIGN KEY (Sno) REFERENCES student(Sno),
  FOREIGN KEY (Cno) REFERENCES Course(Cno)
);

-- 插入 SC 表数据
INSERT INTO SC (Sno, Cno, Grade) VALUES 
  ('95001', '001', 90),
  ('95001', '002', 85),
  ('95002', '001', 70),
  ('95002', '003', 80),
  ('95003', '002', 95),
  ('95003', '003', 90);

在这里插入图片描述
在这里插入图片描述
创建完这三个表以及插入数据以后,先熟悉每个表的结构以及各个表之间的联系,然后再审题,具体看题目需要完成哪些操作。


🎯完整答案

在完成上面的步骤以后,我们可以开始做题。接下来我们来看看这十道题目的答案。

(1)创建 SC 表,注明主码和外码。
这题在上面创建表的时候已经算是完成了,所以就不多赘述了(这里的主码、外码就是指主键和外键,我是这样理解的)。

CREATE TABLE SC (
  Sno CHAR(8) NOT NULL,
  Cno CHAR(4) NOT NULL,
  Grade FLOAT,
  PRIMARY KEY (Sno, Cno),
  FOREIGN KEY (Sno) REFERENCES student(Sno),
  FOREIGN KEY (Cno) REFERENCES Course(Cno)
);

(2)检索刘军老师所授课程的课程号和课程名。

SELECT Cno, Cname
FROM Course
WHERE teacher = '刘军';

在这里插入图片描述
(3)检素年龄大于 23 的男学生的学号和姓名。
这里没有查询到年龄大于 23 岁的男学生,是因为插入数据的时候忘记插入大于 23 岁的默认数据了,因此插入一条大于 23 岁的学生数据再做测试 。
在这里插入图片描述
插入数据后,测试成功。
在这里插入图片描述
(4)检索学号为 95001 学生所学课程的课程名与任课教师名。

SELECT Course.Cname, Course.teacher
FROM Course, SC
WHERE SC.Sno = '95001' AND SC.Cno = Course.Cno;

在这里插入图片描述
(5)检索课程平均成绩 90 分(含 90 分)以上的学生姓名和学号。

SELECT student.Sno, student.Sname
FROM student, SC
WHERE student.Sno = SC.Sno
GROUP BY student.Sno, student.Sname
HAVING AVG(SC.Grade) >= 90;

在这里插入图片描述
(6)删除学号为 95002 学生的选课记录。

DELETE FROM SC
WHERE Sno = '95002';

在这里插入图片描述
(7)将学号为 95003 学生的年龄修改为 19 岁。

UPDATE student
SET Sage = 19
WHERE Sno = '95003';

在这里插入图片描述
(8)插入一条学生记录(95004,李玉荷,18,计算机系,女)。

INSERT INTO student(Sno, Sname, Sage,Sdept, Ssex)
VALUES ('95004', '李玉荷', '18','计算机系', '女');

在这里插入图片描述
(9)将 SC 表查询的权限授权给所有用户。(参考)

GRANT SELECT ON SC TO PUBLIC;

(10)创建数学系的学生视图。

CREATE VIEW math_students AS 
SELECT Sno, Sname, Sage, Ssex
FROM student
WHERE Sdept = '数学系';

在这里插入图片描述


📝最后

这就算 MySQL 课后习题——学生选课数据库相关操作的全部内容了,内容很基础,都是基础的数据库语句和操作,通过这个练习,可以熟悉 MySQLNavicat 使用。
在这里插入图片描述

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

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

相关文章

5款AI应用让你全面感受人工智能的魅力

“ AI 的出现就像燃气机和蒸汽机一样,极大地提高了生产力。” chatGPT ChatGPT 是由 OpenAI 公司开发的一种大型语言模型。 OpenAI 公司成立于 2015年,早期马斯克是该公司的创始人之一。 自 2018 年推出 GTP-1 以来,OpenAI 已经推出了 GPT-…

Power BI Visuals - Candlestick (K线图) 介绍文档

注:本文最初发布于 d-bi.gitee.io (2020年4月), 2023年6月迁移至CSDN 注:本文将简要介绍新的Power BI可视化–Candlestick的使用方法 简介 Candlestick是由本人(Davis ZHANG)使用R语言开发的Power BI可视化, 它将在数日之后(取决于审核的进…

chatgpt赋能python:Python平均值:让你的数据更有说服力

Python平均值:让你的数据更有说服力 作为一个有10年Python编程经验的工程师,我非常熟悉Python程序的各种应用。其中,计算平均值是数据分析中最常用的计算方法之一,而Python作为一种广泛应用的语言,也可以轻松地处理平…

k8s网络模型

前言 通过《Linux网络原理》我们已据备了一定的理论知识。k8s是怎么构建网络模型的呢? 基础知识 交换机和路由器都是网络中常见的设备,它们在网络通信中扮演不同的角色。 交换机(Switch)是一种用于构建局域网(LAN&a…

11 - 守护进程深度分析

---- 整理自狄泰软件唐佐林老师课程 查看所有文章链接:(更新中)Linux系统编程训练营 - 目录 文章目录 1. 会话与终端的关联1.1 思考1.2 新会话关联控制终端的方法1.3 一些相关推论1.4 一些想法1.5 编程实验:会话与终端 2. 守护进程…

SpringSecurity自定义认证

一. 前言 ​ 学习了SpringSecurity的使用,以及跟着源码分析了一遍认证流程,掌握了这个登录认证流程,才能更方便我们做自定义操作。 ​ 下面我们来学习下怎么实现多种登录方式,比如新增加一种邮箱验证码登录的形式,但…

chatgpt赋能python:用Python建立Pipeline-优化你的数据处理流程

用Python建立Pipeline - 优化你的数据处理流程 如果你是一位数据科学家或是数据工程师,那么你一定知道数据处理流程的重要性。数据流程不只是数据的处理和清洗,还包括数据来源的获取以及对数据进行可视化、建模和验证。这个流程可以十分复杂&#xff0c…

solr快速上手:实现从mysql定时自动同步数据(六)

0. 引言 上一章节我们讲解了从msyql同步数据到solr,但是我们每次同步都需要在solr-admin中点击同步按钮,这在生产环境中肯定是不可行的,那么solr是否支持自动化同步了,答案当然是可以,我们今天继续来探索如何实现solr…

虚拟机安装和配置红帽企业版 7.4 操作系统及相关设置

虚拟机安装和配置红帽企业版 7.4 操作系统及相关设置 当安装红帽企业版 7.4 操作系统时,可以按照以下步骤进行配置和设置: 使用 VM16.0 安装软件,打开虚拟机管理程序,并选择创建新的虚拟机。在创建虚拟机的过程中,选…

ChatGPT在线网页版和接口

chat gpt能写公众号文章吗 ChatGPT是一种强大的自然语言生成技术,它可以用来自动生成大量的、质量较高的文本。根据OpenAI官方的演示和使用案例,ChatGPT已经被用于文本摘要、对话生成、语言翻译、文本分类等多种应用场景。 然而,ChatGPT作为…

文本三剑客之 awk

awk Linux/UNIX 系统中,awk 是一个功能强大的编辑工具。逐行读取输入文本 以空格作为分割符,多个空格他会自动压缩成一个空格 AWK信息的读入也是逐行指定的匹配模式进行查找,对符合条件的内容进行格式化输出或者过滤处理. 1按照命令找指定…

用户档案PDF报表

用户档案PDF报表 理解数据填充的两种方式熟练构造分组报表 熟练构造Chart图形报表实现个人档案的PDF输出 数据填充 我们介绍了如何使用JasperReport来生成简单的文本报表,正式企业开发中动态数据展示也是报表中最重要的一 环,接下来我们共同研究的就是填…

FastCorrect:语音识别快速纠错模型丨RTC Dev Meetup

前言 「语音处理」是实时互动领域中非常重要的一个场景,在声网发起的「RTC Dev Meetup丨语音处理在实时互动领域的技术实践和应用」活动中,来自百度、寰宇科技和依图的技术专家,围绕该话题进行了相关分享。 本文基于微软亚洲研究院主管研究…

chatgpt赋能python:Python应用图标的SEO优化策略

Python应用图标的SEO优化策略 作为一门跨平台解释型编程语言,Python已经成为越来越多企业和开发者的首选语言之一。在Python应用的推广过程中,图标的设计和SEO优化也变得越来越重要。在本文中,我们将探讨Python应用图标的SEO优化策略&#x…

CCE集群切换OBS共享存储方案

目录 一、背景 二、创建PVC 三、同步nfs数据到OBS 四、变更无状态负载数据储存为OBS 五、卸载弹性文件服务SFS(nfs) 一、背景 生产环境CEE集群,每个K8s节点挂载同一个华为云弹性文件服务SFS(可以简单的理解为nfs)。无状态应用通过hostPath…

chatgpt赋能python:Python就业岗位:行业热门,前景广阔

Python 就业岗位:行业热门,前景广阔 作为其中一门最受欢迎的编程语言,Python 经常出现在各个行业的招聘需求中。无论是大企业、初创公司,还是政府机构和非营利组织,都需要 Python 专业人士来应对日益增长的数据和技术…

chatgpt赋能python:Python库使用指南

Python库使用指南 Python是一种高级编程语言,拥有丰富而强大的标准库和第三方库。在本文中,将介绍一些主要Python库的使用方法以及如何通过使用它们来提高SEO。 Requests库 Requests是一个流行的第三方库,用于HTTP请求和响应。可以使用它来…

【内网安全-隧道搭建】内网穿透_Spp上线(全双工通信)

目录 Spp(特殊协议上线) 1、简述: 2、用法: 1、准备 2、服务器 3、客户机 4、cs、msf Spp(特殊协议上线) 1、简述: 1)支持的协议:tcp、udp、rudp(可靠…

基于动力学模型的无人驾驶车辆MPC轨迹跟踪算法及carsim+matlab联合仿真学习笔记

目录 1 模型推导及算法分析 1.1 模型推导 1.1.1 车辆动力学模型 1.1.2 线性时变预测模型推导 1.2 模型预测控制器设计 1.2.1 目标函数设计 1.2.2 约束设计 2 代码解析 2.1 模板框架 2.1.1 S-Function 2.1.2 mdlInitializeSizes函数 2.1.3 mdlUpdates()函数 2.1.4 …

机器学习中的数学原理——分类的正则化

通过这篇博客,你将清晰的明白什么是分类的正则化。这个专栏名为白话机器学习中数学学习笔记,主要是用来分享一下我在 机器学习中的学习笔记及一些感悟,也希望对你的学习有帮助哦!感兴趣的小伙伴欢迎私信或者评论区留言&#xff01…