首页 > 数据库技术 > 详细

Oracle-Join

时间:2019-05-04 13:33:53      阅读:133      评论:0      收藏:0      [点我收藏+]

1、建表语句

CREATE TABLE Websites(
ID INT PRIMARY KEY,
NAME VARCHAR2(30),
URL VARCHAR2(100),
alexa INT,
country VARCHAR2(30)
);
INSERT INTO Websites(ID,NAME,URL,alexa,country)VALUES(1,‘Google‘,‘http://www.google.com/‘,1,‘USA‘);
INSERT INTO Websites(ID,NAME,URL,alexa,country)VALUES(2,‘淘宝‘,‘http://www.taobao.com/‘,13,‘CN‘);
INSERT INTO Websites(ID,NAME,URL,alexa,country)VALUES(3,‘天猫‘,‘http://www.tianmao.com/‘,16,‘CN‘);
INSERT INTO Websites(ID,NAME,URL,alexa,country)VALUES(4,‘微博‘,‘http://www.weibo.com/‘,20,‘CN‘);
INSERT INTO Websites(ID,NAME,URL,alexa,country)VALUES(5,‘Facebook‘,‘http://www.facebook.com/‘,3,‘USA‘);
INSERT INTO Websites(ID,NAME,URL,alexa,country)VALUES(7,‘stackoverflow‘,‘http://www.stackoverflow.com/‘,0,‘IND‘);
CREATE TABLE access_log(
aid INT PRIMARY KEY,
site_id INT,
COUNT INT,
datetime date
);
INSERT INTO access_log(aid,site_id,COUNT,datetime)VALUES(1,1,45,to_timestamp(to_char(systimestamp,‘YYYY-MM-DD HH24:MI:SS.FF‘),‘YYYY-MM-DD HH24:MI:SS.FF‘));
INSERT INTO access_log(aid,site_id,COUNT,datetime)VALUES(2,3,100,to_timestamp(to_char(systimestamp,‘YYYY-MM-DD HH24:MI:SS.FF‘),‘YYYY-MM-DD HH24:MI:SS.FF‘));
INSERT INTO access_log(aid,site_id,COUNT,datetime)VALUES(3,1,230,to_timestamp(to_char(systimestamp,‘YYYY-MM-DD HH24:MI:SS.FF‘),‘YYYY-MM-DD HH24:MI:SS.FF‘));
INSERT INTO access_log(aid,site_id,COUNT,datetime)VALUES(4,2,10,to_timestamp(to_char(systimestamp,‘YYYY-MM-DD HH24:MI:SS.FF‘),‘YYYY-MM-DD HH24:MI:SS.FF‘));
INSERT INTO access_log(aid,site_id,COUNT,datetime)VALUES(5,5,205,to_timestamp(to_char(systimestamp,‘YYYY-MM-DD HH24:MI:SS.FF‘),‘YYYY-MM-DD HH24:MI:SS.FF‘));
INSERT INTO access_log(aid,site_id,COUNT,datetime)VALUES(6,4,13,to_timestamp(to_char(systimestamp,‘YYYY-MM-DD HH24:MI:SS.FF‘),‘YYYY-MM-DD HH24:MI:SS.FF‘));
INSERT INTO access_log(aid,site_id,COUNT,datetime)VALUES(7,3,220,to_timestamp(to_char(systimestamp,‘YYYY-MM-DD HH24:MI:SS.FF‘),‘YYYY-MM-DD HH24:MI:SS.FF‘));
INSERT INTO access_log(aid,site_id,COUNT,datetime)VALUES(8,5,545,to_timestamp(to_char(systimestamp,‘YYYY-MM-DD HH24:MI:SS.FF‘),‘YYYY-MM-DD HH24:MI:SS.FF‘));
INSERT INTO access_log(aid,site_id,COUNT,datetime)VALUES(9,3,201,to_timestamp(to_char(systimestamp,‘YYYY-MM-DD HH24:MI:SS.FF‘),‘YYYY-MM-DD HH24:MI:SS.FF‘));
SELECT * FROM Websites;
SELECT * FROM access_log;

2、SQL 连接(JOIN)


SQL join 用于把来自两个或多个表的行结合起来。

下图展示了 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法。

技术分享图片

(1) INNER JOIN从多个表中返回满足 JOIN 条件的所有行

SELECT 
  w.id,
  w.name,
  w.url,
  w.alexa,
  w.country,
  a.aid,
  a.site_id,
  a.count,
  a.datetime
FROM Websites w
INNER JOIN access_log a
ON w.id = a.site_id

  技术分享图片  技术分享图片

       技术分享图片

     不同的 SQL JOIN

  • INNER JOIN:如果表中有至少一个匹配,则返回行
  • LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
  • RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
  • FULL JOIN:只要其中一个表中存在匹配,则返回行

   (2)LEFT JOIN

Oracle-Join

原文:https://www.cnblogs.com/hongwei2085/p/10808225.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!