mysql添加外键的4种方式
今天开始复习,在过后的几天里开始在博客上记录一下平时疏忽的知识点,温故而知新 屁话不多--直接上货
创建主表: 班级
CREATE TABLE class(cid INT PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(15) NOT NULL)
INSERT INTO class VALUES(NULL,'六年级一班')
INSERT INTO class VALUES(NULL,'六年级二班')
第一种://1.在属性值后面直接添加(有点小问题)
CREATE TABLE student(sid INT AUTO_INCREMENT,
sname VARCHAR(10) NOT NULL,
s_cid INT REFERENCES class(cid),
PRIMARY KEY(sid)
);
//添加数据进行测试
INSERT INTO student VALUES(NULL,'王大锤',2)
INSERT INTO student VALUES(NULL,'胡汉三',3) //约束不生效,原因待查
INSERT INTO student VALUES(NULL,'卧槽',4) //不敢相信,在测试一次
这种方式,测试不知道为什么,居然添加进去了 WTF? 在网上百度无果,自学群无回复 暂时先搁置在这儿
第二种://2.在sql语句末端添加
CREATE TABLE student(
sid INT AUTO_INCREMENT,
sname VARCHAR(10),
s_cid INT,
PRIMARY KEY(sid),
FOREIGN KEY (s_cid) REFERENCES class(cid)
);
//插入数据测试一下
INSERT INTO student VALUES(NULL,'王大锤',2)
INSERT INTO student VALUES(NULL,'胡汉三',3) //约束生效 插入失败
外键约束生效
第三种://3.fk的使用
这种是值下课自己手动收集总结的,理解还不是很到位,一番测试还是弄懂了一点,表中的 fk_子表_父表
CREATE TABLE student(sid INT AUTO_INCREMENT,
sname VARCHAR(10) NOT NULL,
s_cid INT ,
PRIMARY KEY(sid),
CONSTRAINT fk_student_class FOREIGN KEY(s_cid) REFERENCES class(cid)
);
//测试一波 OK
INSERT INTO student VALUES(NULL,'王大锤',2)
INSERT INTO student VALUES(NULL,'胡汉三',3) //约束生效 插入失败
第四种://4.在建表后添加外键 (教学类容)
CREATE TABLE student(sid INT AUTO_INCREMENT,
sname VARCHAR(10) NOT NULL,
s_cid INT ,
PRIMARY KEY(sid)
);
//添加外键约束: ALTER TABLE student ADD FOREIGN KEY (s_cid) REFERENCES class(cid);
//测试
INSERT INTO student VALUES(NULL,'王大锤',2)
INSERT INTO student VALUES(NULL,'胡汉三',3) //约束生效 插入失败
总结到此结束,有疏忽之处,望大家指出修正
- 01 深入理解JVM的内存区域
- 设置Windows默认中文、Putty掉线解决、SublimeText3常用设置
- 通过oracle类比MySQL中的字节字符问题(r4笔记第44天)
- Spring MVC的配置和使用
- Oracle总结【SQL细节、多表查询、分组查询、分页】
- 关于内存异常的一个猜想(r4笔记第43天)
- WebSocket就是这么简单
- 09(01)总结final,多态,抽象类,接口
- 01 Mybatis 的配置和使用
- Oracle总结【视图、索引、事务、用户权限、批量操作】
- 02 使用Mybatis的逆向工程自动生成代码
- 关于ORA-12801,ORA-27090的简单分析(r4笔记第58天)
- Oracle总结【PLSQL学习】
- 01 Maven构建的项目中,把.xml等配置文件添加到编译目录
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- 后浪,谈谈你对jvm性能调优的理解
- Homer预测共表达基因的motif
- redis实战第一篇 安装和使用
- lombok在java项目中的使用
- MySQL 的全文索引.
- Swift Reusable开源库使用
- 面试官:聊聊你读过的开源代码中用到的设计模式
- Swift Moya的简单使用
- 信用风险建模 in Python 系列 5 - 阈值模型概述
- 理解 Kubernetes 的亲和性调度
- CppSQLite - C++ Wrapper for SQLite
- 在.NET Core中使用MongoDB明细教程(3):Skip, Sort, Limit, Projections
- wsl 2 unbuntu 部署 asp.net core 使用 nginx 做反向代理,调试文件上传失败
- .NET Core + K8S + Apollo 玩转配置中心
- 休眠与唤醒机制