MySql约束超详细介绍

MySql约束超详细介绍

在 MySQL 中,约束是用于强制实施数据完整性的规则。MySQL 的约束有多种类型,分别是主键、唯一、非空、默认和外键。下面将详细介绍这些类型的约束及其使用。

主键约束

主键约束是一组列或单列,其值标识表中每个记录的唯一性。创建主键会自动创建唯一索引,因此不允许在表中有重复值或NULL值。主键可由用户创建或由系统自动创建。

用户创建主键约束

我们可以在创建表时,通过在列定义中使用 PRIMARY KEY 约束创建主键,如下所示:

CREATE TABLE Persons (
    P_Id int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    PRIMARY KEY (P_Id)
);

系统自动创建主键约束

如果您没有指定主键,MySQL会自动为该表在第一个定义为 NOT NULL 的列上创建一个主键,如下所示:

CREATE TABLE Persons (
    P_Id int NOT NULL AUTO_INCREMENT,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    PRIMARY KEY (P_Id)
);

唯一约束

唯一约束用于确保列中的所有值都是唯一的。唯一约束与主键约束类似,但唯一约束允许NULL值。

用户创建唯一约束

我们可以在创建表时,在列定义中使用 UNIQUE 约束创建唯一约束,如下所示:

CREATE TABLE Persons (
    P_Id int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    UNIQUE (P_Id)
);

消除约束

我们可以在表上删除唯一约束,如下所示:

ALTER TABLE Persons 
DROP INDEX P_Id;

非空约束

非空约束确保列中的值不能为空。非空约束是在创建表时定义的。

我们可以在创建列时,在列定义中使用 NOT NULL 约束创建非空约束,如下所示:

CREATE TABLE Persons (
    P_Id int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255) NOT NULL,
    Age int
);

默认约束

默认约束用于向列中插入默认值。如果没有指定值,则使用默认值。默认约束是在创建表时定义的。

我们可以在创建列时,在列定义中使用 DEFAULT 约束创建默认约束,如下所示:

CREATE TABLE Persons (
    P_Id int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int DEFAULT 18
);

修改约束

我们可以在表上更新默认值,如下所示:

ALTER TABLE Persons 
ALTER Age SET DEFAULT 25;

外键约束

外键约束用于确保关系表中的完整性。外键约束是用于建立表与其它表之间联系的。

用户创建外键约束

我们可以在创建表时,在列定义中使用 FOREIGN KEY 约束创建外键约束,如下所示:

CREATE TABLE Orders (
    OrderId int PRIMARY KEY,
    OrderNumber int NOT NULL,
    PersonId int,
    FOREIGN KEY (PersonId) REFERENCES Persons(P_Id)
);

删除外键约束

我们可以通过以下方式删除外键约束:

ALTER TABLE Orders
DROP FOREIGN KEY fk_PersonOrder;

结论

MySQL内置了多种类型的约束,包括主键、唯一、非空、默认和外键约束。合理使用这些约束可以有效地保证数据的完整性和一致性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySql约束超详细介绍 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • C语言中动态内存分配malloc、calloc和realloc函数解析

    C语言中动态内存分配函数解析 在C语言中,动态内存分配是一种重要的技术,它允许程序在运行时动态地分配和释放内存。C语言提供了几个函数来实现动态内存分配,其中包括malloc、calloc和realloc函数。本文将详细解析这三个函数的用法和区别。 1. malloc函数 malloc函数用于在堆上分配指定大小的内存块。它的函数原型如下: void* mall…

    other 2023年8月2日
    00
  • 基于fpga的图像开发平台其他摄像头附件说明(ov5642ov9655)

    基于FPGA的图像开发平台是一种用于图像处理和计算机视觉应用的硬件平台。在该平台上,我们可以使用不同的摄像头附件来捕获图像。本文将介绍如何使用ov5642和ov9655摄像头附件。下面是基于FPGA的图像开发平台其他摄像头附件说明的完整攻略,包括两个示例说明。 示例一:使用ov5642摄像头附件 ov5642是一种常用的摄像头附件,可以用于基于FPGA的图像…

    other 2023年5月9日
    00
  • 什么是rest接口?

    REST是一种Web服务架构风格,它支持客户端-服务端的通信模式,在网络上交换数据。RESTful接口是基于HTTP协议的一种API,是一种通过 HTTP 进行通信的Web应用程序接口。 RESTful接口设计遵循HTTP协议的规范,使用HTTP请求方式定义对资源的操作,也就是使用HTTP的GET、POST、PUT、DELETE等请求方式去对资源进行CRUD…

    其他 2023年4月16日
    00
  • win7系统经常死机怎么办?win7系统电脑经常死机的几种原因及解决方法

    Win7系统经常死机怎么办? Win7系统电脑经常死机的问题,可能会给我们的日常使用带来很大的困扰,下面介绍几种原因及相应的解决方法。 原因一:硬件问题 经常死机的原因之一可能是硬件方面的问题,如内存、硬盘等。可以使用以下方法进行故障排查: 内存测试:首先可以尝试使用内存测试软件,如Memtest86等,来测试系统中的内存是否存在问题。 硬盘测试:也可以使用…

    other 2023年6月27日
    00
  • ubuntu查看mysql版本

    以下是“Ubuntu查看MySQL版本的完整攻略”的标准markdown格式文本,其中包含了两个示例: Ubuntu查看MySQL版本的完整攻略 在Ubuntu系统中,我们可以通过命令行来查看MySQL的版本号。以下是查看MySQL版本号的步骤: 1. 登录MySQL 在命令行中输入以下命令并按下回车键,输入MySQL的root用户密码以登录MySQL: m…

    other 2023年5月10日
    00
  • win7系统中最快速的安装字体的两种方法

    Win7系统中最快速的安装字体的两种方法攻略 在Win7系统中,安装字体可以通过以下两种方法来实现,这两种方法都非常快速和方便。 方法一:使用字体预览功能安装字体 首先,将字体文件(通常是以.ttf、.otf或者其他字体文件格式结尾)复制到计算机上的任意位置,例如桌面或者一个特定的文件夹。 双击打开字体文件,系统会自动打开字体预览窗口,你可以在这个窗口中查看…

    other 2023年8月5日
    00
  • 解决使用IDE Run运行出错package pack/test is not in GOROOT (/usr/local/go/src/pack/test)

    以下是解决使用IDE Run运行出错package pack/test is not in GOROOT (/usr/local/go/src/pack/test)的完整攻略: 确认GOPATH设置正确:首先,确保您的GOPATH环境变量已正确设置。您可以通过运行go env命令来检查GOPATH的值。确保GOPATH包含您的项目路径。 确认项目结构:确保您…

    other 2023年10月14日
    00
  • java使用Validation进行数据校验的方式总结

    Java使用Validation进行数据校验的方式总结 Java提供了一种方便的数据校验框架——Validation,它可以帮助开发人员轻松地对数据进行校验和验证。以下是使用Validation进行数据校验的方式的详细攻略: 1. 添加依赖 首先,需要在项目的构建文件中添加Validation的依赖。对于Maven项目,可以在pom.xml文件中添加以下依赖…

    other 2023年10月17日
    00
合作推广
合作推广
分享本页
返回顶部