全部版块 我的主页
论坛 提问 悬赏 求职 新闻 读书 功能一区 学道会
1420 10
2019-03-25
mysql的连接方式
mysql的连接方式主要分为横向合并和纵向合并,本文将分别进行讲解:

1. 横向合并
1.1 MySQL内连接
  MySQL的内连接使用inner join on,它的效果跟使用where是一样的,如果联结的是两个表,那么需要左右的条件或者说字段是需要完全匹配的。

SELECT <select_list> FROM A
INNER JOIN B ON A.Key = B.Key;
另一种写法:
select <select_list> from A,B
where A.Key = B.Key


1.2 MySQL外连接
mysql外连接包括左连接和右连接,二者连接方式相同,区别是选取的主表不一样。

1.2.1左连接:
两个表进行左连接时会返回左边表中的所有的行和右边表中与之相匹配的列值没有相匹配的用空值代替。
SELECT <select_list> FROM A
LEFT JOIN B ON A.Key = B.Key;

(A:主表出所有行;B:附表出匹配行,总行数为A*B行)

1.2.2 右连接:
两个表进行右连接时会返回右边表中的所有的行和左边表中与之相匹配的列值没有相匹配的用空值代替。
SELECT <select_list> FROM A
RIGHT JOIN B ON A.Key = B.Key;


2 纵向合并
联合查询
union: 用于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行。
例: 用union合并t1与t2表
select t1.* from t1
union
select t2.* from t2;

union all:用于合并两个或多个 SELECT 语句的结果集,保留重复行。
例: 用union all合并t1与t2表
select t1.* from t1
union all
select t2.* from t2;

注:
1. 如果连接具有相同列名称的多个表,则必须在SELECTON子句中使用表名标注,以避免列错误。
例如,如果t1t2表都具有名为c的一个相同列名,则必须在SELECTON子句中使用表限定符,如使用t1.ct2.c指定引用是那个表中的c列。

2. 为了节省书写表名的时间,可以在查询中使用表别名。 例如,可以将表名称verylonglonglong_tablename使用表别名t,然后使用t.column引用其列。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2019-3-25 15:23:10
为您点赞!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-3-25 16:18:07
点赞~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-3-25 18:20:15
感谢分享,为您点赞!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-3-25 19:06:12
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-3-25 23:30:19
谢谢分享
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群