mysql约束列级怎么写
时间 : 2023-03-08 11:57:01声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

MySQL的列级约束(Column-Level Constraints)可以在表的定义中为一个或多个列定义一些限制条件,用于确保数据的完整性和一致性,防止非法或不良数据的插入和更新。MySQL支持以下几种列级约束。

1. NOT NULL约束:要求该列的值不能为NULL或缺失,必须提供有效的非空值。例如,创建一个名为“users”的表,其中“username”和“password”列都必须非空:

CREATE TABLE users

(

id INT PRIMARY KEY AUTO_INCREMENT,

username VARCHAR(20) NOT NULL,

password VARCHAR(20) NOT NULL

);

2. DEFAULT约束:为该列提供一个默认值,当插入或更新该行时,如果没有指定该列的值,则使用默认值。例如:

CREATE TABLE test

(

id INT PRIMARY KEY AUTO_INCREMENT,

name VARCHAR(20),

gender ENUM('M', 'F') DEFAULT 'M'

);

3. UNIQUE约束:要求该列的值必须唯一(不能重复),可以是NULL,用于防止数据冲突和重复插入。例如:

CREATE TABLE students

(

id INT PRIMARY KEY AUTO_INCREMENT,

name VARCHAR(20),

email VARCHAR(50) UNIQUE

);

4. PRIMARY KEY约束:将该列作为表的主键(Primary Key),用于唯一标识每个行,并保证数据的一致性。一个表只能有一个主键,必须是NOT NULL的唯一列。例如:

CREATE TABLE books

(

id INT PRIMARY KEY AUTO_INCREMENT,

title VARCHAR(50),

author VARCHAR(50),

price DECIMAL(8, 2)

);

5. FOREIGN KEY约束:在该列中定义一个外键(Foreign Key),用于确保数据完整性和一致性,保证数据的引用关系正确和可靠。一个表可以有多个外键,外键必须参考另一个表中的主键。例如:

CREATE TABLE orders

(

id INT PRIMARY KEY AUTO_INCREMENT,

customer_id INT,

order_date DATE,

FOREIGN KEY (customer_id) REFERENCES customers(id)

);

6. CHECK约束:添加一个检查约束(Check Constraint),用于检查该列的值是否符合指定的条件,如果不符合则抛出异常。例如:

CREATE TABLE employees

(

id INT PRIMARY KEY AUTO_INCREMENT,

name VARCHAR(20),

age INT CHECK (age >= 18 AND age <= 60),

salary DECIMAL(8, 2) CHECK (salary >= 5000)

);

总之,MySQL的列级约束提供了一种有效而灵活的方法来确保表中数据的完整性和一致性,避免了数据插入和更新中的错误和异常。在设计数据库表结构时,应该根据业务需求和数据规范来选择并应用适当的列级约束。