《数据库原理》学生表,课程表,选课表的相关内容

数据库应用课程学生表、课程表、选课表mysql语句实战练习 通过一篇博客数据库实战加强你的数据库基础知识 阅读详情
# 学生表
create table Student(
	Sno char(9) primary key,
	Sname char(20) unique, 
	Ssex char(2),
	Sage smallint,
	Sdept char(20)   
);

# 课程表
create table Course(
	Cno char(4) primary key,
	Cname char(40) not null,
	Cpno char(4), 
	Ccredit smallint,
	foreign key(Cpno) references Course(Cno) 
);
# 表级完整性约束条件, 相当于是自关联  外键Cpno, 参照主键 Cno


# 学生选课表
create table SC(
	Sno char(9),
	Cno char(4),
	Grade smallint,
	primary key(Sno, Cno),
	foreign key(Sno) references Student(Sno),
	foreign key(Cno) references Course(Cno)
);
# 设置两个子墩 合并为主键
# 常规外键



# 插入数据
# 学生表
insert into Student values('201215121', '李勇', '男', 20, 'CS'),
			('201215122', '刘晨', '女', 19, 'CS'),
			('201215123', '王敏', '女', 18, 'MA'),
			('201215125', '张立', '男', 19, 'IS');

# 课程表
insert into Course
	values('1', '数据库', '5', 4),
	('2', '数学', null, 2),
	('3', '信息系统', '1', 4),
	('4', '操作系统', '6', 3),
	('5', '数据结构', '7', 3),
	('6', '数据处理', null, 2),
	('7', 'PASCAL语言', '6', 4);

# SC表
insert into SC
	values('201215121', '1', 92),
	('201215121', '2', 85),
	('201215121', '3', 88),
	('201215122', '2', 90),
	('201215122', '3', 80);

# 三表展示:
select * from Student;
+-----------+--------+------+------+-------+
| Son       | Sname  | Ssex | Sage | Sdept |
+-----------+--------+------+------+-------+
| 201215121 | 李勇   | 男   |   20 | CS    |
| 201215122 | 刘晨   | 女   |   19 | CS    |
| 201215123 | 王敏   | 女   |   18 | MA    |
| 201215125 | 张立   | 男   |   19 | IS    |
+-----------+--------+------+------+-------+

select * from Course;
+-----+--------------+------+---------+
| Cno | Cname        | Cpno | Ccredit |
+-----+--------------+------+---------+
| 1   | 数据库       | 5    |       4 |
| 2   | 数学         | NULL |       2 |
| 3   | 信息系统     | 1    |       4 |
| 4   | 操作系统     | 6    |       3 |
| 5   | 数据结构     | 7    |       3 |
| 6   | 数据处理     | NULL |       2 |
| 7   | PASCAL语言   | 6    |       4 |
+-----+--------------+------+---------+

select * from SC;
+-----------+-----+-------+
| Sno       | Cno | Grade |
+-----------+-----+-------+
| 201215121 | 1   |    92 |
| 201215121 | 2   |    85 |
| 201215121 | 3   |    88 |
| 201215122 | 2   |    90 |
| 201215122 | 3   |    80 |
+-----------+-----+-------+



# 修改
alter table 表名 add foreign key (字段名)references 表名(字段名)
alter table Course add foreign key  references 表名(字段名)
ALTER TABLE Course DROP FOREIGN KEY (fk_symbol);


# 101页,3.52 查询每门课的间接先修课。(自身连接)

select first.Cno, second.Cpno 
from Course as first, Course as second
where first.Cpno=second.Cno; 
# 结果
+-----+------+
| Cno | Cpno |
+-----+------+
| 1   | 7    |
| 3   | 5    |
| 4   | NULL |
| 5   | 6    |
| 7   | NULL |
+-----+------+
5 rows in set (0.01 sec)


# 多表查询(这个题目中自关联相当于使用两张表)当不加条件的时候,就是相当于 两个表当中的元组(各条记录) 做笛卡尔积
select *  
from Course as first, Course as second;


# (内连接) 就是取交集,我感觉和 上面的例子,多表查询没区别,书上也没写这个概念
select 字段 from 表1 inner join 表2 on 表1.字段1 = 表2.字段2;

# 还以上面的题为例子:
select first.Cno, second.Cpno from Course as first inner join Course as second on first.Cpno=second.Cno;
# 结果: 和上面是一样的
+-----+------+
| Cno | Cpno |
+-----+------+
| 1   | 7    |
| 3   | 5    |
| 4   | NULL |
| 5   | 6    |
| 7   | NULL |
+-----+------+
5 rows in set (0.00 sec)


# 外连接(还分为左连接,右链接)
# 外连接,没有外键约束的条件下,可能出现左右两边都出现空值
select Student.*, SC.* from Student join SC on Student.Son = SC.Sno;

# 左连接: 已左边为标准,右边补 null, 右链接相反(具体参考课本 54,55页的理论基础)
select Student.Sno, Sname, Ssex, Sage, Sdept, Cno, Grade 
from Student left outer join SC on (Student.Sno=SC.Sno);

# 结果:可以看到学生的选课情况,为null的,说明该学生没有选择该门课程
+-----------+--------+------+------+-------+------+-------+
| Sno       | Sname  | Ssex | Sage | Sdept | Cno  | Grade |
+-----------+--------+------+------+-------+------+-------+
| 201215121 | 李勇   | 男   |   20 | CS    | 1    |    92 |
| 201215121 | 李勇   | 男   |   20 | CS    | 2    |    85 |
| 201215121 | 李勇   | 男   |   20 | CS    | 3    |    88 |
| 201215122 | 刘晨   | 女   |   19 | CS    | 2    |    90 |
| 201215122 | 刘晨   | 女   |   19 | CS    | 3    |    80 |
| 201215123 | 王敏   | 女   |   18 | MA    | NULL |  NULL |
| 201215125 | 张立   | 男   |   19 | IS    | NULL |  NULL |
+-----------+--------+------+------+-------+------+-------+
7 rows in set (0.00 sec)


# 多表连接(自身连接相当于两个表,三个表以上通常叫做多表连接)
# (103页,3.54) 查询学生学号,姓名,选修课程名及成绩
select Student.Sno, Sname, Cname, Grade
from Student, SC, Course
where Student.Sno=SC.Sno and SC.Cno=Course.Cno;

# 结果: 三张表进行笛卡尔积运算,之后根据等值连接取 它的子集。
+-----------+--------+--------------+-------+
| Sno       | Sname  | Cname        | Grade |
+-----------+--------+--------------+-------+
| 201215122 | 刘晨   | 数学         |    90 |
| 201215122 | 刘晨   | 信息系统     |    80 |
| 201215121 | 李勇   | 数据库       |    92 |
| 201215121 | 李勇   | 数学         |    85 |
| 201215121 | 李勇   | 信息系统     |    88 |
+-----------+--------+--------------+-------+
5 rows in set (0.01 sec)


# 嵌套查询(103页): 一个select-from-where 语句为一个查询块。
# 将一个查询块嵌套进另一个查询块的where子句或者having短语中查询,称为嵌套查询 

# 查询选修了课程二的学生的姓名;
select Sname from Student  
where sno in (                
	select Sno from SC
	where Cno="2"
);
# 外层叫做父查询,内层叫做子查询,另外需要注意:子查询不能使用 order_by 子句, 
# order_by 只能对最终的查询结果排序。
# 当子查询是一个单值的时候,也可以使用 = 替换 in

# 结果  
+--------+
| Sname  |
+--------+
| 李勇   |
| 刘晨   |
+--------+
2 rows in set (0.02 sec)

# 另外根据经验, 嵌套查询的效率是很低的,一般不使用,还可以:

select * from Student, SC
where Student.sno = SC.Sno and  Cno="2"; 

# 结果,注意条件 Student.sno = SC.Sno and  Cno="2", 因为是笛卡尔积,全部结果集合中挑选数据
+-----------+--------+------+------+-------+-----------+-----+-------+
| sno       | Sname  | Ssex | Sage | Sdept | Sno       | Cno | Grade |
+-----------+--------+------+------+-------+-----------+-----+-------+
| 201215121 | 李勇   | 男   |   20 | CS    | 201215121 | 2   |    85 |
| 201215122 | 刘晨   | 女   |   19 | CS    | 201215122 | 2   |    90 |
+-----------+--------+------+------+-------+-----------+-----+-------+
2 rows in set (0.00 sec)

# 104页 有很好的例题,可以看看。 105页是一个三层嵌套查询,然后都可以用连接查询替换掉的。
# 不相关查询:子查询的查询条件不依赖于 父查询。
 
# 相关查询: 建议查看106页,好好研究一下,有执行过程解读。


# 子查询中的 谓词 : 具体看书107,108,109.
any  # 任何一个,也就是某一个值
all  # 所有值

< any  # 小于某个值即可

# 后面的内容不再介绍了,都是类似于离散数学的,谓词逻辑,全称量词,存在量词的理论基础上的。
# 书上很清晰的例子。






























# 修改数据表字段名
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;

alter table Student change son sno char(9);
数据库学生表,课程表,选课表 CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY, /* 列级完整性约束条件,Sno是主码*/ Sname CHAR(20) UNIQUE, /* Sname取唯一值*/ Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20) ); CREATE TABLE Course (Cno CHAR(4) PRIMARY KEY, Cname CHAR(40), Cpno CHAR(4), Ccredit SMALLINT, FORE 阅读详情

相关推荐

SQL Server---实验1、2---数据库及表、查询

SQL Server 实验课

yitong的博客 1100

MySQL设置/取消外键约束

(1)设置外键约束 alter table 表名 add foreign key (字段名)references 表名(字段名) 其中,两个字段名的类型与长度必须相同。如果设置不了,可以先删除记录再试。 (2)取消外键约束(在phpmyadmin表关系中设置) 选择restrict 约束名要为空 转载于:https://www.cnblogs.com/wy-blog/...

weixin_30835923的博客 1443

聚类模型-层次聚类

聚类模型 1、层次聚类 2、原型聚类-K-means 3、模型聚类-GMM 4、EM算法-LDA主题模型 5、密度聚类-DBSCAN 6、图聚类-谱聚类 一、层次聚类 一、聚类理论 ​ 一般来说,聚类是在训练样本的标签信息不知的情况下,学习样本内在的性质和规律,将有限的集合划分成ccc类。根据“方以类聚,物以群分”的思想,类内对象尽可能的相似,...

myazi 6502

mysql 创建学生表、课程表、学生选课表

学生-课程数据库中包含以下三个表关系的主码加粗表示,各个表中的数据实例:StudentCourseSCSno为Student表的主键,Cno为Course表的主键,SC表中外键Sno,Cno分别是Student表和Course表的主键

qq_52108058的博客 7万+

软件工程:数据字典

数据字典

永远怀着至诚之心拥抱世界 4273

spdk + fio测试nvme 设备的性能

fio的测试对象可以是块设备、文件等,在spdk的使用过程中会unbind默认的nvme driver,所以在系统中是看不到nvme块设备的,在spdk中可以通过fio_plugin的方式,将spdk的用户态driver部分的io功能打包成一个ioengine提供给fio使用,可以综合spdk的高性能和fio提供的复杂场景。更多DPDK相关学习资料有需要的可以自行报名学习,免费订阅,永久学习,或点击这里加。这个jobfile是spdk中提供的例子。领取,关注我持续更新哦!2.7 jobfile的例子。

lingshengxiyou的博客 1088

MySQL练习(学生表,课程表,选课表)超详解

MySQL练习

zhangbw's blog 3万+

从零开始做题:big_zip

内容为:You_know_the_bed_feels_warmer_Sleeping_here_alone_You_know_I_dream_in_color_And_do_the_things_I_want_You_think_you_got_the_best_of_me_Think_you_had_the_last_laugh_Bet_you_think_that_everything_good_is_gone。查看压缩包内容,发现有五字节长度的文件,用crc碰撞攻击破解明文。

weixin_44626085的博客 1241

SQL笔试:Student学生表,Course 课程表,Sc选课表

select Sc.课程编号 from Student,Sc where Student.姓名=’周星驰’ and Student.学号 = Sc.学号)tudent学生表(学号,姓名、性别、年龄、组织部门),Course 课程表(编号,课程名称),Sc选课表(学号,课程编号,成绩)Select 学号,count(课程编号) from Sc group by 学号 having count(课程编号)>=5)Select 学号,姓名 from Student where 学号 in (

持续更新个微协议 484

深度学习实战107-基于Qwen3+GraphRAG+Agent的智能文档管理系统:精准问答与决策支持

在当今信息爆炸的时代,企业面临海量文档的管理与利用挑战。传统文档管理系统虽然提供了存储和检索功能,但缺乏对文档内容的深度理解与分析能力,更难以实现基于知识的决策支持。基于多模态大模型Qwen3、GraphRAG技术与Agent框架构建的智能文档管理系统,能够突破传统限制,实现文档内容的精准解析、知识图谱的自动构建、复杂关系的推理分析以及决策建议的生成,为企业知识管理带来革命性变革。

微学AI的博客 864

YOLO26涨点改进 | 全网独家创新!注意力改进篇 | CVPR 2025 | 引入RALA秩增强线性注意力模块,含多种创新改进,助力YOLO26适合目标检测、图像分割、图像分类有效涨点

🔥本文给大家介绍使用RALA模块改进YOLO26可以显著提升其性能,尤其在复杂场景和小物体检测中。通过增强线性注意力机制的矩阵秩,RALA改善了模型对空间信息的建模能力,提升了特征的多样性和全局信息的融合,进而提高了检测精度。同时,RALA保持了线性复杂度,避免了Softmax注意力的高计算成本,使YOLO26在实时检测任务中既能保持高效计算,又能提高检测精度,尤其是在小物体和遮挡物体的检测中表现突出。🔥欢迎订阅我的专栏、带你学习使用最新-最前沿-独家YOLO26创新改进!

Ai缝合怪、助力小伙伴高效发论文 138

Java面试题总结之数据库与SQL语句

微信公众号:AlbertYang关注我更多精彩等你来发现!Java面试题总结之数据库与SQL语句1、有3 个表,表结构如下:Student 学生表(学号,姓名,性别,年龄...

AlbertYang的博客 2126

注册GitHub时出现Unable to verify your captcha response.Please visit https://docs.github.com/解决方案(持续更新)

本文主要介绍了注册GitHub时出现Unable to verify your captcha response. Please visit https://docs.github.com/articles/troubleshooting-connectivity-problems/#troubleshooting-the-captcha for troubleshooting information.解决方案,希望能对学习使用GitHub的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 8万+

数据库实验三 索引与视图

实验三  索引和视图   一、 实验目的 1. 掌握利用SSMS和T—SQL语句创建和删除索引的两种方法。 2. 掌握利用SSMS和T—SQL语句创建、查询、更新及删除视图的方法。 二、 实验要求 1. 能认真独立完成实验内容; 2. 实验前做好上机实验的准备,针对实验内容,认真复习与本次实验有关的知识,完成实验内容的预习准备工作; 3. 验后做好实验总结,根据实验情况完成实验报告

StMoritz940827的专栏 9489

Stanford Dogs 犬类识别实战:基于 YOLOv8 的 120 类目标检测与图形界面实现

本项目通过YOLOv8实现了Stanford Dogs数据集的目标检测功能,完整包含了数据准备、模型训练、检测推理、图形界面四大模块。初学者使用YOLOv8n(nano版)加速训练,熟悉流程后可切换到YOLOv8s/m。图像上传与检测可进一步增强,例如显示识别框、标注标签。可以添加模型选择、检测阈值调整等功能,提升实用性。通过网盘分享的文件:基于yolov8的狗类品种识别系统链接: https://pan.baidu.com/s/1UYV4h2WnK1RxWWKoPrS-RA?

FJN110的博客 84

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

学生选课数据库、数据表

–1. 创建一个名字为"Studentxuanke数据库"的数据库 CREATE DATABASE xuanke ON PRIMARY ( NAME = 'xuanke_data', FILENAME = 'E:\Professional flie\SQL file\database\xuanke\xuanke_data.mdf' , SIZE = 5120KB , MAXSIZE = 15360KB , FILEGROWTH = 20%) LOG ON ( NAME = 'xua

csdcainiao的博客 1822

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【无标题】链接数据库进行相关操作

学生(学号,姓名,专业,入学年份),课程(课程号,课程名,学分),选课(学号,课程号,成绩)。3)实验数据由学生自己生成,数据量要求如下:学生表中元组个数大于10,课程表中元组个数大于5,选课表中元组个数大于60,每位学生至少选修5门课程,每门课程至少被6人选修。(学号和课程号由用户在程序运行过程中指定,放在主变量中)1)任意给定一门课程号,统计其成绩分布,如:最高分,最低分,平均分,各分数段人数;3)如果学生表中数据有更新,如:有学生退学或插班,请自动更新选课表,并将这两个表中有变化的数据加以保存。

qq_62264236的博客 619

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

educoder 数据库原理与应用 实验六 约束与索引

实验六 约束与索引数据结构说明第1关:添加约束一第2关:添加约束二第3关:添加约束三第4关:创建索引 数据结构说明 表结构如下: 学生表:Student 字段名 类型 主码 备注 Sno char(10) Y 学号 Sname varchar(20) 姓名 Ssex char(2) 性别 Sage smallint 年龄 Sdept varchar(20) 所在系 课程表:Course 字段名 类型 主码 备注 Cno char(10) Y 课程号

xingcheng12345的博客 3233

sql删除计算机科学系所有,数据库原理复习

数据库复习资料题型:大题:1.SQL应用题(5分*7) 2.3.问答题(设计题)(15分*2)、(1~9页)小题:1.选择题(1分*10)2.填空题(1分*10)3.判断改错题(3分*5)(10~13页)大题本章主要讲SQL语句的运用,知识点较多,在考试中是最后一道35分的大题,另外还有至少5分的小题,大家应该足够重视!我将老师要求的知识点总共划分为11个模块。其中加入了一些第二章和第四章的知识!...

weixin_39538693的博客 334

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

学生选课数据库的创建; 学生表的创建; 课程表的创建; 选课表的创建; 表插入数据, 表修改数据, 表删除数据;求学生的选课门数和平均成绩,并把结果存入学生选课数据库中;将"数据库原理与应用"的学分修改为4;将"王华"同学选修的"数据库原理与应用"课程的成绩增加五分;将管理学院学生选课成绩置为空;删除选课成绩中低于40分的记录;删除所有选修"JAVA"的选课记录;删除学生"李萍"所有的选课记录;删除学生学号为"2100001"的学生记录

2301_77713282的博客 427

数据库相关知识

Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,其中Sno为主码。(3)为学生表Student、课程表Course、选课表SC三张表建立索引,其中,学生表Student按学号降序建立唯一索引,课程表Course按课程号降序建议唯一索引,选课表SC按学号降序和课程号升序建立唯一索引。Student(学生表):sno(学号),sname(姓名),sex(性别),sage(年龄),sclass(教学班级)。

qq_42802170的博客 314

sqlserver创建表实例

四个实验教你学会sqlserver 实验一:创建表 创建这四个表,并插入信息 学生(学号,姓名,年龄,性别,所在系) 课程(课程号,课程名,先行课,学分) 选课(学号,课程号,成绩) 系部(系号,系名称,系主任) create database Test; //创建数据库Test //建表的顺序不能该表Department->Cource->Student->SCource cr...

熊二吃屁的博客 5193

MySQL课本附表建立(2)

MySQL入门:数据插入与查看

2401_83507043的博客 544

数据库练习题2

查询班里年纪最大的学生信息; 查出年龄最大和最小的学生的所有信息 查出表中年龄大于平均年龄的信息 查出0305班所有男生信息 查询张三所在班级的名称 练习: 学生表:学号,姓名,性别,年龄,所在系 课程表:课程编号,课程名称,课程学分 选课表:学号,课程号,成绩 1:查询与刘晨在同一个系的学生信息 2:查询选修了课程名为‘信息系统’的学生学号和姓名 3:查询选修课程编号为1和2的学生学号和姓名 4:查询比刘晨年龄小的学生信息 5:查询其他系中比信息系中刘晨年龄小的学生姓名和年龄 6:查询每个学生的最高成绩

lyxnb_的博客 1246

实验(2) 交互式SQL(1): 利用SQL 语句创建数据库、表及表之间关系

表 1 学生表数据:表名为 Student,列名分别为(Sno, Sname, Ssex, Sbirthday, Sdep, Memo) 其。含义是(Sno:学号, Sname:姓名, Ssex:性别, Sbirthday:出生日期, Sdep:系, Memo:备注)2、用 SQL 语句创建 Test 中的 3 张表(见下面),同时指定主键、外键、约束等。2、用SQL语句创建StudentCourse中的3张表,同时指定主码、外码、约束等。3、在 3 张表中插入下面的示例数据(表中未填入值表示为空)

kercii的博客 2502

SQL语言的基本使用 ---学生选课系统数据库,实践操作

摘要:本实验通过学生-课程数据库案例,实践了SQL语言的基本操作。实验内容包括:1)创建并管理student_course_system数据库;2)构建Student、Course和SC三张基本表并建立外键约束;3)插入测试数据;4)执行数据库查看/创建/删除、表结构修改、数据查询/插入/修改等操作;5)实现视图的创建、查询和删除。实验涵盖了SQL语言中数据库、基本表、数据、视图和索引等核心操作,通过命令行方式完成MySQL环境下的完整数据库操作流程,验证了SQL语句的正确性和功能性。

2301_81476509的博客 351
上一篇: 阿里云ESC实例,更改 sshl连接的端口号
下一篇: 修改 linux 系统修改root 用户密码
我是py呀
博客等级 码龄8年 205粉丝 130原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值