来自 计算机教程 2020-03-12 09:15 的文章
当前位置: 美洲杯冠军竞猜 > 计算机教程 > 正文

SQL查询入门(中篇)

虽然上面连接后的表并没有什么实际意义,但这里仅仅作为DEMO使用:-) 关系演算 上面笛卡尔积的概念是关系代数中的概念,而我在前一篇文章中提到还有关系演算的查询方法.上面的关系代数是分布理解的,上面的语句推导过程是这样的:“对表Student和Class进行内连接,匹配所有ClassID和StudentClassID相等行,选择所有的列” 而关系演算法,更多关注的是我想要什么,比如说上面同样查询,用关系演算法思考的方式是“给我找到所有学生的信息,包括他们的班级信息,班级ID,学生ID,学生姓名” 用关系演算法的SQL查询语句如下: 复制代码 代码如下: SELECT * FROM [Class] c , [Student] s where c.ClassID=s.StudentClassID 当然,查询后返回的结果是不会变的: 外连接 假设还是上面两个表,学生和班级.我在学生中添加一个名为Eric的学生,但出于某种原因忘了填写它的班级ID: 当我想执行这样一条查询:给我取得所有学生的姓名和他们所属的班级:

外连接

     假设还是上面两个表,学生和班级.我在学生中添加一个名为Eric的学生,但出于某种原因忘了填写它的班级ID:

     图片 1 图片 2

     当我想执行这样一条查询:给我取得所有学生的姓名和他们所属的班级:

引言 在前篇文章中(SQL查询入门,最终,得到选择后的表的子集

       关系演算

       上面笛卡尔积的概念是关系代数中的概念,而我在前一篇文章中提到还有关系演算的查询方法.上面的关系代数是分布理解的,上面的语句推导过程是这样的:“对表Student和Class进行内连接,匹配所有ClassID和StudentClassID相等行,选择所有的列”

      而关系演算法,更多关注的是我想要什么,比如说上面同样查询,用关系演算法思考的方式是“给我找到所有学生的信息,包括他们的班级信息,班级ID,学生ID,学生姓名”

     用关系演算法的SQL查询语句如下:

SELECT *
  FROM [Class] c
       ,
       [Student] s
  where c.ClassID=s.StudentClassID

     当然,查询后返回的结果是不会变的:

     图片 3

当然,内连接on后面的限制条件不仅仅是等号,还可以使用比较运算符,包括了、=、=、、!、!和。当然,限制条件所涉及的两个列的数据类型必须匹配. 对于上面的查询语句,如果将on后面限制条件由等于改为大于: 复制代码 代码如下: SELECT * FROM [Class] c inner join [Student] s on c.ClassIDs.StudentClassID 则结果从第一步的笛卡尔积中筛选出那些ClassID大于StudentClassID的子集:

内连接

      如果分步骤理解的话,内连接可以看做先对两个表进行了交叉连接后,再通过加上限制条件(SQL中通过关键字on)剔除不符合条件的行的子集,得到的结果就是内连接了.上面的图中,如果我加上限制条件

      对于开篇中的两个表,假使查询语句如下:

SELECT *
  FROM [Class] c
       inner join 
       [Student] s
       on c.ClassID=s.StudentClassID

    可以将上面查询语句进行分部理解,首先先将Class表和Student表进行交叉连接,生成如下表:

    图片 4

     然后通过on后面的限制条件,只选择那些StudentClassID和ClassID相等的(上图中划了绿色的部分),最终,得到选择后的表的子集

     图片 5

  

     当然,内连接on后面的限制条件不仅仅是等号还可以使用比较运算符,包括了>(大于)、>=(大于或等于)、<=(小于或等于)、<(小于)、!>(不大于)、!<(不小于)和<>(不等于)。当然,限制条件所涉及的两个列的数据类型必须匹配.

     对于上面的查询语句,如果将on后面限制条件由等于改为大于:

SELECT *
  FROM [Class] c
       inner join 
       [Student] s
       on c.ClassID>s.StudentClassID

     则结果从第一步的笛卡尔积中筛选出那些ClassID大于StudentClassID的子集:

图片 6

    虽然上面连接后的表并没有什么实际意义,但这里仅仅作为DEMO使用:-)

本文由美洲杯冠军竞猜发布于计算机教程,转载请注明出处:SQL查询入门(中篇)

关键词: