MySQL表的约束和触发器
MySQL 表的约束
MySQL 表的约束是一种限制条件,用于保证表中数据的一致性和完整性。MySQL 支持多种类型的约束,包括主键约束、唯一约束、外键约束、检查约束和默认约束。
主键约束
主键约束用于唯一标识表中的每一条记录。主键必须唯一且不能为空,通常是一个自增长的整数类型。
创建主键约束的语法如下:
CREATE TABLE table_name (
column1 datatype PRIMARY KEY,
column2 datatype,
column3 datatype,
...
);
唯一约束
唯一约束用于保证表中每个记录的某一个或多个列的值是唯一的,允许为空。
创建唯一约束的语法如下:
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype,
...,
UNIQUE (column1, column2, ...),
...
);
外键约束
外键约束用于保证表与表之间的关系,确保表之间的数据一致性。外键约束用于连接两个表的主键和外键。
创建外键约束的语法如下:
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT,
...
);
CREATE TABLE customers (
customer_id INT PRIMARY KEY,
...
...
FOREIGN KEY (customer_id) REFERENCES orders(order_id)
);
检查约束
检查约束用于在插入或更新数据时检查数据的有效性。可以检查数据的类型、值范围等。
创建检查约束的语法如下:
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype CHECK (column3 > 0),
...
);
默认约束
默认约束用于为表中某一列提供默认值。如果插入数据时该列没有输入任何值,则会自动赋值为默认值。
创建默认约束的语法如下:
CREATE TABLE table_name (
column1 datatype DEFAULT default_value,
column2 datatype,
column3 datatype,
...
);
MySQL 触发器
MySQL 触发器是一种与表相关的特殊类型的存储过程,它在满足一定条件时自动执行,并对表进行修改。
MySQL 触发器有两种,分别是 BEFORE
和 AFTER
触发器。BEFORE
触发器在修改表之前执行,AFTER
触发器在修改表之后执行。
创建触发器的语法如下:
CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON table_name
FOR EACH ROW
BEGIN
-- 触发器的操作
END;
其中,trigger_name
为触发器名称,INSERT
、UPDATE
、DELETE
为触发器执行的操作,table_name
为要触发的表名,FOR EACH ROW
表示对每一行数据进行操作。
在触发器中可以使用 NEW
和 OLD
关键字来引用新旧数据,例如:
CREATE TRIGGER ins_employee
BEFORE INSERT ON employees
FOR EACH ROW
BEGIN
SET NEW.salary = NEW.salary * 1.1;
END;
以上是 MySQL 表的约束和触发器的详细解释,希望对您有所帮助。