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技术站