您的位置:

MySQL约束有哪些

MySQL是一种关系型数据库管理系统,约束是确保数据完整性和一致性的重要机制之一。本文将从MySQL的约束种类、条件、类型、设置、常见示例等多个方面详细介绍MySQL约束有哪些。

一、MySQL约束种类

MySQL提供了多种类型的约束,包括:

1. 主键约束 (PRIMARY KEY): 主键是一种唯一的索引,通常用于标识表中的每一行数据。主键约束可以保证每行数据都有唯一的标识,避免了数据冲突的问题。例如:


CREATE TABLE student (
   id INT(11) NOT NULL PRIMARY KEY,
   name VARCHAR(50) NOT NULL,
   age INT(3) NOT NULL 
);

2. 唯一约束(UNIQUE): 唯一约束用于保证在特定的表列中数据的唯一性。例如:


CREATE TABLE student (
   id INT(11) NOT NULL,
   name VARCHAR(50) NOT NULL UNIQUE,
   age INT(3) NOT NULL 
);

3. 外键约束(FOREIGN KEY): 外键约束用于保持关系型数据库表之间的关联关系。例如:


CREATE TABLE course (
   id INT(11) NOT NULL PRIMARY KEY,
   name VARCHAR(50) NOT NULL,
   cid INT(11) NOT NULL,
   FOREIGN KEY (cid) REFERENCES student(id)
);

二、MySQL约束条件

约束条件是用于控制表中数据的一致性和完整性的规则。MySQL支持以下约束条件:

1. NOT NULL:保证表中列不包含NULL值。例如:


CREATE TABLE student (
   id INT(11) NOT NULL,
   name VARCHAR(50) NOT NULL,
   age INT(3) NOT NULL 
);

2. DEFAULT:默认值约束,对于未提供值的列设置默认值。例如:


CREATE TABLE student (
   id INT(11) NOT NULL DEFAULT 0,
   name VARCHAR(50) NOT NULL DEFAULT 'No Name',
   age INT(3) NOT NULL DEFAULT 18 
);

三、MySQL约束类型

MySQL支持以下约束类型:

1. 表级约束:对表中的数据整体进行约束控制,可以在表创建之后或表上已存在的数据上执行。例如:


ALTER TABLE student ADD CONSTRAINT pk_id PRIMARY KEY(id);

2. 列级约束:对表中的数据列进行约束控制,只有在列添加时才能定义。例如:


CREATE TABLE student (
   id INT(11) NOT NULL PRIMARY KEY,
   name VARCHAR(50) NOT NULL UNIQUE,
   age INT(3) NOT NULL CHECK (age >= 18)
);

四、MySQL设置约束名

MySQL约束名是指将约束命名的规则或惯例。要给约束定义名称,可以使用以下语法:

CREATE TABLE student (
   id INT(11) NOT NULL PRIMARY KEY CONSTRAINT pk_student_id,
   name VARCHAR(50) NOT NULL UNIQUE CONSTRAINT uk_student_name,
   age INT(3) NOT NULL CHECK (age >= 18) CONSTRAINT check_student_age 
);

五、MySQL常见的约束

MySQL的主键、外键和唯一键是最常见的约束类型。这里分别给出代码示例:

1. 主键约束


CREATE TABLE student (
   id INT(11) NOT NULL PRIMARY KEY,
   name VARCHAR(50) NOT NULL,
   age INT(3) NOT NULL 
);

2. 唯一约束


CREATE TABLE student (
   id INT(11) NOT NULL,
   name VARCHAR(50) NOT NULL UNIQUE,
   age INT(3) NOT NULL 
);

3. 外键约束


CREATE TABLE course (
   id INT(11) NOT NULL PRIMARY KEY,
   name VARCHAR(50) NOT NULL,
   cid INT(11) NOT NULL,
   FOREIGN KEY (cid) REFERENCES student(id)
);

小结

MySQL约束是一种保证数据完整性和一致性的重要机制。本文从多个方面详细介绍了MySQL约束的种类、条件、类型、设置方法和常见示例。通过深入了解MySQL约束,可以更好地保护数据库中的数据。