SQlite:列级,表级约束 - 教程

news/2026/1/23 16:16:14/文章来源:https://www.cnblogs.com/ljbguanli/p/19522866

SQlite:列级,表级约束 - 教程

目录

先明确:什么是“列级”和“表级”?

场景1:列级约束——管好单个字段的规则

场景2:表级约束——管好多个列的组合规则

最典型的表级约束:复合主键

总结:什么时候用列级/表级?


用“电商订单系统”的场景来理解“列级约束”和“表级约束”的区别,你会发现它们本质是“约束作用范围”的不同——有的约束只管单个列,有的约束需要管多个列。

先明确:什么是“列级”和“表级”?

简单说:

  • 列级约束:绑在某一个列上,只对这一列生效(比如“手机号不能为空”);

  • 表级约束:不绑在单个列上,对表中多个列的组合生效(比如“同一用户不能在同一时间下两单”)。

场景1:列级约束——管好单个字段的规则

假设你要设计一张user(用户表),需要保证:

  • 用户ID(user_id)唯一且非空(主键);

  • 手机号(phone)不能为空,且不能重复(避免一个手机号注册多个账号);

  • 年龄(age)必须大于0(不能是负数或0)。

这些规则都只针对单个列,适合用列级约束(在列定义时直接加规则):

CREATE TABLE user (user_id INTEGER PRIMARY KEY, -- 列级:主键(唯一+非空)phone TEXT NOT NULL UNIQUE,  -- 列级:非空+唯一(单个列的规则)age INTEGER CHECK(age > 0),  -- 列级:年龄必须>0(单个列的范围)name TEXT
);
  • 特点:每个约束都跟在具体列后面,只限制这一列的数据(比如phoneNOT NULL不会影响name列)。

  • 注意:NOT NULL只能用列级约束(因为它本质就是限制“某一列不能空”,不可能涉及多列)。

场景2:表级约束——管好多个列的组合规则

再设计一张order(订单表),需要保证:

  • 订单由“用户ID(user_id)+ 下单时间(order_time)”共同标识(同一用户同一时间不能下两单);

  • 订单的“支付金额(pay_amount)”必须大于“商品金额(goods_amount)”(避免支付金额小于商品金额的错误)。

这些规则涉及多个列,必须用表级约束(在所有列定义完后,单独写规则):

CREATE TABLE "order" (order_id INTEGER,user_id INTEGER,order_time TEXT,goods_amount REAL, -- 商品金额pay_amount REAL,   -- 支付金额-- 表级约束:多个列的组合规则PRIMARY KEY (order_id), -- 单列主键也可以放表级(但习惯放列级)UNIQUE (user_id, order_time), -- 表级:user_id+order_time组合唯一CHECK (pay_amount >= goods_amount) -- 表级:两列数值比较
);
  • 为什么用表级?

    • UNIQUE (user_id, order_time):限制的是“两列组合”不能重复(单个user_idorder_time可以重复),列级约束做不到(列级只能限制单个列唯一);

    • CHECK (pay_amount >= goods_amount):需要比较两个列的值,列级约束只能检查当前列(比如pay_amount单独CHECK(pay_amount>0)),不能跨列比较。

最典型的表级约束:复合主键

比如“用户-课程选课表”(student_course),需要“学生ID+课程ID”组合唯一(一个学生不能重复选同一门课)。这是必须用表级约束的场景:

CREATE TABLE student_course (student_id INTEGER,course_id INTEGER,score INTEGER,-- 表级:复合主键(只能表级定义)PRIMARY KEY (student_id, course_id)
);
  • 为什么不能用列级?

    列级主键只能绑一个列(比如student_id INTEGER PRIMARY KEY),但这里需要两个列组合起来当主键,所以必须在表级定义。

总结:什么时候用列级/表级?

约束类型

列级约束(单个列)

表级约束(多个列)

适用场景

只限制某一列的规则(如非空、单列唯一、单列范围)

限制多列组合的规则(如复合主键、多列唯一、跨列比较)

典型例子

phone TEXT NOT NULL UNIQUE

UNIQUE (user_id, order_time)、复合主键

特殊点

NOT NULL只能用列级

复合约束(多列)必须用表级

面试时记住核心区别:列级管单个列,表级管多列组合。遇到“复合主键”“多列唯一”“跨列检查”的场景,直接说用表级约束,这就是得分点~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1205643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2026汉中电动伸缩门厂家排名:致信门控领衔,靠谱厂家优选指南

2026汉中电动伸缩门厂家排名:致信门控领衔,靠谱厂家优选指南在现代安防建设体系中,电动伸缩门是工矿企业、园区、学校等场景的核心出入保障设施,其品质稳定性、安防性能与服务保障直接影响场所管理效率与安全。汉中…

汉台区致信门控门窗厂:汉中电动伸缩门实力之选,品质服务双保障

汉台区致信门控门窗厂:汉中电动伸缩门实力之选,品质服务双保障在汉中本地工矿企业、园区、学校、住宅小区等各类场景的安防与出入管理中,汉中电动伸缩门凭借伸缩灵活、操作便捷、安防性强的核心优势,成为不可或缺的…

零件的三维建模及自动编程

第三章 零件实体特征建模 3.1 建模软件UG的介绍 UG是集CAD/CAE/CAM于一体的三位参数化软件,是当今世界最先进的计算机辅助设计、分析和制造软件,广泛应用与航空、航天、汽车、造船、通用机械和电子等工业领域。 UG软件不仅具有强大的实体造型、曲面造型、…

阶梯轴车削加工及数控车削机床仿真的研究

第3章 数控加工关键技术的研究 3.1 基本概念 数控编程: 在数控机床上加工零件,首先要进行程序编制,将零件的加工顺序、工件与刀具相对运动轨迹的尺寸数据、工艺参数(主运动和进给运动速度、切削深度等)以及辅助操作等…

平行轴凸轮间歇分度装置设计

第二章 凸轮机构的分类2.1 按两活动构件之间的相对运动特性分类 平面凸轮机构 两活动构件之间的相对运动为平面运动的凸轮机构。其按凸轮形状又可分为盘形凸轮、移动凸轮。其中,盘形凸轮为凸轮的基本形式。是一个相对机架作定轴转动或为机架且具有变化向径的盘形构件…

配合件数控加工工艺分析与仿真

第二章 数控编程的关键技术 计算机辅助制造CAM的含义有广义和狭义之分:从广义上讲,计算机辅助制造是指利用计算机辅助完成制造过程的全部工作环节,即从原材料到产品的全部制造过程,包括直接制造过程和间接制造过程。内容涉及计算…

代码重组输出

{"code": 0,"msg": "数据重组优化成功","output": {"audioData": "{  \"audio_list\":\"[{\\\"audio_url\\\":\\\"audio1.m…

组合机床设计

第二章 工艺方案的拟定 2.1 梳棉机箱体结合件零件的工艺技术分析 梳棉机箱体结合件零件如图1-1: 图2-l 梳棉机箱体结合件图 主要技术参数如下: 2.1.1面: (1)上下两平面的光洁度 (2)两侧面、两…

2025年江夏区华新水泥厂家口碑排行榜,华新水泥公司精选实力品牌榜单发布

近年来,随着江夏区城市化进程加速,建筑工程对水泥材料的质量、环保性能及配套服务提出更高要求。然而,市场上部分厂家因技术滞后、品控不足或服务缺失,导致工程质量隐患频发。在此背景下,如何筛选出兼具技术实力、…

寻找持久香氛?这些扩香器厂家的产品或许适合你,香氛香薰机/香氛设备/油性香氛精油/挂式香薰/高铁站香薰,扩香器厂家哪个好

行业现状与扩香器核心优势 随着消费者对生活品质与空间氛围的追求升级,扩香器市场正经历从“功能满足”到“体验升级”的转型。传统香薰依赖自然挥发,存在香气不均、留香短暂等问题;而智能扩香器通过物联网技术、精…

第 478 场周赛Q1——3759. 统计合格元素的数目

题目链接:3759. 统计合格元素的数目(中等) 算法原理: 解法:双指针 47ms击败49.92% 时间复杂度O(Nlogn) ①边界条件: 如果k0,说明没有元素比它大,直接返回长度n 如果n0,直…

什么是箭头函数 (Arrow Function)?跟一般的函数有什么差別?

文章目录什么是箭头函数 (Arrow Function)?跟一般的函数有什么差別?1.语法更为简单2.this值和一般函数不同3.没有自己的arguments4.不能作为构造函数使用什么是箭头函数 (Arrow Function)?跟一般的函数有什么差別? 箭头函数和一般…

导师推荐2026 TOP10 AI论文软件:自考毕业论文写作全测评

导师推荐2026 TOP10 AI论文软件:自考毕业论文写作全测评 2026年自考论文写作工具测评:为何需要一份权威榜单? 随着人工智能技术的不断进步,AI论文软件逐渐成为自考学生提升写作效率、优化内容质量的重要辅助工具。然而&#xff0c…

2026年苏州装修公司排名:聊聊金螳螂家装修团队专业吗?

本榜单依托全维度市场调研与真实业主口碑,深度筛选出五家家装领域标杆企业,聚焦业主关心的团队专业度、设计水平、消费透明度三大核心痛点,为家装需求者提供客观依据,助力精准匹配适配的服务伙伴。 TOP1 推荐:金螳…

现金流2.5亿,市占率第一的德适生物公司怎么样,值得投资吗?

在AI医疗赛道加速扩容、国产医疗科技持续突破的背景下,国内染色体核型分析龙头、国家级专精特新“小巨人”企业德适生物,正以清晰的成长路径冲刺港交所,其在财务表现、技术创新、市场布局及人才储备等方面的多重核心…

实测5个免费降ai率工具推荐,2026届毕业生必看!降低ai率更轻松

说实话,最近这几个月,大家的日子都不好过。学校查重系统升级,降ai成了毕业季最大的拦路虎。 很多同学跟我吐槽,自己辛辛苦苦写的,一查论文降aigc全是红的。为了降低ai率,头发都掉了一把。市面上到处都是免费降ai…

深入解析:《Python 装饰器模式与代理模式深度剖析:从语法技巧到架构实战》

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

VP引导定位软件-下相机九点标定

VP引导定位软件-下相机九点标定

C的qsort()_C++STL的sort()_priority_queueStruct, vectorStruct, cmp 的cmp()函数排序规则总结辨析

邪门的记忆方法 qsort函数的cmp用item1>item2比较,sort函数的cmp用item1<item2比较,这样排序完是升序,反之降序 因为qsort和sort根据返回值有相反的判断。qsort在cmp返回值大于0会换顺序,而sort在cmp返回值大…