您的位置:首页 > 数据库

T-SQL连接查询,基础连接理解

2013-05-30 09:20 537 查看
  

图形说明:





除运算



详细说明:

  

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

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

笛卡尔积

    当连接条件无效或被忽略,以及第一个表中所有行和第二个表中所有行都发生连接时,所有行的组合都出现,这种结果称为笛卡尔积。其实就是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



       
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: