数据库的定义和维护—学生选课

2024-04-28 19:12

本文主要是介绍数据库的定义和维护—学生选课,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文提供了所有的查询操作来显示出操作前后数据库中表的改变, 插入的数据保证了每一个题目有输出结果

学生选课数据库

-- 创建数据库
CREATE DATABASE XSXK

学生选课相关表操作

学生表

-- 建表
CREATE TABLE student(sno CHAR(10) PRIMARY KEY,sname VARCHAR(8) NOT NULL,ssex CHAR(2) CHECK(ssex IN('男','女')) DEFAULT('男') NOT NULL,sage SMALLINT CHECK(sage > 18),sdept VARCHAR(30),stel VARCHAR(13)
)-- 添加记录
INSERT INTO student
VALUES
('2024010001','张三','男',20,'数学与计算机科学学院','11111111111'),
('2024010002','李四','男',25,'马克思主义学院','22222222222'),
('2024010003','王五','男',29,'数学与计算机科学学院','33333333333'),
('2024010004','张三','女',23,'数学与计算机科学学院','44444444444'),
('2024010005','赵七','男',22,'材料科学与工程学院','55555555555'),
('2024010006','王华','女',20,'数学与计算机科学学院','66666666666'),
('2024010007','老八','男',19,'管理学院','77777777777'),
('2024010008','李萍','女',22,'外语学院','88888888888'),
('2024010009','十号','女',20,'数学与计算机科学学院','99999999999'),
('2024010010','十一号','男',19,'管理学院','00000000000'),
('2100001','十一号','男',19,'管理学院','123123123123')-- 查询表
SELECT * FROM student-- 删除所有信息
DELETE FROM student WHERE sno = sno

课程表

-- 建表
CREATE TABLE Course(cno CHAR(10) PRIMARY KEY,cname VARCHAR(16) NOT NULL,ccredit SMALLINT NOT NULL,cpno VARCHAR(10)
)-- 添加记录
INSERT INTO Course
VALUES
('01','数据库原理与应用',3,'10'),
('02','JAVA',4,'10'),
('03','数据结构',5,'9'),
('04','计算机组成原理',3,'9'),
('05','计算机网络',4,'9'),
('06','高等数学下',5,'07'),
('07','高等数学上',5,NULL),
('08','线性代数',3,NULL),
('09','离散数学',3,'10'),
('10','C语言',3,'06')-- 查询表
SELECT * FROM Course-- 删除所有信息
DELETE FROM Course WHERE cno = cno

选课表

-- 建表
CREATE TABLE SC(sno CHAR(10),cno CHAR(10),grade SMALLINT,PRIMARY KEY(sno,cno),FOREIGN KEY (sno) REFERENCES student(sno) ON DELETE CASCADE,FOREIGN KEY (cno) REFERENCES Course(cno) ON DELETE CASCADE
)-- 添加记录
INSERT INTO SC 
VALUES
('2024010001','01',65),
('2024010001','02',88),
('2024010001','03',89),
('2024010001','04',65),
('2024010001','05',77),
('2024010001','06',65),
('2024010001','07',66),
('2024010001','08',95),
('2024010001','09',68),
('2024010001','10',87),
('2024010002','01',80),
('2024010002','03',2),
('2024010002','09',85),
('2024010004','01',15),
('2024010004','06',91),
('2024010005','03',100),
('2024010005','06',95),
('2024010005','07',70),
('2024010006','01',88),
('2024010006','08',80),
('2024010007','02',NULL),
('2024010007','09',NULL),
('2024010008','02',80),
('2024010009','05',27),
('2024010010','10',89),
('2100001','05',74)-- 查询表
SELECT * FROM SC-- 删除所有信息
DELETE FROM SC WHERE sno = sno

删除和修改示例

1.对于每个学生,求学生的选课门数和平均成绩,并把结果存入学生选课数据库中

-- 创建一个学生平均成绩表, 列包括学生学号, 学生选课门数, 学生平均成绩
CREATE TABLE avg_grade(sno CHAR(10) PRIMARY KEY,scnumber SMALLINT,ag SMALLINT
)-- 插入数据
INSERT INTO avg_grade
SELECT s.sno, COUNT(*), AVG(grade)
FROM student s
LEFT JOIN SC ON s.sno = SC.sno
LEFT JOIN Course c ON SC.cno = c.cno
GROUP BY s.sno-- 查询结果
SELECT * FROM avg_grade

2.将"数据库原理与应用"的学分修改为4

-- 修改
UPDATE Course SET ccredit = 4
WHERE cname='数据库原理与应用'

3.将王华同学选修的数据库原理与应用课程的成绩增加五分

-- 修改
UPDATE SC
SET grade = grade + 5
WHERE sno IN(SELECT sno FROM studentWHERE sname='王华')AND cno IN(SELECT cno FROM CourseWHERE cname='数据库原理与应用')SELECT sno FROM student
WHERE sname='王华'SELECT cno FROM Course
WHERE cname='数据库原理与应用'

4.将管理学院学生选课成绩置为空

-- 修改
UPDATE SC SET grade = NULL
WHERE sno IN(SELECT sno FROM studentWHERE sdept='管理学院')-- 查询管理学院学生选课及成绩
SELECT *
FROM SC
WHERE sno IN(SELECT sno FROM studentWHERE sdept='管理学院')

5.删除选课成绩中低于40分的记录

-- 删除
DELETE FROM SC
WHERE grade < 40-- 查询选课成绩中低于40分的记录
SELECT * FROM SC
WHERE grade < 40

6.删除所有选修"JAVA"的选课记录

-- 删除
DELETE FROM SC
WHERE cno IN(SELECT cno FROM CourseWHERE cname='JAVA')-- 查询所有选修"JAVA"的选课记录
SELECT * FROM SC
WHERE cno IN(SELECT cno FROM CourseWHERE cname='JAVA')

7.删除学生李萍所有的选课记录

-- 删除
DELETE FROM SC
WHERE sno IN(SELECT sno FROM studentWHERE sname='李萍')-- 查询学生李萍所有的选课记录
SELECT * FROM SC
WHERE sno IN(SELECT sno FROM studentWHERE sname='李萍')

8.删除学生学号为'2100001'的学生记录

-- 删除
DELETE FROM student
WHERE sno='2100001'-- 查询学生学号为'2100001'的学生记录
SELECT * FROM student
WHERE sno='2100001'

这篇关于数据库的定义和维护—学生选课的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/944033

相关文章

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

在Java中基于Geotools对PostGIS数据库的空间查询实践教程

《在Java中基于Geotools对PostGIS数据库的空间查询实践教程》本文将深入探讨这一实践,从连接配置到复杂空间查询操作,包括点查询、区域范围查询以及空间关系判断等,全方位展示如何在Java环... 目录前言一、相关技术背景介绍1、评价对象AOI2、数据处理流程二、对AOI空间范围查询实践1、空间查

Python+PyQt5实现MySQL数据库备份神器

《Python+PyQt5实现MySQL数据库备份神器》在数据库管理工作中,定期备份是确保数据安全的重要措施,本文将介绍如何使用Python+PyQt5开发一个高颜值,多功能的MySQL数据库备份工具... 目录概述功能特性核心功能矩阵特色功能界面展示主界面设计动态效果演示使用教程环境准备操作流程代码深度解

MySQL数据库实现批量表分区完整示例

《MySQL数据库实现批量表分区完整示例》通俗地讲表分区是将一大表,根据条件分割成若干个小表,:本文主要介绍MySQL数据库实现批量表分区的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录一、表分区条件二、常规表和分区表的区别三、表分区的创建四、将既有表转换分区表脚本五、批量转换表为分区

MySQL Workbench工具导出导入数据库方式

《MySQLWorkbench工具导出导入数据库方式》:本文主要介绍MySQLWorkbench工具导出导入数据库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录mysql Workbench工具导出导入数据库第一步 www.chinasem.cn数据库导出第二步

Mysql数据库中数据的操作CRUD详解

《Mysql数据库中数据的操作CRUD详解》:本文主要介绍Mysql数据库中数据的操作(CRUD),详细描述对Mysql数据库中数据的操作(CRUD),包括插入、修改、删除数据,还有查询数据,包括... 目录一、插入数据(insert)1.插入数据的语法2.注意事项二、修改数据(update)1.语法2.有

查看MySQL数据库版本的四种方法

《查看MySQL数据库版本的四种方法》查看MySQL数据库的版本信息可以通过多种方法实现,包括使用命令行工具、SQL查询语句和图形化管理工具等,以下是详细的步骤和示例代码,需要的朋友可以参考下... 目录方法一:使用命令行工具1. 使用 mysql 命令示例:方法二:使用 mysqladmin 命令示例:方