You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL CHECK约束考试疑问:为何正确选项是D而非A?

SQL CHECK约束逻辑解析:为什么选项D是正确答案?

题目规则回顾

现有Employees表,Country列长度固定3字符,State列最大长度30字符,规则要求:

  • 当Country为'USA'时,State必须是2个字符;
  • 当Country为其他值时,State长度可在0-30字符范围内任意取值。

各选项逻辑拆解

选项A:Country = 'USA' AND LEN(State) =2

这个约束的逻辑是只有Country为'USA'且State长度为2的数据才合法。但这会直接拒绝所有Country非'USA'的记录——因为非'USA'时Country = 'USA'为假,整个AND表达式为假,约束不通过,完全违反题目中“非USA时State长度任意”的要求,因此A是错误选项。

选项D:Country <> 'USA' OR LEN(State) =2

逻辑或(OR)的核心是只要任意一个条件为真,整个表达式就为真,对应规则的逻辑如下:

  • 当Country为'USA'时,Country <> 'USA'为假,此时必须满足LEN(State)=2才能让表达式为真,完美匹配“USA时State必须是2字符”的要求;
  • 当Country非'USA'时,Country <> 'USA'为真,无论State长度是多少(只要符合表本身的30字符限制),整个表达式都为真,符合“非USA时State长度无限制”的规则。

解答你的疑惑

你担心的“D允许'USA'和长度为4的'FILA'插入”是不存在的:当Country为'USA'时,Country <> 'USA'为假,此时必须满足LEN(State)=2才能让OR表达式为真。如果State长度为4,LEN(State)=2为假,整个表达式为假,约束会阻止这条数据插入。

其他错误选项快速分析

  • 选项B:Country = 'USA' OR LEN(State) =2:会禁止Country非'USA'且State长度不是2的记录,违反规则;
  • 选项C:Country <> 'USA' AND LEN(State) = 2:要求非USA时State必须是2字符,直接违反规则。

内容的提问来源于stack exchange,提问作者aleksa21

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 08:37:39