2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > MySQL基础~NATURAL JOIN(自然连接) 和USING的使用(SQL99语法新特性)

MySQL基础~NATURAL JOIN(自然连接) 和USING的使用(SQL99语法新特性)

时间:2021-01-06 22:12:48

相关推荐

MySQL基础~NATURAL JOIN(自然连接) 和USING的使用(SQL99语法新特性)

文章目录

NATURAL JOINUSING表的约束条件总结与规范SQL99标准了解

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`;

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

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

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

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

USING

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

SELECT employee_id,last_name,department_nameFROM employees e,departments dWHERE e.department_id=d.department_id;//在e和d两张表中 根据department_id是否相等查询出员工的id、姓名、部门

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

SELECT employee_id,last_name,department_nameFROM employees e JOIN departments dUSING(department_id);

优点:简化了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标准.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。