0


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

文章目录


请添加图片描述

📋前言

这篇文章记录一下帮助粉丝朋友一起学习解决的

MySQL

课后习题,内容很基础,都是基础的数据库语句和操作,内容是关于学生选课数据库的一些操作。这里我用

MySQL

Navicat

完成这些题目。


🎯题目解析

题目如下:

现有学生选课数据库: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

的可视化操作创建 (右键连接 => 新建数据库 =>输入数据库名、字符集、排序规则 => 确定即可)

CREATEDATABASE`course_select`CHARACTERSET'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 表CREATETABLE Student (
  Sno CHAR(8)NOTNULL,
  Sname VARCHAR(20),
  Sage INT,
  Ssex CHAR(2),
  Sdept VARCHAR(20),PRIMARYKEY(Sno));-- 插入 student 表数据INSERTINTO Student (Sno, Sname, Sage, Ssex, Sdept)VALUES('95001','张可可',20,'男','计算机系'),('95002','李晓晓',21,'男','数学系'),('95003','黄珊',22,'女','英语系');

Navicat

新建查询,然后运行

SQL

语句创建表(下面两个表也是这样操作,不重复赘述)
在这里插入图片描述
在这里插入图片描述

📑Course 表

-- 创建 Course 表CREATETABLE Course (
  Cno CHAR(4)NOTNULL,
  Cname VARCHAR(20),
  teacher VARCHAR(20),PRIMARYKEY(Cno));-- 插入 Course 表数据INSERTINTO Course (Cno, Cname, Teacher)VALUES('001','高等数学','张三'),('002','大学英语','李四'),('003','计算机体系结构','刘军');

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

📑SC 表

-- 创建 SC 表CREATETABLE SC (
  Sno CHAR(8)NOTNULL,
  Cno CHAR(4)NOTNULL,
  Grade FLOAT,PRIMARYKEY(Sno, Cno),FOREIGNKEY(Sno)REFERENCES student(Sno),FOREIGNKEY(Cno)REFERENCES Course(Cno));-- 插入 SC 表数据INSERTINTO 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 表,注明主码和外码。
这题在上面创建表的时候已经算是完成了,所以就不多赘述了(这里的主码、外码就是指主键和外键,我是这样理解的)。

CREATETABLE SC (
  Sno CHAR(8)NOTNULL,
  Cno CHAR(4)NOTNULL,
  Grade FLOAT,PRIMARYKEY(Sno, Cno),FOREIGNKEY(Sno)REFERENCES student(Sno),FOREIGNKEY(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
GROUPBY student.Sno, student.Sname
HAVINGAVG(SC.Grade)>=90;

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

DELETEFROM SC
WHERE Sno ='95002';

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

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

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

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

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

GRANTSELECTON SC TOPUBLIC;

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

CREATEVIEW math_students ASSELECT Sno, Sname, Sage, Ssex
FROM student
WHERE Sdept ='数学系';

在这里插入图片描述


📝最后

这就算

MySQL

课后习题——学生选课数据库相关操作的全部内容了,内容很基础,都是基础的数据库语句和操作,通过这个练习,可以熟悉

MySQL

Navicat

使用。
在这里插入图片描述

标签: 数据库 mysql 笔记

本文转载自: https://blog.csdn.net/weixin_53231455/article/details/131059236
版权归原作者 黛琳ghz 所有, 如有侵权,请联系我们删除。

“MySQL 课后习题解析与笔记——学生选课数据库相关操作”的评论:

还没有评论