|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。UNION和内部毗连
有些时分,你能够想一同看多个查询的了局、组合它们的输入,你可使用UNION关头字。为了兼并以下两个查询的输入:显现一切买方的ID和已有订货的主顾,你可使用以下语句:
SELECTBUYERID
FROMANTIQUEOWNERS
UNION
SELECTOWNERID
FROMORDERS;
这里要注重SQL请求SELECT的列表必需婚配,即列于数据范例婚配。在本例子中,BuyerID和OwnerID都是不异的数据范例,同为Interger(整型)。同时另有一提的是,SQL但利用UNION的利用会举行主动复制扫除。而在单一的查询中,你就必需利用DISTINCT。
OuterJoin(内部毗连)一般是在JOIN查询被团结,而行没有包含到JOIN中的时分利用,出格是在常量文本"flags"被包含的时分尤其有效。上面我们看看这个查询先:
SELECTOWNERID,isinbothOrders&Antiques
FROMORDERS,ANTIQUES
WHEREOWNERID=BUYERID
UNION
SELECTBUYERID,isinAntiquesonly
FROMANTIQUES
WHEREBUYERIDNOTIN
(SELECTOWNERID
FROMORDERS);
第一个查询做了一个毗连以列出两个表中的每一个owener,而且在ID前面安排一个标志线来反复援用。这个UNION兼并了这个列表和以下第二个的列表。第二个列表是列出不是在Orders表的ID,如许就发生了在JOIN查询以外的ID列表,它是使用援用标签列出的。这多是一种最简单的办法来发生这个列表。
这个观点关于主键跟外码有关的情况是很有效的,可是有些主键的外码值是NULL。好比,在一个表中,主键是salesperson,而在别的的表中主键是customers,而且它们的salesperson列在不异的行。但是,假如salesperson没有customers的时分,这团体的名字就不会呈现在customer表中。假如一切salespersons的列表要显现出来,那末就要内部毗连了。
这类操作的执行过程是,1)按照新的表定义建立一个临时表tmpa,2)将原表数据拷贝到临时表,3)将原始表改名tmpb,4)将tmpa改名为原表名,5)将tmpb删除。 |
|