热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL与MariaDB数据库管理:约束与键操作详解

在关系型数据库中,数据约束是指在向数据表中插入数据时必须遵循的限制条件。在MySQL和MariaDB中,常见的数据约束包括主键约束、唯一键约束、外键约束以及非空约束等。这些约束确保了数据的完整性和一致性,是数据库管理中的重要组成部分。通过合理设置和使用这些约束,可以有效防止数据冗余和错误,提升数据库的可靠性和性能。

关系型数据库中数据约束,可以理解为想数据表中插入数据时需遵守的限制规则;MySQL中常见的约束有主键约束、唯一键约束、外键约束、非空约束等;

主键:primary key,表上一个或多个字段的组合,填入主键字段中的数据;必须不同于已经存在的其他行中相同字段上的数据,且不为空;一个表只能存在唯一主键,一个主键可由多个字段组成;

唯一键:unique key,表上一个或多个字段的组合,填入其中字段中的数据,必须不同于已经存在其他行上相同字段的数据;可以为空,可有多个唯一键;

外键:foreign key,一个表中外键字段所能够插入的取值范围,取决于引用另一个表上主键字段上已存在的数据集合;

检查条件约束:check,自定义的逻辑表达式;

非空约束

添加非空约束

设置非空字段,在testtb表中的name字段添加非空约束;

MariaDB [testdb]> alter table testtb modify name varchar(100) not null;

删除非空约束

MariaDB [testdb]> alter table testtb modify name varchar(100) null;

自动增长

添加自动增长

在testtb表中的id字段设置自动增长;

MariaDB [testdb]> alter table testtb modify id int auto_increment;

也可用如下使用

MariaDB [testdb]> alter table testtb change id id int auto_increment;

删除自动增长

MariaDB [testdb]> alter table testtb change id id int;
MariaDB [testdb]> alter table testtb modify id int;

主键约束

添加主键约束

使用如下两条语句中的任意一条均可;

MariaDB [testdb]> alter table testtb4 add primary key(id);
MariaDB [testdb]> alter table testtb4 add constraint primary key(id);

删除主键约束

删除主键时,不能直接删除,需要先删除自动增长,再删除主键;同理,如果当前表主键已经在其他表中字段当做外键;应先删除其他表中主外键关系,才可删除当前主键;

MariaDB [testdb]> alter table testtb drop primary key;

唯一键约束

添加唯一键约束;

默认情况下唯一键的名称为字段名称

MariaDB [testdb]> alter table testtb add unique key(uid);

创建唯一键,并制定唯一键名称为uni_test

MariaDB [testdb]> alter table testtb add unique key uni_test(test);

删除唯一约束键

MariaDB [testdb]> alter table testtb drop index uni_test;

查看约束

查看主键、查看唯一键、查看外键

MariaDB [testdb]> select * from information_schema.key_column_usage where table_name='test1';

查看主外键对应关系

查看test1表中已用那些表中的主键作为自己的外键;也可理解为查看test1的外键

MariaDB [testdb]> select TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME,REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME from information_schema.KEY_COLUMN_USAGE where TABLE_NAME = 'test1' and REFERENCED_TABLE_NAME is not null;

查看test2表的主键被那些表已用为外键

MariaDB [testdb]> select REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME,CONSTRAINT_NAME,TABLE_NAME,COLUMN_NAME from information_schema.KEY_COLUMN_USAGE where REFERENCED_TABLE_NAME = 'test2';

外键约束

 添加外键约束

 使用下列两条语句设置外键,在testtb表中创建一个新字段tid,并且添加外键testtb_tid_fk,外键,testtb表中的tid字段引用了表testtb2表中的id字段;

MariaDB [testdb]> alter table testtb add column tid int default 0 not null;
MariaDB [testdb]> alter table testtb add constraint testtb_tid_fk foreign key(tid) references testtb2(id);

删除外键约束

查找test4表中的外键

MariaDB [testdb]> select TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME,REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME from information_schema.KEY_COLUMN_USAGE where TABLE_NAME = 'test4' and REFERENCED_TABLE_NAME is not null;

删除表test4中的test_tid_fk外键

MariaDB [testdb]> alter table test4 drop foreign key test_tid_fk;


转:https://www.cnblogs.com/Gmiaomiao/p/9201295.html



推荐阅读
  • 本文详细介绍了如何安全地手动卸载Exchange Server 2003,以确保系统的稳定性和数据的完整性。根据微软官方支持文档(https://support.microsoft.com/kb833396/zh-cn),在进行卸载操作前,需要特别注意备份重要数据,并遵循一系列严格的步骤,以避免对现有网络环境造成不利影响。此外,文章还提供了详细的故障排除指南,帮助管理员在遇到问题时能够迅速解决,确保整个卸载过程顺利进行。 ... [详细]
  • 本文详细探讨了MySQL数据库实例化参数的优化方法及其在实例查询中的应用。通过具体的源代码示例,介绍了如何高效地配置和查询MySQL实例,为开发者提供了有价值的参考和实践指导。 ... [详细]
  • 本文详细探讨了使用纯JavaScript开发经典贪吃蛇游戏的技术细节和实现方法。通过具体的代码示例,深入解析了游戏逻辑、动画效果及用户交互的实现过程,为开发者提供了宝贵的参考和实践经验。 ... [详细]
  • 在Django中提交表单时遇到值错误问题如何解决?
    在Django项目中,当用户提交包含多个选择目标的表单时,可能会遇到值错误问题。本文将探讨如何通过优化表单处理逻辑和验证机制来有效解决这一问题,确保表单数据的准确性和完整性。 ... [详细]
  • MyISAM和InnoDB是MySQL中最为广泛使用的两种存储引擎,每种引擎都有其独特的优势和适用场景。MyISAM引擎以其简单的结构和高效的读取速度著称,适用于以读操作为主、对事务支持要求不高的应用。而InnoDB引擎则以其强大的事务处理能力和行级锁定机制,在需要高并发写操作和数据完整性的场景下表现出色。选择合适的存储引擎应综合考虑业务需求、性能要求和数据一致性等因素。 ... [详细]
  • Objective-C 中的委托模式详解与应用 ... [详细]
  • 数据库多表联合查询:内连接与外连接详解
    在数据库的多表查询中,内连接和外连接是两种常用的技术手段。内连接用于检索多个表中相互匹配的记录,即只有当两个表中的记录满足特定的连接条件时,这些记录才会被包含在查询结果中。相比之下,外连接则不仅返回匹配的记录,还可以选择性地返回不匹配的记录,具体取决于左外连接、右外连接或全外连接的选择。本文将详细解析这两种连接方式的使用场景及其语法结构,帮助读者更好地理解和应用多表查询技术。 ... [详细]
  • 技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告
    技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告 ... [详细]
  • 本文详细介绍了使用 Python 进行 MySQL 和 Redis 数据库操作的实战技巧。首先,针对 MySQL 数据库,通过 `pymysql` 模块展示了如何连接和操作数据库,包括建立连接、执行查询和更新等常见操作。接着,文章深入探讨了 Redis 的基本命令和高级功能,如键值存储、列表操作和事务处理。此外,还提供了多个实际案例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 具备括号和分数功能的高级四则运算计算器
    本研究基于C语言开发了一款支持括号和分数运算的高级四则运算计算器。该计算器通过模拟手算过程,对每个运算符进行优先级标记,并按优先级从高到低依次执行计算。其中,加减运算的优先级最低,为0。此外,该计算器还支持复杂的分数运算,能够处理包含括号的表达式,提高了计算的准确性和灵活性。 ... [详细]
  • SSAS入门指南:基础知识与核心概念解析
    ### SSAS入门指南:基础知识与核心概念解析Analysis Services 是一种专为决策支持和商业智能(BI)解决方案设计的数据引擎。该引擎能够为报告和客户端应用提供高效的分析数据,并支持在多维数据模型中构建高性能的分析应用。通过其强大的数据处理能力和灵活的数据建模功能,Analysis Services 成为了现代 BI 系统的重要组成部分。 ... [详细]
  • 深入解析 Golang 中 Context 的功能与应用
    本文详细探讨了 Golang 中 Context 的核心功能及其应用场景,通过深入解析其工作机制,帮助读者更好地理解和运用这一重要特性,对于提升代码质量和项目开发效率具有重要的参考价值。 ... [详细]
  • 2018年9月21日,Destoon官方发布了安全更新,修复了一个由用户“索马里的海贼”报告的前端GETShell漏洞。该漏洞存在于20180827版本的某CMS中,攻击者可以通过构造特定的HTTP请求,利用该漏洞在服务器上执行任意代码,从而获得对系统的控制权。此次更新建议所有用户尽快升级至最新版本,以确保系统的安全性。 ... [详细]
  • 在Kohana 3框架中,实现最优的即时消息显示方法是许多开发者关注的问题。本文将探讨如何高效、优雅地展示flash消息,包括最佳实践和技术细节,以提升用户体验和代码可维护性。 ... [详细]
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
author-avatar
徐徐回忆_545
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有