MYSQL_外键

162 阅读2分钟

MYSQL_外键

  1. 需求

    • 创建表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条成绩

  2. 代码

     --新建数据库
     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
         
     ​
     )
     ​
     -- 插入数据略
     ​
    
  3. 效果

student

student.png

subject

subject.png

grade

grade.png

grade外键

grade外链.png

  1. 注意事项

    • 外键和主键的公共字段属性必须相同,否则报错

\