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!
阅读全文
0 0
- MySQL数据库——创建高级联结
- MySQL创建高级联结
- [MYSQL -16]创建高级联结
- MySQL联结表与创建高级联结表.md
- 第9天-mysql创建高级联结
- MySQL数据库——联结表
- 16 创建高级联结
- MYSQL学习笔记(十二)创建高级联结
- [MYSQL -15]创建联结
- MySQL创建联结
- 第十三课 创建高级联结
- SQL必知必会(三) 联结表、创建高级联结、组合查询
- MySQL必知必会-13MySQL高级联结
- 读书笔记--SQL必知必会13--创建高级联结
- 《MySQL必知必会学习笔记》:高级联结
- Oracle SQL高级编程——位图联结索引
- SQL必知必会 笔记 第十三章 创建高级联结
- 数据库学习——子查询与联结
- 链表的归并
- PostgreSQL查询成本模型
- goim(3):goim代码简单的分析
- MySQL数据库使用——MySQL值操作
- DPDK基本技术二
- MySQL数据库——创建高级联结
- bzoj1942 货币兑换【动态规划+CDQ分治】
- ZTree的使用
- HPUOJ 1460(组合数相加,快速幂取模的小变形)
- Linux下的一些常用命令
- 技术问答整理(6)
- CentOS使用yum install出现PYCURL ERROR 6
- 39-IO流(File对象-练习-深度遍历文件夹)12 40-IO流(File对象-练习-递归)12 41-IO流(File对象-练习-删除目录).
- AI 全面入侵,程序员到了 2040 年还能继续敲代码吗?