MySQL数据库——创建高级联结

来源:互联网 发布:win7开机windows后黑屏 编辑:程序博客网 时间:2024/04/30 23:21

我们上一次介绍了,联结的使用。现在,我们要更进一步:

part 1 使用表别名

SELECT code_id,state FROM coder AS c,git AS d WHERE c.ID = d.id ;

需要注意的是,只有WHERE时候,才可以使用表别名。

如上所示,我们的别名,除了用在列名和计算字段外,我们还可以用在表的身上。
我们这样做有两个理由:1.缩短SQL语句 2.允许在单挑SELECT语句中多次使用相同的表 。

part 2 使用不同类型的联结 之 自联结

目前为止,我们使用的都是称为内部联结 或 等值联结 的简单联结。 现在来看三种其他的联结,分别是自联结,自然联结,外部联结。

我们先来介绍自联结:

SELECT c.coder_name FROM coder AS c,git AS g WHERE c.coder_name = g.git_name;

看见没,在前面,也使用了表别名。 这里我们通过大量实验得出,使用自联结作为外部语句来代替子查询往往会起到处理结果优化的效果。但是这个也不绝对,应该多做实验来验证。

part 3 自然联结

无论何时对表进行联结,应该至少有一个列出现在不止一个表中(被联结的列)。标准的联结返回所有数据,甚至相同的列多次出现。自然联结排除多次出现,是每个列只返回一次。

自然联结的例子如下:

SELECT    c.*,g.stateFROM    coder AS c,    git AS gWHERE    c.name = g.name;    // 这代码好看吧 哈哈 用了美化效果的~

事实上,迄今位置我们建立的每一个内部联结都是自然联结,很可能我们永远都不会用到不是自然联结的内部联结。

part 4 外部联结

SELECT coder.name,coder.code_id,git.state FROM coder LEFT OUTER JOIN git ON coder.name = git.name;

上面写的语句就是外部联结,类似于我们上一章看到的内部联结,这条SELECT语句只用了关键字 OUTER JOIN 来指定联结的类型(而不是在WHERE子句中执行),类似于自然联结的设置 注意语句中的 LEFT OUTER JOIN … ON 。这里 LEFT 表示的是 关联那一边的表的所有行! 这里用的是LEFT 就是 coder!

原创粉丝点击