SQL进阶语法的多表操作

时间:2022-05-09 00:25:27

AS别名

多张表联合操作,如果表多,字段名长,不方便阅读。这里我们可以使用  as  关键字来对字段名设置别名。

as也可以省略,看个人喜好,在这里我还是支持把 as 写上,这样我们在面对复杂的SQL语句时有很好的可读性。

接下来的多表操作将都使用别名,不难,一看便懂。

 

 下面是两张表,

SQL进阶语法的多表操作

SQL进阶语法的多表操作

 

 

 

 

表的链接

1、内连接(又称显示连接)

 inner  join

如果表中至少有一个匹配,则返回结果

SQL进阶语法的多表操作

查询列出购买了商品的用户,以及他们买了什么

 

2、左连接

left  join

即使右表中没有匹配,也从左表返回所有的结果

 SQL进阶语法的多表操作

查询列出所有用户,即使他们没有买东西

 

 3、右连接

right  join

即使左表中没有匹配,也从右表返回所有的结果

SQL进阶语法的多表操作

查询列出所有商品,即使该商品没有被用户购买

 

4、全连接

full  join   

注:mysql 不支持full  join,所以我们使用mysql支持的方式来实现full  join的功能。也就是join + union(不懂union先看下面的union讲解)

join + union

其实就是内连接 + 左连接 + 右连接

SQL进阶语法的多表操作

查询列出哪些用户购买了哪些商品,哪些用户没有购买,哪些商品没被用户购买

 

附:union的功能

union:并和两个或多个select语句的结果集合,自动去重

union all:与union相同,但是允许重复

注意事项:使用union,必须保证所有select后面查询的字段名一致。数量,类型,顺序都必须是一样的。

 

5、制作备份文件

select  into

注:mysql也不支持select  into这种方法来创建备份表,我们可以用另一种方法 ↓

create  table  备份表名  (select  字段名  from  表名)

SQL进阶语法的多表操作

SQL进阶语法的多表操作

创建了userinfo表的备份表,内容一致