Mysql数据库之约束条件详解

 更新时间:2025年01月10日 16:48:50   作者:_BooI  
本文介绍了数据库表中的主键约束、非空约束、唯一约束、默认值约束和外键约束,并举例说明了如何在创建表和修改表时设置这些约束

一、主键约束

主键约束(PRIMARY KEY constraint)用于唯一标识数据库表中的每条记录。

语法:

create table 表名 (
列名1 数据类型 primary key,
列名2 数据类型,
...
);

在主键的后面添加:auto_increment, 可以让主键自增。

设置auto_increment之后,可以不用设置id, id会自增。

创建表之后再创建主键的语法:alter table 表名 add primary key (列名1, 列名2, ...);

二、非空约束

非空约束是一种数据库约束,用于确保表中的某个列不接受空值。当为表的某个列定义了非空约束后,插入或更新该列时,必须提供非空的值。

语法:

create table 表名 (
列名 数据类型 not null,
...
);

创建表之后再设置非空的语法:alter table 表名 modify 列名 数据类型 not null;

三、唯一约束

唯一约束是一种数据库约束,用于确保表中的某个列或一组列的值是唯一的,即不允许重复值。唯一约束是一种数据完整性措施,它可以保证数据的唯一性和一致性。

语法:

create table 表名 (
列名2 数据类型 unique,
...
);

在创建好的表中添加唯一约束:alter table 表名 add constraint 约束名 unique (列名1, 列名2, ...);

四、默认值约束

默认值约束是一种数据库约束,用于在插入数据时,如果未显式为列指定值,则自动使用指定的默认值,是一种数据完整性措施,它确保了在缺少显式值的情况下,表中的列始终具有默认值。

语法:

Create table 表名 (
列名1 数据类型 default 默认值,
列名2 数据类型 default 默认值,
...
);

在创建好的表中添加默认值约束:alter table 表名 alter colum 列名 set default 默认值;

五、外键约束

外键约束是一种数据库约束,用于在相关表之间建立关联关系,保持数据的完整性和一致性。

外键约束可以确保在一个表中的列值必须在另一个表中存在。

语法:

Create table 表名 (
列名1 数据类型,
列名2 数据类型,
...
foreign key (列名) references 关联表名(关联列名)
);

例:作者和文章的关系是:1:N, 外键存在多的一方,所以外键设在文章表, 所以先创建作者表。

创建作者表:

创建文章表,并设置外键:

在创建好的表中添加外键约束(约束名自己命名):

alter table 表名 add constraint 约束名 foreign key (列名) references 关联表名(关联列名);

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL HandlerSocket插件安装配置教程

    MySQL HandlerSocket插件安装配置教程

    这篇文章主要介绍了MySQL HandlerSocket插件安装配置,包括PHP HandlerSocket插件的安装配置,需要的朋友可以参考下
    2014-04-04
  • 实现MySQL回滚的Python脚本的编写教程

    实现MySQL回滚的Python脚本的编写教程

    这篇文章主要介绍了实现MySQL回滚的Python脚本的编写教程,文中的回滚针对的是DELETE语句的数据库误操作,需要的朋友可以参考下
    2015-11-11
  • linux下mysql的root密码忘记的解决方法

    linux下mysql的root密码忘记的解决方法

    这篇文章主要为大家详细介绍了linux下mysql的root密码忘记的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • MySQL开启慢查询日志log-slow-queries的方法

    MySQL开启慢查询日志log-slow-queries的方法

    MySQL中提供了一个慢查询的日志记录功能,可以把查询SQL语句时间大于多少秒的语句写入慢查询日志,日常维护中可以通过慢查询日志的记录信息快速准确地判断问题所在
    2016-05-05
  • 一文搞定MySQL binlog/redolog/undolog区别

    一文搞定MySQL binlog/redolog/undolog区别

    这篇文章主要介绍了一文搞定MySQL binlog/redolog/undolog区别,作为开发,我们重点需要关注的是二进制日志(binlog)和事务日志(包括redo log和undo log),本文接下来会详细介绍这三种日志,需要的朋友可以参考下
    2023-04-04
  • MySQL中几种数据统计查询的基本使用教程

    MySQL中几种数据统计查询的基本使用教程

    这篇文章主要介绍了几种MySQL中数据统计查询的基本使用教程,包括平均数和最大最小值等的统计结果查询方法,是需要的朋友可以参考下
    2015-12-12
  • MySql explain命令返回结果详细介绍

    MySql explain命令返回结果详细介绍

    explain 是MySql提供的SQL语句查询性能的工具,是我们优化SQL的重要指标手段,要看懂explain返回的结果集就尤为重要,这篇文章主要介绍了MySql explain命令返回结果解读,需要的朋友可以参考下
    2023-09-09
  • mysql 8.0.12 解压版安装教程

    mysql 8.0.12 解压版安装教程

    这篇文章主要为大家详细介绍了mysql 8.0.12 解压版安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • 把MySQL卸载干净的超详细步骤

    把MySQL卸载干净的超详细步骤

    这篇文章主要介绍了把MySQL卸载干净的超详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考价值,需要的朋友们下面跟着小编来一起学习吧
    2024-02-02
  • MySQL中distinct和count(*)的使用方法比较

    MySQL中distinct和count(*)的使用方法比较

    这篇文章主要针对MySQL中distinct和count(*)的使用方法比较,对两者之间的使用方法、效率进行了详细分析,感兴趣的小伙伴们可以参考一下
    2015-11-11

最新评论