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

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

相关文章

虚拟机Centos7安装MySQL数据库实践

《虚拟机Centos7安装MySQL数据库实践》用户分享在虚拟机安装MySQL的全过程及常见问题解决方案,包括处理GPG密钥、修改密码策略、配置远程访问权限及防火墙设置,最终通过关闭防火墙和停止Net... 目录安装mysql数据库下载wget命令下载MySQL安装包安装MySQL安装MySQL服务安装完成

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

MySQL数据库中ENUM的用法是什么详解

《MySQL数据库中ENUM的用法是什么详解》ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用,下面:本文主要介绍MySQL数据库中ENUM的用法是什么的相关资料,文中通过代码... 目录mysql 中 ENUM 的用法一、ENUM 的定义与语法二、ENUM 的特点三、ENUM 的用法1

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN