数据库约束具体语法怎么写?不同约束类型示例有哪些?

数据库约束是关系型数据库中确保数据完整性和一致性的重要机制,它们通过定义规则来限制表中数据的取值范围、格式或关联关系,从而防止无效或错误数据的插入、更新或删除,合理使用数据库约束能够显著提升数据质量,减少应用程序层的校验逻辑,以下是几种常见约束的写法及其应用场景。

数据库约束具体语法怎么写?不同约束类型示例有哪些?

主键约束(PRIMARY KEY)

主键约束用于唯一标识表中的每一行记录,其值必须唯一且不能为空,每个表只能有一个主键,但可以由多个列组合而成(复合主键),在创建表时定义主键的语法如下:

CREATE TABLE 表名 (
    列名1 数据类型 PRIMARY KEY,
    列名2 数据类型,
    ...
);

若需修改已存在的表添加主键,可使用:

ALTER TABLE 表名 ADD PRIMARY KEY (列名);

用户表中的user_id通常作为主键:

CREATE TABLE users (
    user_id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL
);

AUTO_INCREMENT(MySQL)或IDENTITY(SQL Server)可自动生成唯一递增的数值。

唯一约束(UNIQUE)

唯一约束确保某列或列组合的值在表中唯一,但允许有空值(空值不参与唯一性比较),一个表可定义多个唯一约束,语法与主键类似:

CREATE TABLE 表名 (
    列名1 数据类型,
    列名2 数据类型 UNIQUE,
    ...
);

或通过ALTER TABLE添加:

ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE (列名);

邮箱地址通常需要唯一:

CREATE TABLE users (
    user_id INT PRIMARY KEY,
    email VARCHAR(100) UNIQUE
);

非空约束(NOT NULL)

非空约束强制列必须包含值,不允许为空,可在创建表时直接定义列的NOT NULL属性:

CREATE TABLE 表名 (
    列名 数据类型 NOT NULL,
    ...
);

或修改表结构:

数据库约束具体语法怎么写?不同约束类型示例有哪些?

ALTER TABLE 表名 MODIFY 列名 数据类型 NOT NULL;

用户名通常不能为空:

CREATE TABLE users (
    username VARCHAR(50) NOT NULL
);

默认约束(DEFAULT)

默认约束为列指定默认值,当插入数据时未提供该列的值,则自动使用默认值,语法如下:

CREATE TABLE 表名 (
    列名 数据类型 DEFAULT 默认值,
    ...
);

或通过ALTER TABLE添加:

ALTER TABLE 表名 ALTER 列名 SET DEFAULT 默认值;

用户注册时间默认为当前时间:

CREATE TABLE users (
    register_time DATETIME DEFAULT CURRENT_TIMESTAMP
);

检查约束(CHECK)

检查约束用于限制列的值必须满足特定条件,例如年龄必须大于0,语法如下:

CREATE TABLE 表名 (
    列名 数据类型 CHECK (条件表达式),
    ...
);

或添加命名检查约束:

ALTER TABLE 表名 ADD CONSTRAINT 约束名 CHECK (条件);

年龄范围限制:

CREATE TABLE users (
    age INT CHECK (age > 0 AND age <= 120)
);

外键约束(FOREIGN KEY)

外键约束用于建立两个表之间的关联关系,确保子表(从表)的引用列值在父表(主表)的列中存在,或为空,语法如下:

CREATE TABLE 子表 (
    列名 数据类型,
    FOREIGN KEY (列名) REFERENCES 父表(列名)
);

或通过ALTER TABLE添加:

数据库约束具体语法怎么写?不同约束类型示例有哪些?

ALTER TABLE 子表 ADD CONSTRAINT 约束名 FOREIGN KEY (列名) REFERENCES 父表(列名);

订单表引用用户表:

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    user_id INT,
    FOREIGN KEY (user_id) REFERENCES users(user_id)
);

外键还可定义ON DELETEON UPDATE动作(如CASCADESET NULL)来处理级联操作。

数据库约束是保障数据可靠性的基石,开发者应根据业务需求合理选择约束类型,主键和唯一约束维护唯一性,非空约束确保必填字段,默认约束简化数据插入,检查约束限制数据范围,外键约束维护表间关联,在定义约束时,需注意性能影响,例如外键约束可能降低写入速度,但能显著减少数据不一致问题。


相关问答FAQs

Q1: 主键约束和唯一约束有什么区别?
A1: 主键约束(PRIMARY KEY)要求列值唯一且不能为空,每个表只能有一个主键;而唯一约束(UNIQUE)仅要求值唯一,允许有空值,且一个表可定义多个唯一约束,主键通常用于标识记录,而唯一约束常用于业务上需要唯一标识的字段(如邮箱、身份证号)。

Q2: 如何删除或修改已存在的约束?
A2: 删除约束需通过ALTER TABLE语句,语法为ALTER TABLE 表名 DROP CONSTRAINT 约束名(MySQL中主键约束为DROP PRIMARY KEY),修改约束通常需先删除旧约束,再添加新约束,修改列的非空约束需先删除NOT NULL(若存在),再重新添加:

ALTER TABLE 表名 MODIFY 列名 数据类型 NULL; -- 删除NOT NULL
ALTER TABLE 表名 MODIFY 列名 数据类型 NOT NULL; -- 添加NOT NULL

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-11-14 11:30
下一篇 2025-11-14 11:36

相关推荐

  • 邮件服务器宕机,导致企业通信中断,如何确保紧急业务不延误?

    应对策略与预防措施邮件服务器宕机的原因分析邮件服务器宕机可能由多种原因导致,以下列举几种常见原因:硬件故障:服务器硬件设备如CPU、内存、硬盘等出现故障,导致服务器无法正常运行,软件故障:操作系统、邮件系统软件等出现异常,导致服务器崩溃,网络故障:网络设备故障或网络攻击导致邮件服务器无法正常访问,负载过高:邮件……

    2026-01-16
    004
  • 国内香港云主机提供商哪家好?国内香港云主机哪个品牌好用性价比高

    国内香港云主机提供商哪家好?综合性能、稳定性、服务响应与性价比四大维度,阿里云香港节点与腾讯云香港地域为当前最优选,二者在合规性、技术成熟度及企业级支持方面显著领先,适合中大型业务部署;若侧重成本敏感型项目,UCloud优刻得香港节点与华为云香港可用区亦具备高性价比优势,核心评判标准:四维评估体系选择国内香港云……

    2026-04-16
    006
  • WAF限制IP访问次数的原理与配置方法是什么?

    WAF(Web应用防火墙)作为Web安全防护的核心组件,通过限制IP访问次数这一关键策略,有效应对高频恶意请求,保障业务系统的稳定运行,这一功能并非简单的“一刀切”阻断,而是基于精细化规则的动态管理,能够在识别异常行为的同时,最大限度减少对正常用户体验的影响,功能定位:从被动防御到主动拦截传统安全设备多依赖特征……

    2025-11-20
    0020
  • 网易服务器中心为何能支撑亿级用户稳定运行?

    网易服务器中心作为网易集团技术架构的核心枢纽,承担着支撑全球数亿用户访问、保障业务稳定运行的关键使命,这一基础设施不仅承载着《梦幻西游》《阴阳师》等国民级游戏的实时交互,还支撑着网易云音乐、网易邮箱、有道词典等多元服务的日常运转,其设计理念以“高可用、弹性扩展、安全可控”为准则,通过分布式架构与智能化运维体系……

    2025-11-29
    0023

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信