PHP学习练手(七)
2015-12-26 20:33
435 查看
内联结
定义:内联结从指定的表中返回匹配项。举例:
匹配项:m.forum_id=f.forum_id
等值联结:上述匹配项也称为等值联结,可以将ON 匹配条件 换成 USING(匹配项)
交换INNER JOIN前后表,查询结果不变
内联结可以加入order 边缘等限制条件
外联结
定义:它将返回两个表中都匹配的记录和不匹配的记录。类型:
左联结:返回左表中的要查询的所有记录和右表中匹配的项,若右表中没有匹配的记录,则返回NULL。(使用最广泛)
——举例:
附:个人理解,此处左表是forums,右表是messages。先查找左表中的所有项(f.*)即name,然后再查找右表中与每个name论坛相关联的subject,若存在subject,则显示记录值,若没有,则为NULL。
右联结:右联结与左联结正好相反,返回右表中所有要查询的记录和左表中匹配的项,若左表不匹配则返回NULL。
——举例:
附:可知使用right join后改变左右表的位置,查询结果一致。
全联结:左联结和右联结的组合。两个表中所有匹配的记录都将被返回,包括左表中部匹配右表的记录和右表中不匹配左表的记录。MYSQL不直接支持全联结,不常用。可以使用左联结、右联结加UNION实现该功能。
联结3个或更多表
1-检索funny man 用户发布的所有消息的ID、主题和论坛名附:第一张表为users,第二张表为messages,第三张表为forums。先查找前2张表中符合条件u.username=’funny man’的所有记录,然后再将该虚拟表中forum_id所对应的forums名称再检索出来。
2-检索每位用户的用户名、消息ID、消息主题和论坛名
附:第一个左联结的左表是users,右表是messages。返回左表中所有检索的username,和username匹配的右表中的记录,形成一张虚拟表。第二个左联结的左表是虚拟表,右表是forums。返回虚拟表中所有的forum_id记录和forum_id匹配的论坛表中的记录,即name。由于虚拟表的forum_id不要求检索,故无需显示。
分组选定的结果
分组函数:AVG():列出所有数值的平均值
COUNT():列出所有的值得个数
GROUP_CONCAT():列出所有分组的值
附:从结果中可以看出,若不进行分组,则只返回一组数据,若分组,则返回所有分组的记录。
MAX():列出所有值得最大值
MIN():列出所有值得最小值
SUM():列出所有值得合计值
AVG、COUNT、SUM可以使用DISTINCT关键字,使聚合只应用于不重复的值
相关文章推荐
- NTP 时间服务器实战
- NTP 服务器的安装与设定
- 时间服务器:NTP服务器
- 他山之石-PHP多线程的实现方法详解
- PHP定时完成数据库的备份
- PHP学习练手(六)
- PHP Ajax 跨域问题最佳解决方案
- FragmentPagerAdapter使用
- thinkphp中ajaxReturn方法实现ajax效果
- [知其然不知其所以然-14] cpu hotplug引出的cgroup故障
- OUTPUT 在insnert delete update 的神奇功效
- PHP表单详解
- yii用户注册表单验证实例
- php 解析ini配置文件
- php打印HTML
- php干货
- Php提交包含特殊字符的参数的方法
- 一段PHP SPL标准库的用法(遍历目录,查找固定条件的文件
- 什么是PHP
- <php+mysql>PHP脚本对数据库的基本操作,查找,删除,循环输出