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

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

相关文章

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

Win11安装PostgreSQL数据库的两种方式详细步骤

《Win11安装PostgreSQL数据库的两种方式详细步骤》PostgreSQL是备受业界青睐的关系型数据库,尤其是在地理空间和移动领域,:本文主要介绍Win11安装PostgreSQL数据库的... 目录一、exe文件安装 (推荐)下载安装包1. 选择操作系统2. 跳转到EDB(PostgreSQL 的

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

mysql数据库重置表主键id的实现

《mysql数据库重置表主键id的实现》在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,本文主要介绍了mysql数据库重置表主键id的实现,具有一定的参考价值,感兴趣的可以了... 目录关键语法演示案例在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,当我们

Spring Boot 整合 MyBatis 连接数据库及常见问题

《SpringBoot整合MyBatis连接数据库及常见问题》MyBatis是一个优秀的持久层框架,支持定制化SQL、存储过程以及高级映射,下面详细介绍如何在SpringBoot项目中整合My... 目录一、基本配置1. 添加依赖2. 配置数据库连接二、项目结构三、核心组件实现(示例)1. 实体类2. Ma

查看Oracle数据库中UNDO表空间的使用情况(最新推荐)

《查看Oracle数据库中UNDO表空间的使用情况(最新推荐)》Oracle数据库中查看UNDO表空间使用情况的4种方法:DBA_TABLESPACES和DBA_DATA_FILES提供基本信息,V$... 目录1. 通过 DBjavascriptA_TABLESPACES 和 DBA_DATA_FILES

Java实现数据库图片上传与存储功能

《Java实现数据库图片上传与存储功能》在现代的Web开发中,上传图片并将其存储在数据库中是常见的需求之一,本文将介绍如何通过Java实现图片上传,存储到数据库的完整过程,希望对大家有所帮助... 目录1. 项目结构2. 数据库表设计3. 实现图片上传功能3.1 文件上传控制器3.2 图片上传服务4. 实现