首先要准备三个表Student门生表、Course课程表、SC选课表
门生表 | 学号 | 姓名 | 年岁 | 性别 | 院系 | Student | Sno | Sname | Sage | Ssex | Sdept | 课程表 | 课程号 | 课程名 | 先行课 | 学分 | Course | Cno | Cname | Cpno | Ccredit | 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规定
为了维护表结构的稳定,克制执行该操作,即外键约束失败,办理方法,将带有外键约束的表删掉,,然后重新执行其他数据表即可,亦大概解除外键关联,然后执行增删改查操作,然后重新创建外键关联
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |