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

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

学生表 学号 姓名 年龄 性别 院系
Student Sno Sname Sage Ssex Sdept
课程表 课程号 课程名 先行课 学分
Course Cno Cname Cpno Ccredit
选课表 学号 课程号 成绩
SC Sno Cno Grade

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规定

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

猜你喜欢

转载自blog.csdn.net/yangkeOK/article/details/132509470