来源:自学PHP网 时间:2015-04-16 10:51 作者: 阅读:次
[导读] 首先要介绍一下集合的概念:集合具有无序性、唯一性。无序性:指集合内部元素没有相对顺序的概念,对于两个集合而言,只要元素 20540;和元素个数相同则两个集合相等。唯一性:指...
首先要介绍一下集合的概念:集合具有无序性、唯一性。 无序性:指集合内部元素没有相对顺序的概念,对于两个集合而言,只要元素值和元素个数相同则两个集合相等。 唯一性:指集合内部元素不存在值相等的元素。 上图所示集合是错误的,因为有2个‘3’违背了唯一性 上图所示的两个集合是相同的,集合元素是无序的<喎"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KCjxwPjxzdHJvbmc+vK+6z7XE1MvL46O6PC9zdHJvbmc+vbu8r6GisqK8r6Giz+CzyzwvcD4KPHA+vbu8r6O6wb249ryvus+5q7my1KrL2Nfps8m1xLyvus88L3A+CjxwPrKivK+jusGsuPa8r7rPy/nT0NSqy9jX6bPJtcS8r7rPPC9wPgo8cD7P4LPLo7rSsrPJtdG/qLb7u/2jrMG9uPa8r7rPy/nT0NSqy9jX6brPtcS8r7rPPC9wPgo8cD48aW1nIHNyYz0="http://www.2cto.com/uploadfile/Collfiles/20140617/2014061708594924.jpg" alt="\"> 集合1*集合2的结果如下: 其中(1,3)是集合1中的‘1’和集合2中的‘3’的组合 一张表其实就相当于一个集合,每一行是集合的一个元素 现在有两表 goods表:包含商品ID,栏目ID,商品名,有8个商品
channel表:栏目ID,栏目名,有3个栏目
想在想得到一张报价单包含商品ID,商品名,栏目ID,栏目名,该如何去做? 全相乘:笛卡尔积 总共有3*8=24 条记录 即两表各个行的所有组合 选出其中满足要求的行
虽然得出了正确答案,但是如果goods表和channel表很大的话,如goods表有1W条记录,channel也有1W条记录。则需要在内存中生成一张1W*1W的临时表,而且绝大部分记录都不是我们所需的。所以全相乘浪费了空间、降低了效率。 左连接:语法 表1 left join 表2 on 条件 以表1为基准选出满足条件的表2的行
右连接:语法 表2 right join 表1 on 条件 等价于 表1 left join 表2 on 条件 所以左右连接往往可以互换,但是右连接有点反逻辑思维,建议选用左连接。
内连接:语法 表1 inner join 表2 on 条件
可见左右连接、内连接、全相乘都可以完成所要求的功能,但是全相乘的效率是最低的,因为全相乘生成的是一张很大的临时表,而且没有索引。 以左连接为例 “A left join B on 条件” 其实相当于一张临时表,包含A表和B表所有的字段,以及满足条件的B的所有的行。而且后面可以接where 等子句。 多表联查: A ,B,C,D表关联 A left join B on 条件1 left join C on 条件2 left join D on 条件3 下篇博文,再详细介绍左右连接、内连接之间的区别和联系。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com