mysql,用sql语句,创建门生-课程数据库基本表

打印 上一主题 下一主题

主题 725|帖子 725|积分 2175

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

门生表学号姓名年岁性别院系
StudentSnoSnameSageSsexSdept
课程表课程号课程名先行课学分
CourseCnoCnameCpnoCcredit
选课表学号课程号成绩
SCSnoCnoGrade
sql语句 创建表

  1. -- 删除表
  2. DROP TABLE IF EXISTS Student;
  3. -- 创建表
  4. CREATE TABLE Student(
  5. Sno CHAR(9) PRIMARY KEY,-- 学号 主键
  6. Sname VARCHAR(20) NOT NULL,-- 姓名 非空且唯一
  7. Sage INT NOT NULL,-- 年龄
  8. Ssex VARCHAR(5) NOT NULL,-- 性别
  9. Sdept VARCHAR(10) NOT NULL -- 所在系
  10. )charset=utf8;
复制代码
  1. -- 删除表
  2. DROP TABLE IF EXISTS Course;
  3. -- 创建表
  4. CREATE TABLE Course(
  5. Cno CHAR(5) PRIMARY KEY,-- 课程号 主键
  6. Cname VARCHAR(20) NOT NULL ,-- 课程名 非空
  7. Cpno VARCHAR(20)  NOT NULL,-- 先行课
  8. Ccredit Double(5,2) NOT NULL-- 学分
  9. )charset=utf8;
复制代码
  1. -- 删除表
  2. DROP TABLE IF EXISTS SC;
  3. -- 创建表
  4. CREATE TABLE SC(
  5. Sno CHAR(9),-- 学号 主键
  6. Cno CHAR(5),-- 课程号 主键
  7. Grade INT NOT NULL, -- 成绩
  8. foreign key(Sno) references Student(Sno),
  9. foreign key(Cno) references Course(Cno)
  10. )charset=utf8;
复制代码
注意创建表的时间要注意它的字段名,范例,长度,约束条件,取值范围要符合,大小写符号要精确,中文逗号,分号和英文的要注意区分,sql语句有时运行不起来,可能就在某个标点符号写漏大概写错
这里Sno 和 Cno 分别是门生表和课程表的主键,但同时又是SC的外键,这里要写外键约束
插入数据

  1. INSERT INTO Student
  2. (Sno,Sname,Sage,Ssex,Sdept) VALUES
  3. ('20211127','殷郊',22,'男','数学系'),
  4. ('20211128','姬发',20,'男','农业系'),
  5. ('20211129','苏妲己',18,'女','外语系'),
  6. ('20211130','崇应彪',23,'男','体育系')
复制代码
  1. INSERT INTO Course
  2. (Cno,Cname,Cpno,Ccredit) VALUES
  3. ('1001','数据库原理及应用','数据结构',2),
  4. ('2002','LINUX操作系统与程序设计','操作系统',4),
  5. ('3003','离散数学','高等数学',2),
  6. ('4004','Java程序设计语言','c语言和c++语言',2),
  7. ('5005','网络安全','计算机网络',4)
复制代码
  1. INSERT INTO SC
  2. (Sno,cno,Grade) VALUES
  3. ('20211127','1001',98),
  4. ('20211127','2002',96),
  5. ('20211127','3003',95),
  6. ('20211127','4004',90),
  7. ('20211127','5005',93),
  8. ('20211128','1001',98),
  9. ('20211128','2002',96),
  10. ('20211128','3003',95),
  11. ('20211128','4004',90),
  12. ('20211128','5005',93),
  13. ('20211129','1001',98),
  14. ('20211129','2002',96),
  15. ('20211129','3003',95),
  16. ('20211129','4004',90),
  17. ('20211129','5005',93),
  18. ('20211130','1001',98),
  19. ('20211130','2002',96),
  20. ('20211130','3003',95),
  21. ('20211130','4004',90),
  22. ('20211130','5005',93)
复制代码
查询数据表

  1. -- 查询表所有
  2. select * from Student;
  3. select * from Course;
  4. select * from SC;
复制代码
结果


 

 

 还可以多表查询

  1. -- 多表查询,
  2. -- 查询表 Student和SC
  3. SELECT SC.Sno AS 学生学号 ,Student.Sname AS 学生姓名,Student.Ssex AS 学生性别 Student.Sdept AS 学生院系,SC.Cno AS 选择课程号,SC.Grade AS 课程成绩
  4. FROM SC,Student
  5. WHERE SC.Sno=Student.Sno;
  6. -- 查询表 course 和 SC
  7. SELECT SC.Sno AS 学生学号 ,SC.Cno AS 选择课程号,Course.Cname AS 学生课程名, Course.cpno AS 学生先行课, Course.Ccredit AS 课程学分, SC.Grade AS 课程成绩
  8. FROM SC,Course
  9. WHERE SC.Cno=Course.Cno;
  10. -- 查询表 course 和 SC 和 Student
  11. SELECT SC.Sno AS 学生学号 ,Student.Sname AS 学生姓名,Student.Ssex AS 学生性别, Student.Sdept AS 学生院系,
  12. SC.Cno AS 选择课程号,Course.Cname AS 学生课程名, Course.cpno AS 学生先行课, Course.Ccredit AS 课程学分,SC.Grade AS 课程成绩
  13. FROM SC,Student,Course
  14. WHERE SC.Sno=Student.Sno AND SC.Cno=Course.Cno AND SC.Sno= 20211127;
复制代码
这里,感兴趣的自己去试一试吧,
修改数据表(单个示例)

  1. -- 修改语句 单个示例
  2. update Student set Sname='姜子牙' where Sno='20211127';
  3. -- 删除语句,单个示例
  4. -- 这里删除不了是因为外键约束的问题
  5. delete from Student where Sno='20211127';
复制代码
最后提醒

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

 它可能报这种错误,原因是想要删除的数据和表与其他的数据或表存在主外键关系,MYSQL规定
为了维护表结构的稳定,克制执行该操作,即外键约束失败,办理方法,将带有外键约束的表删掉,,然后重新执行其他数据表即可,亦大概解除外键关联,然后执行增删改查操作,然后重新创建外键关联

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万万哇

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表