Mysql-约束

概念:

约束是作用于表中字段上的规则,用于限制存储在表中的数据。

目的:

保存数据库中数据的正确,有效性和完整性。

分类:

注意事项:约束是作用在数据表中的字段上的,可以在创建表或修改表的时候添加约束。

案例一:根据要求,完成表结构的创建

外键约束

概念:

外键用来让两张表的数据之间建立连接,从而保持数据的一致性和完整性。

表示例:

添加外键的两种方式

在新增数据表时进行新增:

create table 表名(
        字段名 数据类型,

        ....

        constaraint [外键名称] foreign key (外键字段名) references 主表(主表列名)

)

数据表已存在,添加字段外键:

alter table 表名 add constraint 外键名称 foreign key (外键字段名) references 主表 (主表列名)

注意:父表与子表如果已经提前存在,外键还没创建,那么在创建外建时,如果要创建外键的那个字段,子表该字段已存在的所有数据与父表该字段已存在的所有数据如果有差集,那么就会出现如下错误:

删除外键,测试外键的功能,数据完整性功能

案例一:

案例二:

删除外键语句

alter table 表名 drop foreign key 外键名称;

外键约束

删除/更新行为

注意:如果修改已存在的外键约束的策略,你需要先删除旧的外键约束,然后重新创建它,并在创建时指定具体你想要的行为。

指定行为的语句为:

alter table 表名 add constraint 外键名称 foreign key (外键字段名) references 主表 (主表列名)  on delete restrict on update restrict

测试 NO ACTION

新增外键为NO ACTION 行为

alter table emp add constraint fk_dept_id foreign key (dept_id)  references dept(id) on delete no action on update no action;

结果:

注意:
历史原因:RESTRICT 和 NO ACTION 的不同关键字源于 SQL 标准,但 MySQL 实现中它们的行为相同。

兼容性:MySQL 支持这两个关键字是为了与其他数据库系统的兼容性。

内部实现:在 MySQL 中,RESTRICT 和 NO ACTION 没有区别,都表示相同的行为。


当指定外键为 no action 时,数据库会显示RESTRICT,因为 no action 与 RESTRICT是相等的行为;且将no action 显示为 RESTRICT ,只不过是mysql的一种内部处理方式而已。

删除子表数据时:

删除父表数据时

由于父表不存在11这个id,所以修改失败了

新增外键为RESTRICT 行为

alter table emp add constraint fk_dept_id foreign key (dept_id)  references dept(id) on delete RESTRICT on update RESTRICT;

修改:

删除:

新增外键为cascade行为

alter table emp add constraint fk_dept_id foreign key (dept_id)  references dept(id) on delete cascade on update cascad

更新

删除

新增外键为set null行为

alter table emp add constraint fk_dept_id foreign key (dept_id)  references dept(id) on delete set null on update set null

删除:

新增外键为set null行为

alter table emp add constraint fk_dept_id foreign key (dept_id)  references dept(id) on delete set default on update set default

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL-xmind 是一种将 MySQL 数据库架构可视化为思维导图的工具。它可以帮助开发人员更好地理解和管理数据库结构。 使用 MySQL-xmind,我们可以通过图形化的方式表示数据库中的表、字段、关系和约束等元素。这样做可以使得数据库设计更加直观、易于理解。通过思维导图的形式,我们可以清楚地看到表之间的关系,如外键约束和关联关系。这对于开发人员在编写 SQL 查询和构建复杂查询时非常有帮助,因为他们可以更轻松地理解表之间的连接和关联。 此外,MySQL-xmind 还可以帮助我们进行数据库的维护和优化。我们可以使用思维导图来查看表的索引、主键和其他约束,从而更好地了解数据库的性能和结构。通过检查思维导图,我们可以发现潜在的问题,如冗余数据、不合理的索引或缺失的关联。 一些功能强大的特性,如批量生成 SQL 语句、导出导入数据库结构等,也使得 MySQL-xmind 成为一个非常实用的工具。它允许我们快速生成 SQL 脚本,以便在不同的环境中部署数据库结构。同样地,我们可以将数据库结构导出为思维导图,方便与团队成员共享和讨论。 总之,MySQL-xmind 是一个方便实用的工具,可以对 MySQL 数据库的结构进行可视化管理和优化。它帮助了开发人员更好地理解数据库的设计和关系,并提供了一些非常有用的功能,如批量生成 SQL 语句和导出导入数据库结构等,使得数据库管理更加高效和便捷。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值