数据库级别的外键

数据库级别的外键

-- 创建grade表
CREATE TABLE IF NOT EXISTS grade(
`gradeid` INT(10) NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '年级id', 
`name` VARCHAR(50) NOT NULL COMMENT '年级名称'
)ENGINE=INNODB DEFAULT CHARSET=utf8;

-- 创建student表直接添加外键
CREATE TABLE IF NOT EXISTS student(
`id` INT(4) NOT NULL COMMENT '序号',
`name` VARCHAR(30) DEFAULT '匿名' COMMENT '姓名',
`age` INT(3) DEFAULT 0 COMMENT '年龄',
`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '年龄',
`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
`adress` VARCHAR(50) DEFAULT NULL COMMENT '家庭住址',
`email` VARCHAR(2) DEFAULT NULL COMMENT '电子邮箱',
`gradeid` INT(10) NOT NULL COMMENT '年级id',
PRIMARY KEY(`id`),
KEY `FK_gradeid` (`gradeid`),
CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade` (`gradeid`)

) ENGINE=INNODB DEFAULT CHARSET=utf8;

-- 创建表的时候没有外键关系
-- 后续再添加
CREATE TABLE IF NOT EXISTS student1(
`id` INT(4) NOT NULL COMMENT '序号',
`name` VARCHAR(30) DEFAULT '匿名' COMMENT '姓名',
`age` INT(3) DEFAULT 0 COMMENT '年龄',
`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '年龄',
`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
`adress` VARCHAR(50) DEFAULT NULL COMMENT '家庭住址',
`email` VARCHAR(2) DEFAULT NULL COMMENT '电子邮箱',
`gradeid` INT(10) NOT NULL COMMENT '年级id',
PRIMARY KEY(`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

ALTER TABLE `student1` 
ADD CONSTRAINT `FK_gradeid1` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`);

以上的操作都是物理外键,数据库级别的外键,不建议使用!(避免数据库表太多造成困扰)

最佳实践

  • 数据库就是单纯的表,只用来存数据,只有行(数据)和列(字段)
  • 我们想使用多张表的数据,想使用外键,用程序去实现
posted @ 2021-12-29 21:40  Oh,mydream!  阅读(34)  评论(0编辑  收藏  举报