mysql的外键知识详解编程语言
2、外键也可以用来实现一对多
我们先举一个这样的例子,让大家对外键有一个基本的认识
当前我们有一个需求就是,需要创建一张表,这张表要包括“姓名”,“年龄”,“工作地点”,而对于我们公司的员工,工作的地点就是那么几个,所以对于工作地点这一列,如果在一张表中实现,那么就会有很多重复的数据,这里就会有2个弊端
a、重复数据,会占用很大的硬盘空间
b、如果我们要更改某个地点的名称,那么我们就需要对所有在这个地点工作的信息都要更改
那么我们该如何解决呢?这里我们就可以用到外键的知识,我们可以创建两张表,第二张表专门用来存放工作地点的信息,效果如下
如果可以形成这样的对应关系,那么上面的两个问题就可以迎刃而解了
我们在mysql中就可以使用外键来解决这个问题
我们今天主要来学习一下如何对两张表格设置外键
方法1、我们可以先创建表,然后在配置外键信息
a、先创建两张表
b、我们为userinfo表和workaddress表分别插入数据
c、第三步,我们就要配置外键关系了,此时我们要约束userinfo表中的workaddres列中的内容必须是workaddress表中的workid中的内容
mysql alter table userinfo add constraint fk_userinfo_workaddress foreign key u
serinfo(workaddress) references workaddress(workid);
d、我们测试我们的外键是否生效
从这里我们可以看到,我们如果插入一个workaddress为4的是可以成功的,因为workaddress中有workid为4的值,但是我们插入workaddress为5的数据就会失败,因为我们在workaddress表中没有值为5的数据,所以证明我们的外键是生效的
e、我们最后来说明一下添加外键的命令
红色框中的命令是命令的格式,必须要这么写
绿色框中的命令就需要我们根据实际情况来写
第一个绿色的框:外键的名称,这个可以任意取
第二个绿色的框:约束的表名称(要约束的列的名称),比如我们的userinfo表的workaddress列
第三个绿色的框:被约束的表的名称(被约束的列的名称),比如我们的workaddres表的workid列
方法2:我们也可以在创建的表的时候就配置外键关系,这里我们就把命令展示一下,就不用实例演示了,如果我们能看到方法1,那么方法2其实是很简单的。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/20847.html
cmysql相关文章
- 关于mysql查询数据库时间和系统时间差详解编程语言
- Java数据类型和MySql数据类型对应表详解编程语言
- MySQL如何快速删除所有表(mysql如何删除所有表)
- 解决MySQL空字段的方案(mysql空字段)
- 洞悉MySQL视图: 学会正确使用它们(mysql视图的使用)
- MySQL添加表的主键:快速,简单有效(mysql给表增加主键)
- MySQL事务:维护数据的原子性和完整性(mysql的事务是什么)
- MySQL查询字段属性详解(mysql查询字段属性)
- MySQL 数据库表锁和行锁详解(mysql表锁和行锁)
- 如何更改 MySQL 登陆密码:详解步骤(mysql登陆密码)
- 重新命名MySQL数据库文件的指南(mysql数据库文件名)
- MySQL中实体的概念及其作用(mysql中什么是实体)
- MySQL中嵌套IF函数使用详解(mysql中if函数嵌套)
- MySQL中e参数的用法详解(mysql中-e用法)
- Axure与MySQL专业解决方案(axure和mysql)
- MySQL创建表示例快速掌握MYSQL基础操作(mysql中创建表的例子)
- 高效MySQL实践实现一次性写入数据,提升数据处理效率(mysql一次写入数据)
- MySQL 数据库配置文件详解mysqldcncf(mysql_dc.ncf)
- MySQL文件目录结构详解(mysql下面的文件目录)
- MySQL安装指南源码安装步骤详解(mysql下源码安装)
- MySQL上传服务器时出现乱码问题原因和解决方法(mysql上传服务器乱码)
- MySQL详解不等于语句用法及示例(mysql 不等于语句)
- MySQL中的不等于运算符使用方法详解(mysql 不等于表达)