MySQL中JOIN连接的用法

join 连接的作用

JOIN连接用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。

join连接的类型有:inner join ,left join ,right join ,以及full join。其中inner join 是最简单的join.

inner join :如果表中至少有一个匹配,则返回行

内部链接(inner join) 的关键字选择两个表中具有匹配值的纪录。(两个表中都包含的列的名称)

select column_name(s) from table1
innner join table2 on 
table1.column_name=table2.column_name

inner join 的 inner是可以省略的

left join :即使右表中没有没有匹配,也从左表返回所有的行

SQL左连接LEFT join 关键字返回左表(表1)中的所有行,即使在右表(表2)中没有匹配。如果在正确的表中没有匹配,结果是NULL。

select column_name(s) from table1 left join table2 
on table1.column_name =table2.column_name

或者是

select column_names from table1 left outer join table2 
on table1.column_name = table2.column_name

在一些数据库中left join 称为 left outer join 

 

right join 

SQL右连接right join 关键字返回右表(表2)的左右行,即使在左表上没有匹配。如果左表上没有匹配,则结果为null 

select * from table1 
right join table2
on table1.col1=table2.col2

FULL  OUTER JOIN 

当左或右表记录匹配时,full outer join 关键字将返回所有记录。

 全连接就是将table1和table2的内容全部显示,不管有没有匹配上。

UNION 的用法

UNION 的作用:union 运算符用于组合两个或者是更多的SELECT语句的结果集

UNION 使用前提:union中的每个select语句必须具有相同的列数

(1)这些列也必须具有相似的数据类型

(2)每个select 语句中的列也必须以相同的顺序排列

union 语法

select column_name(s) from table1 union
select column_name(s) from table2

默认情况下,union 运算符选择一个不同的值。如果允许重复的值,则使用union all

union all 语法

select column_name(s) from table1
 union all 
select column_name(s) from table2

union 结果集中的列名总是等于union 中的第一个select 语句中的列名

带有where 的union  all

例:以下 SQL 语句使用 UNIONALL 从"Customers"和 "Suppliers" 表中选择所有上海
市的城市(也是重复数值):

select 城市,省份 from Customers 
where 省份='上海市'
union all 
select 城市,省份 from Suppliers
where 省份='上海市'

 带有where 的union 

以下 SQL 语句从“客户”和“供应商”中选择所有不同的上海城市(只有不同的值):

select 城市,省份 from Customers
where 省份='上海市'
union 
select 城市,省份 from Suppliers
where 省份='上海市'

  另一个union的实例

以下 SQL 语句列出了所有客户和供应商所在的城市和省份:

select '客户姓名' as type, 城市,省份
from Customers
union 
select '供应商名称', 城市,省份
from Suppliers

 select into 和 insert into 的用法

select into的用法

select into语句从一个表中复制数据,然后将数据插入到另一个新表中

将所有的列都复制到新表中

select * into newtable from table1

只复制希望的列插入到新表中

select col into newtable from table1

SELECT INTO 语句可以用于在另一种模式下创建一个新的空表,即只有表结
构,没有数据。只需添加 WHERE 子句,使查询返回时没有数据:

insert into select的作用

insert into select 语句从表中复制数据,并将数据插入到现有的表中。目标表中的任何现有行都不会受影响。

我们可以将所有列从一个表中复制到另外一个已经存在的表中

insret into table2 select * from table1

或者是可以吧把想要的列复制到另一个现有的表中

insert into table2 (column_name1)
select column_name2
from table1

是将表1中的column_name2复制到表2 中对应的column_name1,最后返回的结果是加入新内容的表2

把 "Suppliers" 一栏复制到 "Customers" 一栏

insert into Customer (姓名,省名)
select 供应商名称,省份 from Suppliers

只将上海供应商的副本插入 "Customers" :

insert into Customer(姓名,省份)
select 供应商名称,省名 from Suppliers 
where 省份='上海市'

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值