Heim > Datenbank > MySQL-Tutorial > 数据库的各种连接查询你是否真了解

数据库的各种连接查询你是否真了解

WBOY
Freigeben: 2016-06-07 14:53:31
Original
1135 Leute haben es durchsucht

数据库的各种连接查询你是否真了解 下面就让我们来做个小测试,一一探查常用数据库的连接原理。 --数据测试环境准备: SQL create table t1(a int); Table created SQL create table t2(b int); Table created SQL insert into t1 values(1); 1 row inserted


数据库的各种连接查询你是否真了解

 

下面就让我们来做个小测试,一一探查常用数据库的连接原理。

--数据测试环境准备:

SQL> create table t1(a int);

 

Table created

SQL> create table t2(b int);

 

Table created

SQL> insert into t1 values(1);

 

1 row inserted

SQL> insert into t1 values(2);

 

1 row inserted

SQL> insert into t1 values(3);

 

1 row inserted

SQL> insert into t2 values(1);

   www.2cto.com  

1 row inserted

SQL> insert into t2 values(2);

 

1 row inserted

SQL> insert into t2 values(4);

 

1 row inserted

 

SQL> commit;

 

Commit complete

 

--内连接,符合条件的行列出,可以看作是两个表的交集

SQL> select t1.*,t2.* from t1 inner join t2 on t1.a=t2.b;

 

                                      A                                       B

--------------------------------------- ---------------------------------------

                                      1                                       1

                                      2                                       2

 

--交叉连接,即返回两个表的笛卡尔积

SQL> select t1.*,t2.* from t1 cross join t2;

                                      A                                       B

--------------------------------------- ---------------------------------------

                                      1                                       1

                                      1                                       2

                                      1                                       4

                                      2                                       1

                                      2                                       2

                                      2                                       4

                                      3                                       1

                                      3                                       2

                                      3                                       4

 

--最常用的连接查询,即从两个表的笛卡尔积两进行条件过滤,功能等同inner join,但是效率要底于inner join

SQL> select t1.*,t2.* from t1, t2 where t1.a=t2.b;

 

                                      A                                       B

--------------------------------------- ---------------------------------------

                                      1                                       1

                                      2                                       2

--全连接,符合条件行列出,不符合条件的行也列出,可以看作是两个表的交集

SQL> select t1.*,t2.* from t1 full join t2 on t1.a=t2.b;

 

         A          B

---------- ----------

         1          1

         2          2

         3 

                    4

  www.2cto.com  

--以最左边表的行数为基准,左表的记录将会全部表示出来,而右表只会显示符合搜索条件的记录,右表记录不足的地方均为NULL

SQL> select t1.*,t2.* from t1 left outer join t2 on t1.a=t2.b;

 

                                      A                                       B

--------------------------------------- ---------------------------------------

                                      1                                       1

                                      2                                       2

                                      3

 

--同上

SQL> select t1.*,t2.* from t1 left join t2 on t1.a=t2.b;

 

                                      A                                       B

--------------------------------------- ---------------------------------------

                                      1                                       1

                                      2                                       2

                                      3 

   www.2cto.com  

--以最右边表的行数为基准,右表的记录将会全部表示出来,而左表只会显示符合搜索条件的记录,左表记录不足的地方均为NULL

SQL> select t1.*,t2.* from t1 right outer join t2 on t1.a=t2.b;

 

                                      A                                       B

--------------------------------------- ---------------------------------------

                                      1                                       1

                                      2                                       2

                                                                              4

--同上

SQL> select t1.*,t2.* from t1 right join t2 on t1.a=t2.b;

 

                                      A                                       B

--------------------------------------- ---------------------------------------

                                      1                                       1

                                      2                                       2

                                                                              4

注意了:以后各种连接可不要乱用了哦。

 

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage