MYSQL_外键
-
需求
- 创建表student,代表学生信息表,表结构如下
表名student 字段名 数据类型 其他属性 字段说明 studentID 整型 不允许为空,主键,自动编号 学生编号 studentName 字符 不允许为空 学生姓名 studentSex 字符 不允许为空,默认为男 学生性别 studentCardID 字符 不允许为空,不允许重复 学生身份证号 studentBirthday 日期时间类型 不允许为空 学生生日 - 添加10名学员信息
- 创建表subject,代表课程信息表,表结构如下
表名subject 字段名 数据类型 其他属性 字段说明 subjectID 整型 不允许为空,主键 课程编号 subjectName 字符 不允许为空 学生姓名 teacher 字符 不允许为空 老师姓名 courseCount 整型 不允许为空,默认为0 课时数 - 向subject表中添加7门课程信息
-
创建表grade,代表学生成绩表,表结构如下
表名grade 字段名 数据类型 其他属性 字段说明 gradeID 整型 主键,自动编号 成绩编号 studentID 整型 不允许为空,外键 学生编号 subjectID 字符 不允许为空,外键 课程 score 小数 不允许为空,默认为0 成绩 -
向grade表中添加20条成绩
-
代码
--新建数据库 create database dbtest; --新建学生表 create table student( studentID INT NOT NULL PRIMARY KEY AUTO_INCREMENT, studentName varchar(20) not null, studentSex varchar(2) not null default '男', studentCardID varchar(20) not null unique, studentBirthday date not null ) --新建subject表 create table subject( subjectID INT NOT NULL PRIMARY KEY, subjectName varchar(20) not null, teacher varchar(20) not null, courseCount int not null default 0 ) --新建grade表 create table grade( gradeID INT PRIMARY KEY AUTO_INCREMENT, studentID INT NOT NULL , CONSTRAINT fk_grade_student foreign key(studentID)REFERENCES student(studentID), subjectID INT NOT NULL, CONSTRAINT fk_grade_subject foreign key(subjectID)REFERENCES subject(subjectID), score double not null default 0 ) -- 插入数据略 -
效果
student
subject
grade
grade外键
-
注意事项
- 外键和主键的公共字段属性必须相同,否则报错
\