Rumah >pangkalan data >tutorial mysql >数据库查询内外连接

数据库查询内外连接

WBOY
WBOYasal
2016-06-07 14:53:441613semak imbas

数据库查询内外连接 create table tmp3 ( age int, name char(100) ) GO create table tmp3 { age int, made char(100) } GO www.2cto.com insert into tmp1 values(10,liwei) insert into tmp1 values(11,lijing) insert into tmp1 values(12,lijia) insert


数据库查询内外连接

 

create table tmp3 

age int, 

name char(100) 

GO 

 

create table tmp3 

age int, 

made char(100) 

GO 

  www.2cto.com  

insert into tmp1 values(10,'liwei') 

insert into tmp1 values(11,'lijing') 

insert into tmp1 values(12,'lijia') 

 

insert into tmp3 values(10,'liwei') 

insert into tmp3 values(12,'lijing') 

insert into tmp3 values(14,'lijia') 

 

--内连接:从结果中删除其他被连接表中没有匹配行的所有行 

select * from tmp1,tmp3 where tmp1.age = tmp3.age 

select * from tmp1 join tmp3 on tmp1.age = tmp3.age 

 

age     name       age  name 

10 liwei      10  liwei                                   

12 lijia      12  lijing                                                        

 

--左外连接:保留第一个表中的所有行,但只包含第二个表与第一表匹配的行,第二个表相应的空行被放入NULL值 

select * from tmp1 left join tmp3 on tmp1.age = tmp3.age 

10 liwei 10       liwei                           

11 lijing NULL NULL 

12 lijia 12       lijing                                                                                              

--右外连接:保留了第二个表的所有行,但只包含第一个表与第二个表匹配的行,第一个表相应行被放入NULL值 

select * from tmp1 right join tmp3 on tmp1.age = tmp3.age 

10 liwei  10   liwei      

12 lijia 12   lijing          

NULL NULL 14   lijia   

  www.2cto.com  

--全外连接:把两个表的所有行都显示在结果表周苏红,并尽可能多的匹配数据和连接条件 

select * from tmp1 full join tmp3 on tmp1.age = tmp3.age 

10 liwei   10  liwei                                     

12 lijia   12  lijing          

NULL NULL 14 lijia                         

11 lijing NULL NULL 

 

--交叉连接(笛卡尔积):两个表的记录进行交叉组合。其中不能有on条件。 

 

select * from tmp1 cross join tmp3 

10 liwei   10  liwei                   

11 lijing  10  liwei 

12 lijia   10  liwei                               

10 liwei   12  lijing                             

11 lijing  12  lijing                        

12 lijia   12  lijing                              

10 liwei   14  lijia                               

11 lijing  14  lijia                               

12 lijia   14  lijia 

 

create table student 

student_no int, 

name char(100), 

group_no int 

 

insert into student values(100,'liwei',99) 

insert into student values(101,'lijia',100) 

insert into student values(102,'lijing',101) 

  www.2cto.com  

--自连接:指同一个表自身与自身进行连接。如果同一时间需要一个表中两个不同行的信息(一般数据库操作每次只操作其中一行的多列),则需要将表与自身连接。为了更好地理解自身连接,用户可以把一个表想象成两个独立的表。而在from子句中表被列出了两次。 

 

select a.student_no,a.name,b.student_no as 组长编号,b.name as 组长名称 from student a,student b where a.group_no = b.student_no 

student_no name    组长编号 组长名称 

101 lijia   100     liwei                             

102 lijing  101     lijia

 

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn