1. 程式人生 > >Sql Server數據庫之多表查詢

Sql Server數據庫之多表查詢

連接 lec bsp n) creat 笛卡爾 insert cross val

一.連接查詢

  概念:根據兩個表或多個表的列之間的關系,從這些表中查詢數據

  目的:實現多表查詢操作

  語法:From join_table join_type join_table[ON(join_condition)]

      join_table:連接的表名

      join_type:連接類型

      join_condition:連接條件

  連接類型:內連接,外連接,交叉連接

二.內連接

  1.等值連接

    概念:在連接條件中使用"="運算符,其查詢結果中列出被連接表中的所有列,包括其中的重復列

    示例:

 1 create
table student 2 ( 3 studentId int not null primary key, 4 studentName nvarchar(20) not null, 5 classId int not null 6 ) 7 create table class 8 ( 9 classId int not null primary key, 10 className nvarchar(20) not null 11 ) 12 insert into student values(1,嶽雲鵬,1);
13 insert into student values(2,郭德綱,1); 14 insert into student values(3,郭麒麟,1); 15 insert into student values(4,孫越,2); 16 insert into student values(5,於謙,2); 17 insert into student values(6,閻鶴翔,2); 18 insert into class values(1,逗哏班); 19 insert into class values(2,捧哏班); 20 select *
from student s inner join class c on s.classId = c.classId

技術分享圖片

  2.不等值連接

    概念:在連接條件中使用除等號之外的運算符

    示例:

1 select * from student s inner join class c on s.classId != c.classId

技術分享圖片

三.外鏈接

  1.左連接

    左表結構:

      技術分享圖片

    右表結構:

      技術分享圖片

    左連接查詢:

select * from student s left join class c on s.classId = c.classId

     查詢結果:

      技術分享圖片    

  總結:左連接:返回左表中的所有行,如果左表行在右表中沒有匹配行,則結果中右表中的列返回控制

  2.右連接

     右連接查詢: 

      

select * from student s right join class c on s.classId = c.classId

     查詢結果:

      技術分享圖片

   總結:右連接:恰與左連接相反,返回右表中的所有行,如果右表中行在左表中沒有匹配行,則結果中左表中的列返回空值。

  3.全連接

    全連接查詢

select * from student s right join class c on s.classId = c.classId

    查詢結果

      技術分享圖片

    總結:全連接:返回左表和右表中的所有行,當某行在另一表中沒有匹配行,則靈異表中的列返回空值

四.交叉連接(笛卡爾積)

  1.不帶where子句

    執行交叉連接:

select * from student cross join class

    查詢結果:

      技術分享圖片

  2.帶where子句

    執行交叉連接:

select * from student s cross join class c where s.classId = c.classId

    查詢結果:

技術分享圖片  技術分享圖片

    

  

Sql Server數據庫之多表查詢