标签:Java
1.1 案例一:将商城的案例中的表结构进行分析:1.1.1 需求:create table customer(
cid int primary key auto_increment,
cname varchar(20)
);
create table orders(
oid int primary key auto_increment,
addr varchar(50),
cid int
);
***** 约束:用来保证数据的完成型.
* 多表约束:外键约束!!!
***** 给orders表中的cid添加外键约束.
* alter table orders add foreign key (cid) references customer(cid);
1.1.3 商城模型分析:
1.2 案例二:使用SQL完成多表的查询:1.2.1 需求:
使用多表的查询,完成某个分类下的商品的显示.很多的情况下都需要使用多表的查询.
1.2.2 分析:1.2.2.1 技术分析:
【多表的查询的SQL】
? 多表的查询的方式:
* 交叉连接:
* select * from A,B; --- 获得的是两个表的笛卡尔积.
* 内连接: inner join -- inner 可以省略
* 显式内连接:select * from A inner join B on 条件;
* SELECT * FROM customer c INNER JOIN orders o ON c.cid = o.cid;
* 隐式内连接:select * from A,B where 条件;
* SELECT * FROM customer c ,orders o WHERE c.cid = o.cid;
* 外连接:outer join -- outer 可以省略
* 左外连接:left outer join -- select * from A left outer join B on 条件;
* SELECT * FROM customer c LEFT OUTER JOIN orders o ON c.cid = o.cid;
* 右外连接:right outer join -- select * from A right outer join B on 条件;
* SELECT * FROM customer c RIGHT OUTER JOIN orders o ON c.cid = o.cid;
【多表查询的子查询】
? 一个SQL语句查询的过程中需要依赖另一个查询语句.
SELECT FROM customer c,orders o WHERE c.cid = o.cid AND c.cid IN (SELECT cid FROM orders WHERE addr LIKE ‘海淀%‘);
【多表练习】
按客户名称统计订单的个数.
SELECT c.cname,COUNT() FROM customer c,orders o WHERE c.cid = o.cid GROUP BY c.cname;
标签:Java
原文地址:http://blog.51cto.com/13517854/2116029