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 省份='上海市'