### 使用商城表完成对商品信息的多表查询
#### 需求分析:
在商城项目中,我的订单中包含很多信息.打开订单需要去查询表
#### 技术分析:
#### 多表查询
- 交叉连接查询 笛卡尔积
- 内连接查询
- 左外连接
- 右外连接
注:inner和outer关键字可省可不省.
- 交叉连接查询 笛卡尔积SELECT * FROM product;SELECT * FROM category;笛卡尔积 ,查出来是两张表的乘积 ,查出来的结果没有意义SELECT * FROM product,category;--过滤出有意义的数据SELECT * FROM product,category WHERE cno=cid;SELECT * FROM product AS p,category AS c WHERE o=c.cid;[使用as关键字]SELECT * FROM product p,category c WHERE o=c.cid;[不使用as关键字]--数据准备INSERT INTO product VALUES(NULL,'耐克',10,NULL);- 内连接查询-- 隐式内链接SELECT * FROM product p,category c WHERE o=c.cid;-- 显示内链接SELECT * FROM product p INNER JOIN category c ON o=c.cid;[使用inner关键字]SELECT * FROM product p JOIN category c ON o=c.cid;[不使用inner关键字]-- 区别:隐式内链接: 在查询出结果的基础上去做的WHERE条件过滤显示内链接: 带着条件去查询结果, 执行效率要高- 左外连接左外连接,会将左表中的所有数据都查询出来, 如果右表中没有对应的数据,用NULL代替SELECT * FROM product p LEFT OUTER JOIN category c ON o=c.cid;[使用outer关键字]SELECT * FROM product p LEFT JOIN category c ON o=c.cid;[不使用outer关键字]- 准备工作INSERT INTO category VALUES(10,'电脑办公','电脑品牌都在这');- 右外连接: 会将右表所有数据都查询出来, 如果左表没有对应数据的话, 用NULL代替SELECT * FROM product p RIGHT OUTER JOIN category c ON o=c.cid;[使用outer关键字]SELECT * FROM product p RIGHT JOIN category c ON o=c.cid;[不使用outer关键字]