news 2026/4/22 22:25:51

SQL约束解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SQL约束解析

约束分类:

NOT NULL 非空约束:字段必须有值

UNIQUE 唯一约束:值不能重复,但允许多个 NULL

PRINARY KEY 主键约束:既是 NOT NULL 又是 UNIQUE

DEFAULT 默认约束: 保存数据时.如果未指定该字段的值,则采用默认值

CHECK 检查约束:保证字段满足某一个值

FOREIGN KEY 外键约束:用来让两张表的数据之间建立连接,保证数据的一致性和完整性

外键完整语法:

建表时一起创建

CREATE TABLE 主表 ( id INT PRIMARY KEY, name VARCHAR(20) ); CREATE TABLE 从表 ( id INT PRIMARY KEY, pid INT, -- 外键级联动作写在 REFERENCES 后面 CONSTRAINT fk_从表_主表 -- 外键名自定义 FOREIGN KEY (pid) -- 从表列 REFERENCES 主表(id) -- 主表列 ON UPDATE CASCADE -- 主表更新,从表同步 ON DELETE SET NULL -- 主表删除,从表置空 );

表已存在,事后追加:

ALTER TABLE 从表 ADD CONSTRAINT fk_从表_主表 FOREIGN KEY (pid) REFERENCES 主表(id) ON UPDATE CASCADE ON DELETE SET NULL;

5 种级联动作对照表:

NO ACTION /RESTRICT:删除/更新 如果存在关联,则拒绝主表操作

CASCADE: 更新/删除 同步更新/同步删除

SET NULL:删除/更新 外键列设为 NULL(从表该列需允许 NULL)

SET DEFAULT:删除/更新 外键列设为默认值

-- 1. 主表:班级 CREATE TABLE t_class ( class_id INT PRIMARY KEY, cname VARCHAR(20) UNIQUE ); -- 2. 从表:学生 CREATE TABLE t_student ( stu_id INT PRIMARY KEY, sname VARCHAR(20) NOT NULL, class_id INT, age TINYINT CHECK (age BETWEEN 16 AND 30), -- 外键 CONSTRAINT fk_stu_class FOREIGN KEY (class_id) REFERENCES t_class(class_id) ON UPDATE CASCADE ON DELETE RESTRICT );
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 11:16:09

银河麒麟桌面操作系统USB存储设备禁用

【使用场景】 因为某些要求,需要禁用USB存储设备。 【操作步骤】 银河麒麟桌面操作系统上执行如下步骤: 步骤1.在/etc/modprobe.d/blacklist.conf文件里面最下面加入两行: blasklist uas blacklist usb_storage 步骤2.保存退出,运行update-initramfs -u 步骤3.重启系统。…

作者头像 李华
网站建设 2026/4/23 10:47:32

构建赋能增效的测试质量度量体系

为什么需要科学的测试质量度量? 在敏捷开发和DevOps普及的今天,软件测试已从单纯的缺陷发现转变为质量保障与风险管控的核心环节。然而,许多测试团队仍面临共性困境:测试价值难以量化、质量改进缺乏数据支撑、资源分配缺乏依据。…

作者头像 李华
网站建设 2026/4/23 13:59:06

FreeSWITCH开启silk编码及转码

eeSWITCH版本: 1.10.11SILK编码由Skype设计,是一种用于VoIP的宽带音频编解码器,它支持8khz、12khz、16khz、24khz四种不同的采样率。今天整理下FreeSWITCH使用silk编码进行通话及转码的笔记,希望对你有帮助。一、模块安装及配置1、…

作者头像 李华
网站建设 2026/4/23 10:48:28

自动化测试的7个误区:从业者必知陷阱与规避策略

自动化测试作为现代软件开发的重要环节,已广泛应用于提升效率、保障质量。然而,许多测试从业者在实施过程中,常陷入一些误区,导致自动化项目效果不佳甚至失败。本文基于行业实践,总结七个常见误区,分析其根…

作者头像 李华
网站建设 2026/4/23 14:01:40

构建可持续的自动化测试体系:从探索到自愈

阶段一:需求分析与可行性评估(探索期) 在启动任何自动化测试前,需明确定义自动化目标。此阶段核心任务包括: 业务场景优先级排序:使用四象限法将功能模块分为高频高价值、低频高价值、高频低价值、低频低…

作者头像 李华
网站建设 2026/4/23 14:01:52

分层与数据驱动:自动化测试架构的双重演化路径

随着敏捷开发与DevOps实践的普及,自动化测试已成为保障软件质量的核心环节。根据架构设计理念的差异,当前主流的自动化测试架构可划分为分层测试架构与数据驱动测试架构两类。这两类架构分别从职责分离和数据解耦两个维度解决了测试脚本的维护性、扩展性…

作者头像 李华