hg888皇冠手机登录

二零一六/09/29 SQL中的join

十二月 11th, 2019  |  www.hg888.com

Sql的多表连接关系有:内连接、外接连和时断时续连接。

1.2 本篇随笔内容概要

 

以下为测量检验例子。 1.先是成立两张有的时候表并录入测量试验数据: 复制代码 代码如下: create table #temptest1 (
id int, name1 varchar create table #temptest2 ( id int, name1 varchar

先创制几个用于演示的表:

1.3 本篇文章内容概括

1.建表

首先建tb_a并插入数据。

 

1 createtable
tb_a(symbol varchar2(32) , sname varchar2(32)); 2 insertinto
tb_a(symbol, sname) values
(‘A’,’B’);
3 insertinto
tb_a(symbol, sname) values
(‘G’,’H’);

 

tb_a表构造如下

www.hg888.com 1

随时建立tb_b并插入数据

 

1 createtable
tb_b(symbol varchar2(32) , tdate varchar2(32) ,tclose varchar2(32)); 2 insertinto
tb_b(symbol, tdate, tclose) values
(‘A’,’C’,’D’);
3 insertinto
tb_b(symbol, tdate, tclose) values
(‘X’,’E’,’F’);

 

tb_b表构造如下

www.hg888.com 2

询问出那时的表数据为:

TB_Characters:

在SQL语句中,关于表连接,若依据表的数据来划分,可以分开为单表连接、两表连接和两表以上连接,在本篇文章中,重要教学两表连接,其余多表连接原理雷同。

www.hg888.com,2.INNER JOIN(内连接)

当中INNE逍客关键字能够简轻松单,况且独有在表a和表b中皆有相称行时,才回来。

 

1 select
a.symbol, 2 a.sname, 3 b.tdate,
4 b.tclose 5 from tb_a
a 6 innerjoin tb_b
b 7 on a.symbol
= b.symbol;

 

等价于

 

1 select
a.symbol, 2 a.sname, 3 b.tdate,
4 b.tclose 5 from tb_a
a, 6 tb_b b 7 where
a.symbol = b.symbol;

 

等价于

 

1 select
a.symbol, 2 a.sname, 3 b.tdate,
4 b.tclose 5 from tb_a
a 6 join tb_b
b 7 on a.symbol
= b.symbol;

 

回去结果:

www.hg888.com 3

#temptest1 #temptest2

Id Character
1 内向
2 外向
3 中性性格

至于表连接有过多类型,本文首要批注交叉连接,内连接,外接连,自连接。

 

2.现行反革命要将#temptest第22中学的年龄更新到相应的#temptest1中的岁数。

TB_Colors:

1.4 本章测量试验样表和Sql

3.OUTER JOIN(外连接)

其中OUTER可省略。分为(LEFT OUTER JOIN,RIGHT OUTER JOIN ,FULL JOIN)。

其实就是让[表1]中ID为1的年华改成19,同一时间ID为2的年龄改成20。

Id Color
1 绿色
2 红色
4 蓝色

政工场景:有两张表,分为为顾客表Customers和买主订单表Orders,SQL语句分别如下:

3.1 LEFT OUTER JOIN

当左表中的行在右表中绝非匹配行时,也回到。再次来到的记录中,选拔的右表的剧情为NULL。

 

1 select
a.symbol, 2 a.sname, 3 b.tdate,
4 b.tclose 5 from tb_a
a 6 leftjoin tb_b
b 7 on a.symbol
= b.symbol;

 

回来结果:

www.hg888.com 4

理之当然这里的供给是只用一句SQL,不能够用循环


创办Customes并开首化

3.2 RIGHT OUTER JOIN

当右表中的行在左表中未有匹配行时,也回到。再次来到的笔录中,选取的左表的剧情为NULL。

1 select
a.symbol, 2 a.sname, 3 b.tdate,
4 b.tclose 5 from tb_a
a 6 rightjoin tb_b
b 7 on a.symbol
= b.symbol;

回来结果:

www.hg888.com 5

结果如下:

一、内连接:

--CREATE TABLE CustomersCREATE TABLE Customers NOT NULL, --顾客ID CustName VARCHAR,--顾客姓名 CustCompany VARCHAR--Initial CustomersINSERT INTO Customers VALUESINSERT INTO Customers VALUESINSERT INTO Customers VALUES('SXN-DD-03','张永为','C')INSERT INTO Customers VALUES('SXN-DD-04','李龙飞','D')INSERT INTO Customers VALUESINSERT INTO Customers VALUES('SXN-HH-01','张涛明','F')

3.3 FULL JOIN

能够精通为LEFT和SportageIGHT的相会。

1 select
a.symbol, 2 a.sname, 3 b.tdate,
4 b.tclose 5 from tb_a
a 6 fulljoin tb_b
b 7 on a.symbol
= b.symbol;

回到结果:

www.hg888.com 6

兑现格局如下:

内三回九转(JOIN  或 INNECR-V JOIN):内连接取交集

创立Order表并开头化

4.CROSS JOIN(交叉连接)

笛Carl积。

 

1 select
a.symbol, 2 a.sname, 3 b.tdate,
4 b.tclose 5 from tb_a
a 6 crossjoin tb_b
b;

 

回来结果:

www.hg888.com 7

Update t1

示意图:

CREATE TABLE Orders NOT NULL, --顾客ID OrdetID VARCHAR--Initial OrdersINSERT INTO Orders VALUES('SXN-DD-01','SCCCCFFFFFSSOX002')INSERT INTO Orders VALUES('SXN-DD-02','SCCCCFFFFFSSOX0X2')INSERT INTO Orders VALUESINSERT INTO Orders VALUESINSERT INTO Orders VALUES('SXN-DD-05','SCCCCFFFFFSSOX0H2')INSERT INTO Orders VALUES

Set t1.age = t2.age

tb_characters
tb_colors tb_characters.ID tb_colors.ID;

2 难点引进

From#temptest1 t1

结果:

Q1:写三个查询,生成从1到1000的偏分头系列。

Join #temptest2 t2

标签:, , , , , , , ,

Your Comments

近期评论

    功能


    网站地图xml地图