MySQL数据库表约束讲解

MySQL数据库表约束是指在创建或修改表结构时,对列的数据类型、长度、取值范围等做出的限制或规范。它可以确保数据的正确性、完整性和安全性。常见的约束包括NULL、NOT NULL、PRIMARY KEY、FOREIGN KEY、UNIQUE、CHECK等。下面就一一介绍这些约束:

1. NULL与NOT NULL

NULL表示空值。如果列允许为NULL,则该列的值可以为空。否则该列的值必须输入一个非空值。
语法如下:

列名 数据类型 NULL|NOT NULL

示例1:创建一个允许为NULL的列

CREATE TABLE student (
  id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  age INT,          -- 允许为NULL
  gender VARCHAR(10) NOT NULL
);

示例2:创建一个不允许为NULL的列

CREATE TABLE student (
  id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  age INT NOT NULL,  -- 不允许为NULL
  gender VARCHAR(10) NOT NULL
);

2. PRIMARY KEY

PRIMARY KEY是一种约束,用于定义一列或一组列,作为表的主键。主键是用于唯一标识一条记录的列或一组列。
语法如下:

PRIMARY KEY (列名1, 列名2, ...)

示例1:单列主键

CREATE TABLE student (
  id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  age INT NOT NULL,
  gender VARCHAR(10) NOT NULL
);

示例2:多列主键

CREATE TABLE course (
  code CHAR(6) NOT NULL,
  name VARCHAR(50) NOT NULL,
  teacher VARCHAR(50) NOT NULL,
  PRIMARY KEY (code, teacher)
);

3. FOREIGN KEY

FOREIGN KEY是一种约束,用于定义与另一个表的列之间的关联关系。该列值必须是关联表中的一个有效的值。
语法如下:

FOREIGN KEY (列名) REFERENCES 关联表名(关联列名)

示例:

CREATE TABLE student (
  id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  age INT NOT NULL,
  gender VARCHAR(10) NOT NULL,
  course_code CHAR(6),
  FOREIGN KEY (course_code) REFERENCES course(code)
);

4. UNIQUE

UNIQUE是一种约束,用于确保一个列或一组列的值是唯一的。如果一个表中有多列被定义为UNIQUE,那么它们的组合必须是唯一的,不能重复。
语法如下:

UNIQUE (列名1, 列名2, ...)

示例1:单列UNIQUE

CREATE TABLE student (
  id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL UNIQUE,
  age INT NOT NULL,
  gender VARCHAR(10) NOT NULL
);

示例2:多列UNIQUE

CREATE TABLE course (
  code CHAR(6) NOT NULL,
  name VARCHAR(50) NOT NULL,
  teacher VARCHAR(50) NOT NULL,
  UNIQUE (code, teacher)
);

5. CHECK

CHECK是一种约束,用于限制列的取值范围。通过使用检查约束,可以确保表中的数据符合指定的条件。
语法如下:

CHECK (条件)

示例:

CREATE TABLE student (
  id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  age INT NOT NULL CHECK (age>0),
  gender VARCHAR(10) NOT NULL
);

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL数据库表约束讲解 - Python技术站

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

相关文章

  • Centos8无法安装docker问题的解决方法

    以下是详细的CentOS 8安装Docker的攻略,包括两条示例说明: 问题描述 在CentOS 8中尝试安装Docker,可能会出现以下错误信息: Last metadata expiration check: 0:01:00 ago on Wed 05 May 2021 09:10:54 AM CST. No match for argument: do…

    other 2023年6月27日
    00
  • python 列表递归求和、计数、求最大元素的实例

    下面就针对 Python 列表递归求和、计数、求最大元素的实例进行详细讲解。 列表递归求和 递归求和的方法就是,将一个列表分解为一个个单独的元素,然后递归相加,最后得到总的和。 def recursive_sum(arr): if len(arr) == 1: return arr[0] else: return arr[0] + recursive_sum…

    other 2023年6月27日
    00
  • 怎么换IP地址?相当简单有效的换IP方法

    怎么换IP地址?相当简单有效的换IP方法 方法一:使用VPN服务 下载并安装一个可靠的VPN应用程序,例如[NordVPN](https://go.nordpass.io/aff_c?offer_id=488&aff_id=89709&url_id=9356 “NordVPN”)、ExpressVPN或Surfshark。 打开VPN应用程序并创建一个新的帐…

    other 2023年7月30日
    00
  • java 基础之JavaBean属性命名规范问题

    Java基础之JavaBean属性命名规范问题攻略 1. 什么是JavaBean JavaBean是一种Java语言编写的可重用组件,符合特定的命名规范和规则。JavaBean主要用于封装数据,具备一定的属性和方法,以便在不同的应用中进行传递和操作。 2. JavaBean属性命名规范 在JavaBean中,属性命名需要遵循一定的规范,以保证代码的可读性和一…

    other 2023年6月28日
    00
  • SpringBoot集成Druid配置(yaml版本配置文件)详解

    环境准备 在开始配置SpringBoot集成Druid之前,需要确保已经满足以下条件: JDK 1.8 或更高版本 Maven 3.x 或更高版本 SpringBoot 2.x 版本或更高版本 引入Druid依赖 为了集成Druid,需要在pom.xml文件中添加以下依赖: <dependency> <groupId>com.alib…

    other 2023年6月25日
    00
  • js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果

    首屏延迟加载实现方法 首屏延迟加载可以提高网站的加载速度,让用户更快地看到页面的内容。实现方法如下: 步骤一:将首屏需要展示的图片的src属性设置为data-src <img data-src="图片地址" alt="图片描述"> 步骤二:通过JavaScript获取屏幕高度和滚动距离 var client…

    other 2023年6月25日
    00
  • Java类的初始化顺序知识点总结

    首先需要说明的是,在Java中,一个类的初始化顺序是非常关键的,这将直接影响到程序的正确性和性能。 类的初始化顺序和对象的实例化顺序是有区别的。类的初始化是在类第一次使用之前执行的,而对象的实例化是在实例化对象时执行的。 下面是Java类的初始化顺序的总结: 静态变量的初始化:静态变量的初始化是在类的初始化过程中进行的。静态变量的初始化是在编译阶段进行的,不…

    other 2023年6月20日
    00
  • uirecorder功能详解

    uirecorder功能详解 uirecorder是一款基于浏览器插件的录制工具,它可以记录用户在网页上的操作,包括鼠标点击、键盘输入等,同时还可以生成对应的JavaScript代码方便后续开发使用。下面将详细介绍uirecorder的功能和使用方法。 安装和使用 打开Chrome浏览器,在应用商店中搜索“uirecorder”插件并安装; 打开待录制的网页…

    其他 2023年3月28日
    00
合作推广
合作推广
分享本页
返回顶部