θ Some 与 θ All 子查询

前置:https://blog.csdn.net/jaihk662/article/details/80144010

注:所有的下划线+斜体语句都是非必须语句


为什么需要子查询?

现实中,很多情况需要进行下述条件的判断

  • 集合成员资格:某一元素是否是某一个集合的成员
  • 集合之间的比较:某一个集合是否包含另一个集合
  • 集合基数的测试:测试集合是否为空、测试集合是否存在重复元组


θ some 子查询:

SQL语句:表达式 θ some (子查询)

文字描述:如果表达式的值与子查询结果的某些(至少一个)值相比较满足θ关系,表达式结果为真

θ all 子查询:

SQL语句:表达式 θ all (子查询)

文字描述:如果表达式的值与子查询结果的所有值相比较满足θ关系,表达式结果为真


例子:①找出工资最低的教师姓名

Select Tname From Teacher
Where Salary<=all(Select Salary From Teacher);

②找出张三同学成绩最低的课程号

θ Some 与 θ All 子查询_第1张图片

为什么子查询中不需要限制名字是张三呢?因为"S#"并不是子查询中的局部变量!他已经被限制了对应的name = "张三"


等价变换:

表达式 = some (子查询)     →     表达式 in (子查询)

表达式 <> all (子查询)     →     表达式 not in (子查询)


你可能感兴趣的:(#,数据库)