建站学 - 轻松建站从此开始!

建站学-个人建站指南,网页制作,网站设计,网站制作教程

当前位置: 建站学 > 数据库 > 数据库综合 >

SQL查询入门(中篇)(2)

时间:2010-04-13 14:15来源: 作者: 点击:
对于上面的查询语句,如果将on后面限制条件由等于改为大于: SELECT * FROM [Class] c inner join [Student] s on c.ClassIDs.StudentClassID 则结果从第一步的笛卡尔积中筛选出那些ClassID大于StudentClassID的 子

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

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

 

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

 

6

 

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

 

       关系演算

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

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

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

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

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

 

 

 

 

     4

 

外连接

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

     7 2

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

SELECT s.StudentName,c.ClassName 
        
  FROM [fordemo].[dbo].[Student] s
       inner join 
       [fordemo].[dbo].[Class] c
       on 
       s.StudentClassID=c.ClassID

 

 

 

 

   结果如下图:

 

 8

 

   可以看到,这个查询“丢失”了Eric..

   这时就需要用到外连接,外连接可以使连接表的一方,或者双方不必遵守on后面的连接限制条件.这里把上面的查询语句中的inner join改为left outer join:

SELECT s.StudentName,c.ClassName 
        
  FROM [fordemo].[dbo].[Student] s
       left outer join 
       [fordemo].[dbo].[Class] c
       on 
       s.StudentClassID=c.ClassID

 

  结果如下:

   9

    Eric又重新出现.

      右外连接

      右外连接和左外连接的概念是相同的,只是顺序不同,对于上面查询语句,也可以改成:

SELECT s.StudentName,c.ClassName 
        
  FROM [fordemo].[dbo].[Class] c
       right outer join 
       [fordemo].[dbo].[Student] s
       on 
       s.StudentClassID=c.ClassID

 

      效果和上面使用了左外连接的效果是一样的.

 

        全外连接

       全外连接是将左边和右边表每行都至少输出一次,用关键字”full outer join”进行连接,可以看作是左外连接和右外连接的结合.

(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片