mysql如何用sql语句建立学生课程数据库基本表

 更新时间:2023年12月04日 09:15:50   作者:冰鲜柠檬汁  
这篇文章主要给大家介绍了关于mysql如何用sql语句建立学生课程数据库基本表的相关资料,学生表是一个常见的数据表,用于存储学生的个人信息和成绩等相关数据,文中通过代码示例介绍的非常详细,需要的朋友可以参考下

首先要准备三个表Student学生表、Course课程表、SC选课表

学生表学号姓名年龄性别院系
StudentSnoSnameSageSsexSdept
课程表课程号课程名先行课学分
CourseCnoCnameCpnoCcredit
选课表学号课程号成绩
SCSnoCnoGrade

sql语句 创建表

-- 删除表
DROP TABLE IF EXISTS Student;
-- 创建表
CREATE TABLE Student(
Sno CHAR(9) PRIMARY KEY,-- 学号 主键
Sname VARCHAR(20) NOT NULL,-- 姓名 非空且唯一
Sage INT NOT NULL,-- 年龄
Ssex VARCHAR(5) NOT NULL,-- 性别
Sdept VARCHAR(10) NOT NULL -- 所在系
)charset=utf8;
-- 删除表
DROP TABLE IF EXISTS Course;
-- 创建表
CREATE TABLE Course(
Cno CHAR(5) PRIMARY KEY,-- 课程号 主键
Cname VARCHAR(20) NOT NULL ,-- 课程名 非空
Cpno VARCHAR(20)  NOT NULL,-- 先行课
Ccredit Double(5,2) NOT NULL-- 学分
)charset=utf8;
-- 删除表
DROP TABLE IF EXISTS SC;
-- 创建表
CREATE TABLE SC(
Sno CHAR(9),-- 学号 主键
Cno CHAR(5),-- 课程号 主键
Grade INT NOT NULL, -- 成绩
foreign key(Sno) references Student(Sno),
foreign key(Cno) references Course(Cno)
)charset=utf8;

注意创建表的时候要注意它的字段名,类型,长度,约束条件,取值范围要合适,大小写符号要正确,中文逗号,分号和英文的要注意区分,sql语句有时运行不起来,可能就在某个标点符号写漏或者写错

这里Sno 和 Cno 分别是学生表和课程表的主键,但同时又是SC的外键,这里要写外键约束

插入数据

INSERT INTO Student
(Sno,Sname,Sage,Ssex,Sdept) VALUES
('20211127','殷郊',22,'男','数学系'),
('20211128','姬发',20,'男','农业系'),
('20211129','苏妲己',18,'女','外语系'),
('20211130','崇应彪',23,'男','体育系')
INSERT INTO Course
(Cno,Cname,Cpno,Ccredit) VALUES
('1001','数据库原理及应用','数据结构',2),
('2002','LINUX操作系统与程序设计','操作系统',4),
('3003','离散数学','高等数学',2),
('4004','Java程序设计语言','c语言和c++语言',2),
('5005','网络安全','计算机网络',4)
INSERT INTO SC
(Sno,cno,Grade) VALUES
('20211127','1001',98),
('20211127','2002',96),
('20211127','3003',95),
('20211127','4004',90),
('20211127','5005',93),
('20211128','1001',98),
('20211128','2002',96),
('20211128','3003',95),
('20211128','4004',90),
('20211128','5005',93),
('20211129','1001',98),
('20211129','2002',96),
('20211129','3003',95),
('20211129','4004',90),
('20211129','5005',93),
('20211130','1001',98),
('20211130','2002',96),
('20211130','3003',95),
('20211130','4004',90),
('20211130','5005',93)

查询数据表

-- 查询表所有
select * from Student;
select * from Course;
select * from SC;

结果

还可以多表查询

-- 多表查询,
-- 查询表 Student和SC
SELECT SC.Sno AS 学生学号 ,Student.Sname AS 学生姓名,Student.Ssex AS 学生性别 Student.Sdept AS 学生院系,SC.Cno AS 选择课程号,SC.Grade AS 课程成绩
FROM SC,Student
WHERE SC.Sno=Student.Sno;
-- 查询表 course 和 SC
SELECT SC.Sno AS 学生学号 ,SC.Cno AS 选择课程号,Course.Cname AS 学生课程名, Course.cpno AS 学生先行课, Course.Ccredit AS 课程学分, SC.Grade AS 课程成绩
FROM SC,Course
WHERE SC.Cno=Course.Cno;
-- 查询表 course 和 SC 和 Student
SELECT SC.Sno AS 学生学号 ,Student.Sname AS 学生姓名,Student.Ssex AS 学生性别, Student.Sdept AS 学生院系,
SC.Cno AS 选择课程号,Course.Cname AS 学生课程名, Course.cpno AS 学生先行课, Course.Ccredit AS 课程学分,SC.Grade AS 课程成绩
FROM SC,Student,Course
WHERE SC.Sno=Student.Sno AND SC.Cno=Course.Cno AND SC.Sno= 20211127;

这里,感兴趣的自己去试一试吧,

修改数据表(单个示例)

​
-- 修改语句 单个示例
update Student set Sname='姜子牙' where Sno='20211127';
-- 删除语句,单个示例
-- 这里删除不了是因为外键约束的问题
delete from Student where Sno='20211127';​

最后提醒

如果最后操作运行时出错,可能是SC表设置了外键约束的问题,

 它可能报这种错误,原因是想要删除的数据和表与其他的数据或表存在主外键关系,MYSQL规定

为了维护表结构的稳定,禁止执行该操作,即外键约束失败,解决方法,将带有外键约束的表删掉,,然后重新执行其他数据表即可,亦或者解除外键关联,然后执行增删改查操作,然后重新建立外键关联

总结

到此这篇关于mysql如何用sql语句建立学生课程数据库基本表的文章就介绍到这了,更多相关sql语句建立学生课程基本表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL是怎么保证主备一致的

    MySQL是怎么保证主备一致的

    大家知道 binlog 可以用来归档,也可以用来做主备同步,但它的内容是什么样的呢?为什么备库执行了 binlog 就可以跟主库保持一致了呢,本文就详细的介绍一下
    2021-09-09
  • MySQL配置文件my.ini的使用解读

    MySQL配置文件my.ini的使用解读

    这篇文章主要介绍了MySQL配置文件my.ini的使用解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • MySQL异常恢复之无主键情况下innodb数据恢复的方法

    MySQL异常恢复之无主键情况下innodb数据恢复的方法

    这篇文章主要介绍了MySQL异常恢复之无主键情况下innodb数据恢复的方法,结合实例形式分析了针对innodb引擎无主键的情况下恢复数据的步骤与相关技巧,需要的朋友可以参考下
    2016-04-04
  • mysql条件查询and or使用方法及优先级实例分析

    mysql条件查询and or使用方法及优先级实例分析

    这篇文章主要介绍了mysql条件查询and or使用方法及优先级,结合实例形式分析了mysql条件查询and or基本功能、用法及优先级相关操作技巧,需要的朋友可以参考下
    2020-04-04
  • mysql use命令选择数据库详解

    mysql use命令选择数据库详解

    这篇文章主要介绍了mysql 使用use命令选择数据库的相关资料,需要的朋友可以参考下
    2016-09-09
  • 监听mysql表内容变化 mysql开启binlog

    监听mysql表内容变化 mysql开启binlog

    这篇文章主要给大家介绍了关于监听mysql表内容变化,mysql开启binlog的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用mysql具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • MySQL Index Condition Pushdown(ICP)性能优化方法实例

    MySQL Index Condition Pushdown(ICP)性能优化方法实例

    这篇文章主要介绍了MySQL Index Condition Pushdown(ICP)性能优化方法实例,本文讲解了概念介绍、原理、实践案例、案例分析、ICP的使用限制等内容,需要的朋友可以参考下
    2015-05-05
  • MySQL分表和分区分表的区别小结

    MySQL分表和分区分表的区别小结

    MySQL分表和分区分表是两种常见的数据分割方案,本文主要介绍了MySQL分表和分区分表的区别小结,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • MySQL如何设置动态创建时间(create_time)和修改时间(update_time)

    MySQL如何设置动态创建时间(create_time)和修改时间(update_time)

    本文主要介绍了MySQL如何设置动态创建时间(create_time)和修改时间(update_time),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • MySQL临时表的简单用法介绍

    MySQL临时表的简单用法介绍

    这篇文章给大家简单介绍了MySQL临时表的简单用法,对此有需要的朋友可以跟着学习操作下。
    2018-06-06

最新评论