当前位置:   article > 正文

MySQL基础~NATURAL JOIN(自然连接) 和USING的使用(SQL99语法新特性)_数据库natural join

数据库natural join

NATURAL JOIN

我们在查询两张表时,可能会将连接条件设为相同的字段,如下:

比如我们想查询员工的id、姓名和所在部门,
会从员工表和部门表中,
根据部门id和管理id是否相等进行查询

这里的连接条件是两张表中共有的字段:部门id和管理id,
通过这两个字段是否分别相同来进行判断

mysql>  SELECT employee_id,last_name,department_name
    ->  FROM employees e JOIN departments d
    ->  ON e.`department_id`=d.`department_id`
    ->  AND e.`manager_id`=d.`manager_id`;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

而有了NATURAL JOIN 自然连接后,它会帮我们自动查询两张表中 所有相同的字段,然后 进行等值连接,这样就可以直接省略连接条件

mysql>  SELECT employee_id,last_name,department_name
    ->  FROM employees NATURAL JOIN departments;
  • 1
  • 2

这两种写法效果相同,查询到的都是同一个结果

优点是简化了SQL语句,查询更便捷,缺点是不够灵活,如果我们只想根据一个相同字段进行查询的时候,这个时候就无法使用自然连接

USING

在进行等值连接查询时,我们可能会写出下面的SQL语句:


 SELECT employee_id,last_name,department_name
 FROM employees e,departments d
 WHERE e.department_id=d.department_id;
//在e和d两张表中 根据department_id是否相等查询出员工的id、姓名、部门
  • 1
  • 2
  • 3
  • 4
  • 5

当比较的两个字段同名的时候,我们可以使用USINGUSING可以将数据表里面的同名字段进行等值连接,需要搭配JOIN一起使用.

 SELECT employee_id,last_name,department_name
 FROM employees e JOIN departments d
 USING(department_id);
  • 1
  • 2
  • 3

优点:简化了SQL语句,缺点:无法表示自连接

表的约束条件总结与规范

多表连接的约束条件有三种方式:

  • WHERE:普遍适用
  • JOIN...ON:只能写关联条件
  • JOIN...USING:关联的字段在表中名称和字段值必须相等

规范

多表连接时,需要控制表的数量,不能太多,多表连接和for循环嵌套类似,太多了消耗资源,会导致SQL查询性能下降严重.

【 强制】超过三个表禁止 join。需要 join 的字段,数据类型保持绝对一致;多表关联查询时, 保证被关联的字段需要有索引。
说明:即使双表 join 也要注意表索引、SQL 性能。
来源:阿里巴巴《Java开发手册》

SQL99标准了解

随着历史的发展,SQL出现了很多不同的版本,随之而来的就是不同版本的标准规范

我们使用的SQL有两个最主要的标准规范,分别是SQL92SQL99,92和99就是标准提出的年份,除了92和99年的这两个标准外,还有其他很多的标准,但是由于其他标准内容过于复杂和庞大,很少有人能掌握所有的内容,所以标准流行范围不广。

SQL92语法简单,但是写出的SQL语句过长,可读性差,而SQL99语法可读性强,但是语法复杂.
SQL92SQL99是经典的SQL标准,也被称为SQL-2SQL-3标准.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/497338
推荐阅读
相关标签
  

闽ICP备14008679号