位置: 编程技术 - 正文
推荐整理分享MySQL中三种关联查询方式的简单比较(mysql中数据表的关联关系有哪三种?),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:mysql数据表关联,mysql中数据表的关联关系有哪三种?,mysql表关联有几种,mysql数据表关联,mysql关联查询原理,mysql表关联有几种,mysql关联关系,mysql中数据表的关联关系有哪三种?,内容如对您有帮助,希望把文章链接给更多的朋友!
看看下面三个关联查询的 SQL 语句有何区别?
最大的不同更多是语法糖,但有一些有意思的东西值得关注。
为了方便区别,我们将前两种写法称作是 ANSI 风格,第三种称为 Theta 风格。Theta 风格
在 FROM 短语中列出了关联的表名,而 WHERE 短语则指定如何关联。
这种写法被认为是古老的方式,有些时候比较难以理解,请看下面查询:
上述查询列出片长超过 分钟的电影,其中包括演员编号是 的条件。别在意查询结果,查询本身如何呢?WHERE 表达式中包含三个条件,要看出哪个条件是关联,哪个条件是过滤还是稍费点事的。不过还是相对简单的,但如果是 5 个表, 多个条件呢?ANSI 风格: ON
使用 JOIN ... ON 可以将表关联的条件和记录过滤条件分开,将上面的语句重写后的结果如下:
看起来清晰许多。
注意: ON 语句中的括号不是必须的,我个人喜欢这样写而已。
ANSI 风格: USING
有一种特殊情况,当两个要关联表的字段名是一样的,我们可以使用 USING ,可减少 SQL 语句的长度:
这个时候括号就是必须的了。这种写法很好,输入更少的单词,查询的性能也非常棒,但还需要注意一些差异。
USING 和 ON
下面语句是可行的:
但下面这个就不行:
因为 USING "知道" film_id 字段在两个表中都有,所以没有指定确切的表都没关系,两个值必须一致就是。
ON 就没那么智能,你必须指明要关联的表和字段名。
上面两个实际的结果是比较有趣的,当使用 USING 时,字段只在结果中出现一次:
而使用 ON 时,字段就会出现两次:
幕后
MySQL 对两者的处理方式是相同的,使用 EXPLAIN EXTENDED 我们可以看到:
最终所有的查询都被转成了 Theta 风格。
译者:就是说这三种方式除了写法不同外,没什么区别。
深入理解MySQL中的事务机制 使用数据库事务可以确保除事务性单元内的所有操作都成功完成。MySQL中的InnoDB引擎的表才支持transaction。在一个事务里,如果出现一个数据库操作失败
MySQL在Linux系统中隐藏命令行中的密码的方法 在命令行中输入命令并不是一个好主意,会造成安全问题。但是如果你决定去写一个应用,而这个应用需要在命令行中使用密码或者其他敏感信息。那
在Linux系统的命令行中为MySQL创建用户的方法 要访问一个MySQL服务器,你需要使用一个用户帐号登录其中方可进行。每个MySQL用户帐号都有许多与之相关连的属性,例如用户名、密码以及权限和资源
友情链接: 武汉网站建设