MySQL数据表约束设置指南
在MySQL中,数据表约束用于限制填入表中的数据格式或范围,以保证数据的准确性及有效性。常见的约束包括主键、外键、唯一、非空、默认值和自增等。本文将依次解析这些约束的含义及其在CREATE TABLE建表语句和ALTER TABLE修改语句中的具体实现方式。
一、主键约束 (PRIMARY KEY)
第1步:了解主键概念
主键(Primary Key)是唯一标识表中每一行记录的字段,具备两个核心特征:非空且唯一。虽然一个表可以有多个具有唯一性的“关键字”(如身份证号、手机号),但只能指定其中一个作为主键。主键一旦设定,必须保持不重复且不能为空。
注意:关键字不一定是主键,但主键一定是关键字。每个表最多只能有一个主键。
第2步:在建表时设置主键
在创建新表时,可直接在列定义后使用PRIMARY KEY子句指定主键。
-- 方式A:在列名后直接指定
CREATE TABLE Users(
User_id INT NOT NULL PRIMARY KEY,
User_name VARCHAR(20),
User_pwd VARCHAR(18)
);
-- 方式B:在列定义末尾统一声明主键
CREATE TABLE User(
User_id INT NOT NULL,
User_name VARCHAR(20),
User_pwd VARCHAR(18),
PRIMARY KEY (User_id)
);
上述两种写法效果一致,均成功建立主键。
第3步:在已存在表中添加主键
若建表初期未设置主键,可以通过ALTER TABLE语句事后补充。前提是目标字段目前的数据必须满足非空且唯一的要求,否则操作会报错。
-- 方式A:整体声明主键
ALTER TABLE user ADD PRIMARY KEY(User_id);
-- 方式B:针对特定字段修改为主键
ALTER TABLE users MODIFY User_id INT PRIMARY KEY;
二、外键约束 (FOREIGN KEY)
第4步:理解外键作用
外键用于建立并加强两个表数据之间的链接。拥有外键的表称为“从表”,被引用的表称为“主表”。从表中的外键字段值必须是主表主键中存在的值(或者为NULL)。一张表可以没有外键,也可以有多个外键。
第5步:在建表时设置外键
假设已有user表,现创建订单表dingdan,将用户ID设为外键:
CREATE TABLE dingdan (
DDid INT PRIMARY KEY NOT NULL,
User_id INT NOT NULL,
DDname VARCHAR(20) NOT NULL,
-- 设置外键约束,命名可选
CONSTRAINT fk FOREIGN KEY (User_id) REFERENCES user (User_id)
);
第6步:在已存在表中添加外键
使用ALTER TABLE向已有表添加外键关系:
ALTER TABLE student
ADD CONSTRAINT stfk
FOREIGN KEY (stid) REFERENCES teacher (tid);
风险提醒:建立主外键关联后,主表数据的删除和从表数据的插入将受到严格限制。如果主表中有记录被从表引用,则该主记录不能被随意删除,否则会引发错误。
三、唯一约束 (UNIQUE)
第7步:配置唯一性检查
唯一约束确保指定列中的所有数据各不相同。允许字段值为空(取决于具体实现),但不能出现重复值。
例如,要求用户的电子邮箱不能重复:
CREATE TABLE User (
User_id INT NOT NULL,
User_name VARCHAR(20),
User_pwd VARCHAR(18),
User_Email VARCHAR(40) UNIQUE
);
四、非空约束 (NOT NULL)
第8步:强制字段必填
非空约束规定该字段在插入数据时必须提供值,系统不允许其为 NULL。在实际设计中,常结合唯一约束一起使用。
例如,不仅邮箱要唯一,而且必须填写:
CREATE TABLE User (
User_id INT NOT NULL,
User_name VARCHAR(20),
User_pwd VARCHAR(18),
User_Email VARCHAR(40) UNIQUE NOT NULL
);
五、默认值约束 (DEFAULT)
第9步:设置缺失值的替代内容
当插入记录未给某字段赋值时,系统将自动使用默认值填充。
例如,为用户性别设置默认为“男”:
CREATE TABLE User (
User_id INT NOT NULL,
User_name VARCHAR(20),
User_pwd VARCHAR(18),
User_gender ENUM('男','女') DEFAULT '男'
);
六、自增属性 (AUTO_INCREMENT)
第10步:启用数值自动递增
通常配合主键使用。每当有新记录插入且该字段留空时,数据库会自动在上一次最大值的基础上加1,常用于生成流水号或主键ID。
CREATE TABLE User (
User_id INT AUTO_INCREMENT,
User_name VARCHAR(20),
User_pwd VARCHAR(18),
User_gender ENUM('男','女') DEFAULT '男',
PRIMARY KEY (User_id)
);
注:开启自增后,即使该字段设为主键,在插入数据时也可以省略该字段的值。
以上就是MySQL数据库如何给表设置约束的详细教程。掌握各类约束条件有助于提升数据表的健壮性与规范性,更多关于数据库优化与设计的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









