外键一对一,一对多,多对多表关系

本文详细介绍了数据库中表与表之间的关系,包括一对一、一对多和多对多关系,以及如何通过外键来实现这些关系。讨论了外键的作用和创建,以及在数据修改时的级联操作。同时,提到了多对多关系的实现方法和一对一关系的建表策略。文章还涵盖了数据库表的修改和查询操作。
摘要由CSDN通过智能技术生成

表与表之间建立关系:

把所有数据都存放于一张表的弊端
1.组织结构不清晰
2.浪费硬盘空间
3.扩展性极差

查找表关系一定要换位思考,就是要站在两张表角度全部考虑完毕才能下结论,

否则无法的出正确答案。单向的多对一,就是一对多的外键关系。

一对多:

  简单举个例子:比如说一个公司里面有很多部门,而且有很多员工分别在不同的部门里,

我们可以先站在员工的角度看是否能多个员工同属于一个部门:也就是说一个部门是否有多个员工?

当然是可以的。这里我们确定了员工是单向多对一个部门的。

  再站在部门的角度来看能否可以有多个部门对应一个员工?显然是不可以的。

  总结一下就是员工和部门之间关系如果仅仅是单向的多对一那么他们的表关系就是一对多。

什么是外键?

  外键就是让表与表之间有硬性层面上的关系,而不是你说它们有关系它们就有关系了。

如何让两种表有代码层面上真正的关联:

  就得使用外键,外键语法:foreign key

一对多建立表关系:

  外键约束:

    在创建表的时候 必须先创建被关联表。
    插入数据的时候 也必须先插入被关联表的数据。

  建表:

部门表:
create table dep(
            id int primary key auto_increment,
            dep_name varchar(32),
            dep_desc varchar(128)
        );


建员工表:
create table emp(
            id int primary key auto_increment,  # id相当于主键,并且自动递增
            emp_name varchar(64),
            emp_gender enum('male','female','others') default 'male', #默认值
            dep_id int,
            foreign key(dep_id) references dep(id) # 约束条件    
        );

插入数据:
插入数据
        insert into dep(dep_name,dep_desc) values('外交部','搞外交'),
        ('教学部',
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值