zoukankan      html  css  js  c++  java
  • TSQL连接查询,基础连接理解

      

    图形说明:

    除运算

    详细说明: 

      

      使用连接查询时,必须使用from子句中指定两个或两个以上的表。连接查询又称多表查询。

      使用连接查询时应该在列名前加表名作为前缀。如果不同表之间列名不同,可以不加表名前缀,如果不同表名存在相同的列名,则必须加前缀。

    1. 笛卡尔积

        当连接条件无效或被忽略,以及第一个表中所有行和第二个表中所有行都发生连接时,所有行的组合都出现,这种结果称为笛卡尔积。其实就是A X B的组合数。非常庞大不建议使用

    (1)       patient_queue表中总数为2700

          sql》select count(*) from patient_queue

          count(*)

          2700

    (2)       doctor表中总数为519

          sql》select count(*) from doctor

          count(*)

          519

    (3)       笛卡尔积patient_queue X doctor记录总数为2700*519=1401300

          Sql * from patient_queue,doctor

      2.等值连接

        两张表中必须有相等的列值,一般作为where子句的条件,连接运算符为“=”,通常这样的条件包含一个主键和一个外键

        语法:

        Select table1.column,table2.column

        From table1,table2

        Where table1.column1=table2.cloumn2

        使用相等连接执行主从查询

      3.不等值连接(一般连接)

        等值连接运算符为“=”,如果采用其他运算符则称非等值连接

      4.自连接

        把某个表和其自身相连接(树形结构用的比较多)

      5.内连接和外连接

        内连接返回满足条件的记录,外连接返回满足和不满足条件的记录,等值连接是内连接,外连接包含左外连接、右外连接和完全外连接。

        语法

        Select table1.column,table2.column

        From table1 [inner | left | right | full ] join table2

        On table1.column1=table2.column2

      5.1内连接

               显示table1和table2表中满足列相等条件的共同记录(table1∩table2)

                                      

               例:查询部门编号为10的雇员姓名和部门名称

               Sql》select emp.ename,dept.dname,dept.deptno

                        From dept inner join emp

                        On dept.deptno=emp.deptno and dept.deptno=10

                       

      5.2 左外连接

        显示table1表和table2表满足列相等条件的共同记录,以及左边表的其他记录(table1 以table1表为主列数)

                               

         例:显示部门编号为10的部门名称、雇员名称,以及其他部门名称

          SQL》select dname,ename

            From dept left join emp

            On dept.deptno=emp.deptno and dept.deptno=10

                                                  

        例2:使用(+)操作符执行左外连接。

          (+)操作符要放在行数较少的一端。本例中部门多 雇员少,(+)放在雇员一边

            SQL》select dname,ename

            From dept,emp

            Where dept.deptno=emp.deptno(+) and emp.deptno(+)=10

        5.3 右外连接

                     显示table1表和table2表满足列相等条件的共同记录,以及右边table2表的其他记录。(table2 以table2表为主列数)

                                        

        例1:显示部门编号为10的部门名称、雇员名称,以及其他雇员姓名

          SQL》select dname,ename

            From dept right join emp         

             On dept.deptno=emp.deptno and deptno=10

                            

                                   

           例2:使用(+)操作符执行右外连接

            (+)操作符要放在行数较少的一端,本例中雇员多 部门少,(+)放在部门一边。

               SQL》select dname,ename

                From dept,emp

                Where dept.deptno(+)=emp.deptno and dept.deptno(+)=10

               5.4 完全外连接

                        显示table1表和table2表满足列相等条件的共同记录,以及table1表和table2表的其他记录(table1∪table2)

                       

                        例:显示部门编号为10的部门名称、雇员名称,以及其他部门名称和其他雇员名称

                        SQL》select dname,ename

                                 From dept full join emp

                                 On dept.deptno=emp.deptno and deptno=10

                       

           

    转载请注明出处,感谢。
    作者:李宏旭
    阅罢此文,如果您觉得本文不错并有所收获,请【打赏】或【推荐】,也可【评论】留下您的问题或建议与我交流。
    你的支持是我不断创作和分享的不竭动力!
  • 相关阅读:
    IOS8修改状态栏颜色
    iOS文件存储路径规定
    iOS+HTML5
    调用电话/获取通讯录
    iOS高级必备
    CoreData
    IOS 中的CoreImage框架
    CoreText
    CoreGpaphics
    iOS多线程 NSThread/GCD/NSOperationQueue
  • 原文地址:https://www.cnblogs.com/bjlhx/p/3107464.html
Copyright © 2011-2022 走看看