欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQL学习:数据库级别的外键

程序员文章站 2022-03-03 19:21:25
...

1. MySQL的数据管理

1.1 外键(了解):

  • 物理外键:数据库级别的外键,不建议使用。
  • 逻辑外键:在应用层面实现(程序实现调用多张不同的表),数据库单纯的作为一张表,只有行(数据)和列(字段),无物理外键。

方式一:建表同时建外键 (物理)

-- 物理设置外键的过程:

CREATE TABLE IF NOT EXISTS `grade`(
`grade_id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '年级id',
`grade_name` VARCHAR(10) NOT NULL DEFAULT '无' COMMENT '年级名称',

PRIMARY KEY (`grade_id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;

CREATE TABLE `student` (
  `id` INT NOT NULL AUTO_INCREMENT COMMENT '学号',
  `name` VARCHAR(20) NOT NULL DEFAULT '匿名' COMMENT '昵称',
  `password` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
  `sex` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',
  `birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
  `address` VARCHAR(100) DEFAULT NULL COMMENT '家庭地址',
  `email` VARCHAR(20) DEFAULT NULL COMMENT '邮箱',
  `grade_id` INT(4) NOT NULL COMMENT '学生所在年级',
  
  PRIMARY KEY (`id`),

  -- 物理设置外键的过程
  KEY `FK_grade_id` (`grade_id`), -- 定义外键
  -- 给外键添加约束(引用)
  CONSTRAINT `FK_grade_id` FOREIGN KEY (`grade_id`) REFERENCES `grade`(`grade_id`)
  
) ENGINE=INNODB DEFAULT CHARSET=utf8;

方式二:创建表的时候没有任何约束,在创建完表后创建外键 , 物理设置外键的过程(物理)

CREATE TABLE IF NOT EXISTS `grade`(
`grade_id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '年级id',
`grade_name` VARCHAR(10) NOT NULL DEFAULT '无' COMMENT '年级名称',

PRIMARY KEY (`grade_id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;

CREATE TABLE `student` (
  `id` INT NOT NULL AUTO_INCREMENT COMMENT '学号',
  `name` VARCHAR(20) NOT NULL DEFAULT '匿名' COMMENT '昵称',
  `password` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
  `sex` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',
  `birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
  `address` VARCHAR(100) DEFAULT NULL COMMENT '家庭地址',
  `email` VARCHAR(20) DEFAULT NULL COMMENT '邮箱',
  `grade_id` INT(4) NOT NULL COMMENT '学生所在年级',
  
  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

-- 在表外实时添加外键(方便,推荐)
-- 物理设置外键的过程
/*
ALTER TABLE `表名`
ADD CONSTRAINT `约束名` FOREIGN KEY(`作为外键的列`) REFERENCES `主表`(`约束列(字段)`) 
*/

ALTER TABLE `student`
ADD CONSTRAINT `FK_grade_id` FOREIGN KEY(`grade_id`) REFERENCES `grade`(`grade_id`);
2021.1.12
本文章是本人学习笔记,不进行任何商用所以不支持转载请理解!也请别拿去商用!
如果觉得对你有帮助那么欢迎你随时来回顾!
只为记录本人学习历程。
毕