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
本文章是本人学习笔记,不进行任何商用所以不支持转载请理解!也请别拿去商用!
如果觉得对你有帮助那么欢迎你随时来回顾!
只为记录本人学习历程。
毕
上一篇: 如何定义项目列表css
下一篇: mysql与django中的外键
推荐阅读
-
Mysql数据库中数据表的优化、外键与三范式用法实例分析
-
09-Mysql数据库----外键的变种
-
MySQL数据库之-foreign key 外键(一对多、多对多、一对一)、修改表、复制表
-
Oracle数据库关于约束的创建与管理(外键约束)学习讲解
-
数据库MySql python读取插入数据,insert对那些类型加单引号,表单自己参考自己(外键),空值和NULL
-
Mysql数据库中数据表的优化、外键与三范式用法实例分析
-
Mysql关于数据库是否应该使用外键约束详解说明
-
MySQL外键:数据库新手入门之MySQL中如何定义外键_MySQL
-
MySQL数据库中建立外键的方法
-
mysql 主键 在别的表里面当外键 不允许重复