📅  最后修改于: 2023-12-03 14:50:16.512000             🧑  作者: Mango
在数据库中,表的约束是用来保护数据完整性和一致性的。当我们创建表时,可以定义约束来限制插入、修改、删除数据的操作,以及保证数据的有效性、唯一性、非空性等。
在本文中,我们将讨论如何在创建表时检查约束并输入期望的值。
在数据库中,创建表是非常常见的操作。我们可以使用SQL语句来创建一个新表。例如下面的代码段:
CREATE TABLE customers (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT CHECK(age >= 18)
);
这里我们创建了一个名为"customers"的表,其中包含三个列"ID","Name"和"Age"。"ID"列是主键列,"Name"列是不能为空的,而"Age"列必须大于或等于18.
在上面的例子中,我们使用了CHECK约束来限制"Age"列的值大于或等于18。CHECK约束允许我们在插入、修改或删除时检查一个列的取值是否符合要求。如果不符合,数据库会拒绝这个操作。
在上面的例子中,我们使用了CHECK约束来限制"Age"列的值大于或等于18。如果我们尝试插入一个小于18的值,数据库会拒绝这个操作并抛出一个错误。例如下面的代码:
INSERT INTO customers (id, name, age) VALUES (1, "Tom", 17);
上面的代码尝试插入一个小于18的年龄值,因此会出现以下错误:
ERROR 4025 (23000): CONSTRAINT `customers_check_1` failed for `customers`
在创建表时,我们可以定义约束来限制数据的取值。这些约束是我们在设计数据库时考虑到的限制。然而,在实际操作中,有时我们也需要输入一些期望的值来确保数据的正确性。这些期望值可能是固定的、预设的或根据规则生成的。
例如,我们可以使用DEFAULT约束来定义默认值。例如下面的代码:
CREATE TABLE customers (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT DEFAULT 18
);
在上面的代码中,我们指定"Age"列的默认值为18。当我们插入一条新记录时,如果没有指定"Age"列的值,数据库会自动将其设置为默认值18。
我们还可以使用TRIGGER约束在插入、修改或删除记录时执行一些操作。例如下面的代码:
CREATE TRIGGER customers_trigger BEFORE INSERT ON customers FOR EACH ROW BEGIN
SET NEW.age = 18;
END;
在上面的代码中,我们定义了一个名为"customers_trigger"的触发器,在每次插入记录之前,将"Age"列的值设置为18。
总之,在创建表时,我们应该定义约束以确保数据的正确性和一致性。但是,在实际操作时,有时我们还需要输入一些期望的值来满足特定的需求。通过使用DEFAULT约束和TRIGGER约束,我们可以轻松实现这一点。