多表连接

1、  连接多个表:

(1)       笛卡尔连接:第一个表中有m条记录,第二个表中有n条记录,结果是m*n

Ø传统方法——。。。FROM 1,表2

ØJOIN方法——。。。FROM 1 CROSS JOIN 2

(2)       相等连接:将表中有公共列存储了相同的数据的两个或多个表连接起来。

Ø传统方法——使用笛卡尔连接后再使用WHERE子句。。。。。WHERE book.id=order.id

          ØJOIN方法——可以使用三种JOIN关键字来创建相等连接:

NATURAL  JOIN—将包括一个同等命名和定义的字段的两个表之间自动创建连接

SELECT  TITLE,PUBID,NAME  FROM PUBLISHER  NATURAL  JOIN  BOOKS;

 

JOIN…USING—使用USING子句可以根据在两个表中具有相同名称和定义的列创建连接

SELECT  TITLE,PUBID,NAME  FROM BOOKS  JOIN  PUBLISHER  USING(PUBID);

 

JOIN…ON—当USING子句中连接的表没有包括一个同等命名和定义的字段时,必须添加一个WHERE子句或者向JOIN关键字添加ON子句

SELECT  TITLE,NAME FROM BOOKS B JOIN PUBLISHER P ON B.PUBID=P.PUBID;

v规则:如果在FROM子句中指定了一个表别名,那么只要在这个SQL语句中引用这个表,就必须使用这个别名。

 

(3)       不等连接:在不能使用等号连接相关列的时候,也就是表中不存在可以连接的相同行的时候,我们可以使用“不等连接”,它允许将一个范围的最小值存储在记录的一列,这个范围的最大值存储在另一列。例:

books表结构:title retailpromotion表结构:gift minretail maxretail。要根据书的价格来判断客户能够得到什么礼品。也可使用JOIN连接。

SELECT  TITLE,GIFT  FROM BOOKS,PROMOTION

WHERE RETAIL BETWEEN MINRETAIL AND MAXRETAIL;

 

(4)       自我连接:一个表中的数据引用了同一个表中存储的其他数据

例:customersreferred列存储了介绍该新客户的个人的客户号

SELECT  R.FIRSTNAME,R.LASTNAME,C.LASTNAME REFERRED

FROM  CUSTOMERS  C JOIN CUSTOMERS  R ON C.REFERRED=R.CUSTOMER#;

 

(5)       外部连接

此处留白,以后补充

 

(6)       集合运算符:用来结合两个或多个select语句的结果

UNION——返回两个查询的结果,如果存在重复记录,则将删除它们

UNION ALL——在结果中包含重复的记录

INTERSECT——只列出两个查询都返回的记录

MINUS——将从输出中删除第二个查询的结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值