MySQL 强制约束(mandatory)
MySQL 是一种流行的关系型数据库管理系统,广泛用于各种应用程序中。在数据库设计中,数据的完整性约束是非常重要的,可以确保数据的准确性和一致性。MySQL 提供了多种约束来保证数据的完整性,包括主键、外键、唯一约束、检查约束等。本文将重点介绍 MySQL 中的强制约束(mandatory),包括 NOT NULL 约束和 DEFAULT 约束。
NOT NULL 约束
NOT NULL 约束用于确保表中的某个列不接受 NULL 值。如果尝试向 NOT NULL 列中插入 NULL 值,MySQL 将抛出错误并拒绝插入。在创建表时,可以在定义列的时候添加 NOT NULL 约束,也可以在后续使用 ALTER TABLE 语句添加该约束。
在创建表时添加 NOT NULL 约束
下面是一个创建表时添加 NOT NULL 约束的示例:
CREATE TABLE users (
id INT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL
);
在上面的示例中,id 列是主键,且不接受 NULL 值;username 和 email 列都声明为 NOT NULL,确保插入的数据不包含 NULL 值。
使用 ALTER TABLE 添加 NOT NULL 约束
如果表已经存在,可以使用 ALTER TABLE 语句添加 NOT NULL 约束:
ALTER TABLE users
MODIFY COLUMN username VARCHAR(50) NOT NULL;
在上面的示例中,修改了 users 表中 username 列的约束,确保该列不接受 NULL 值。
示例
接下来我们通过一个实际的示例演示 NOT NULL 约束的作用:
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
department VARCHAR(50) NOT NULL
);
INSERT INTO employees(id, name, department) VALUES (1, 'Alice', 'HR');
INSERT INTO employees(id, name) VALUES (2, 'Bob');
在上面的示例中,我们创建了一个员工表 employees,并定义了 id、name 和 department 列。name 和 department 列都声明为 NOT NULL。在插入第二条数据时,由于没有指定 department 列的值,MySQL 抛出错误并拒绝插入。
DEFAULT 约束
DEFAULT 约束用于在插入数据时为列指定默认值。如果插入的数据没有指定该列的值,MySQL 将使用 DEFAULT 约束指定的默认值。在创建表时,可以在定义列的时候添加 DEFAULT 约束,也可以在后续使用 ALTER TABLE 语句添加该约束。
在创建表时添加 DEFAULT 约束
下面是一个创建表时添加 DEFAULT 约束的示例:
CREATE TABLE products (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
price DECIMAL(10,2) DEFAULT 0.00
);
在上面的示例中,定义了一个 products 表,包括 id、name 和 price 列。price 列声明为 DECIMAL 类型,并设置了 DEFAULT 0.00,表示默认价格为 0。
使用 ALTER TABLE 添加 DEFAULT 约束
如果表已经存在,可以使用 ALTER TABLE 语句添加 DEFAULT 约束:
ALTER TABLE products
ALTER COLUMN price SET DEFAULT 0.00;
在上面的示例中,为 products 表中的 price 列添加了 DEFAULT 约束,设置默认值为 0.00。
示例
接下来我们通过一个实际的示例演示 DEFAULT 约束的作用:
CREATE TABLE orders (
id INT PRIMARY KEY,
order_date DATE NOT NULL,
total_amount DECIMAL(10,2) DEFAULT 0.00
);
INSERT INTO orders(id, order_date) VALUES (1, '2022-01-01');
SELECT * FROM orders;
在上面的示例中,我们创建了一个订单表 orders,包括 id、order_date 和 total_amount 列。order_date 列声明为 NOT NULL,total_amount 列设置了 DEFAULT 0.00。在插入数据时,由于没有指定 total_amount 列的值,MySQL 将使用默认值 0.00。我们通过 SELECT 查询了插入的数据,可以看到 total_amount 列的值为默认值 0.00。
总结
在本文中,我们详细介绍了 MySQL 中的强制约束(mandatory),包括 NOT NULL 约束和 DEFAULT 约束。NOT NULL 约束用于确保列不接受 NULL 值,DEFAULT 约束用于为列指定默认值。合理使用这些约束可以确保数据的完整性和一致性,提高数据库的质量和可靠性。