关于我今天在数据库系统概论书上看见using关联查询却毫无印象的事
这是我一般做关联查询的样子:
select * from 表1 inner join 表2 on 表1.相同的列=表2.相同的列;
//又或是
select 表1的列 from 表1 inner join 表2 on 表1.相同的列=表2 .相同的列;
这是我今天看到的:
//using用法
select * from 表1 inner join 表2 using(相同的列);
/*书上是说可以使用USING来去掉结果中的重复值*/
这种using用法是我在以往sql语句学习中,从来没碰见过的,所以写这篇博客来记忆一下。
USING用法
sql/92标准可以使用using关键字来简化连接查询,但是只是在查询满足下面两个条件时,才能使用using关键字进行简化。
- 查询必须是等值连接。
- 等值连接中的列必须具有相同的名称和数据类型。
等值连接:从左表中取出每一条记录,去右表中与所有的记录进行匹配:匹配必须是某个条件在左表中与右表中相同最终才会保留结果,否则不保留。
//书上的例句
SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROM Student LEFT OUTER JOIN SC USING(Sno);
ON用法
一般我们join后的表,并不是我们想要的,这时,可以用 ON 来加一些条件:
ON后面就是我们加的条件,我们想要的列的数据,注意一下,join后的表列名是有重复的,所以ON后面的条件语句中我们要加上原来的表名。
//书上的例句
SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROM Student LEFT OUTER JOIN SC ON Student.Sno=SC.Sno;
我不使用on的原因
我的大多数联接都不适合它(不是匹配的相同字段名,和/或联接中的多个匹配)和
在具有两个以上表格的情况下,它并不是立即显而易见的
以前学习过程中,甚至见过where用法的,但是using的用法实在是少。