笛卡尔积与连接查询.doc

笛卡尔积与连接查询.doc

笛卡尔积与连接查询 l连接查询 (左连接 右连接 内连接) 笛卡尔乘积 集合特性?: 确定性 无序性 唯一性 ? 一张表可以看做是一个集合,每行数据相当于集合的一个元素 ? Union时 去掉重复??原理 就是集合元素的唯一性 表中存在完全相同的两行 是因为??表内部??存在??rowid 进行区分 ? 笛卡尔积 如果?a∈A, b∈B A*B = ( a, b); ? 例如?A=(1,2,3,4,5);B=(11,12); 那么?A*B (1,11), (2,11), (3,11), (4,11), (5,11), (1,12), (2,12), (3,12), (4,12), (5,12); ? A有?M?个元素?B?有N?个元素 那么?A*B?有?M*N个元素 同理 表A有?M?行 表B?有N?行 那么?A*B?有?M*N行 例如: ta tb?两表 笛卡尔积 通过分析可以看出 tb?表的?a?b c?d??每个分别和?ta???的a b c d??组合一遍 ? 左连接 1?连上表 2??连接条件 例如: select good_id,goods.cat_id,goods_name,shop_price from goods left join category on good.cat_id = category.cat_id; 字段名重复那么需要加表前缀,否则会报错; error 1052(23000) column * in field list is ambiguous 最后两行可以看 作是一张表。 ? 左连接语法: select?列1,列2,列N from table 1?left join?table 2 on?table 1??列?= table 2?列; on?后面的条件只要是条件就可以 可以不是等于 但是常用是等于。将from?后面的当做一个普通表看待。 右连接语法: select?列1,列2,列N from table 1?right join?table 2 on?table 1??列?= table 2?列; ? 内连接?inner select?列1,列2,列N from table 1?inner join?table 2 on?table 1??列?= table 2?列; ? ? ? ? ?

文档评论(0)

1亿VIP精品文档

相关文档