内容简介:第1章 多表关系实战1.1 实战1:省和市 方案1:多张表,一对多
第1章 多表关系实战
1.1 实战1:省和市
方案1:多张表,一对多
方案2:一张表,自关联一对多
1.2 实战2:用户和角色 (比如演员和扮演人物)
多对多关系
1.3 实战3:角色和权限 (比如公司职位和开除等权限)
多对多关系
1.4 实战4:客户和联系人(可选)
一对多:一个客户服务于多个联系人
第2章 多表查询
CREATE TABLE category (
cid int PRIMARY KEY ,
cname VARCHAR(50)
);
CREATE TABLE products(
pid int PRIMARY KEY ,
pname VARCHAR(50),
price INT,
flag VARCHAR(2), #是否上架标记为:1表示上架、0表示下架
category_id int,
CONSTRAINT products_fk FOREIGN KEY (category_id) REFERENCES category (cid)
);
2.1 初始化数据
分类
INSERT INTO category(cid,cname) VALUES('1','家电');
INSERT INTO category(cid,cname) VALUES('2','服饰');
INSERT INTO category(cid,cname) VALUES('3','化妆品');
商品
INSERT INTO products(pid, pname,price,flag,category_id) VALUES('1','联想',5000,'1',1);
INSERT INTO products(pid, pname,price,flag,category_id) VALUES('2','海尔',3000,'1',1);
INSERT INTO products(pid, pname,price,flag,category_id) VALUES('3','雷神',5000,'1',1);
INSERT INTO products (pid, pname,price,flag,category_id) VALUES('4','JACK JONES',800,'1',2);
INSERT INTO products (pid, pname,price,flag,category_id) VALUES('5','真维斯',200,'1',2);
INSERT INTO products (pid, pname,price,flag,category_id) VALUES('6','花花公子',440,'1',2);
INSERT INTO products (pid, pname,price,flag,category_id) VALUES('7','劲霸',2000,'1',2);
INSERT INTO products (pid, pname,price,flag,category_id) VALUES('8','香奈儿',800,'1',3);
INSERT INTO products (pid, pname,price,flag,category_id) VALUES('9','相宜本草',200,'1',3);
2.2 多表查询
- 交叉连接查询(基本不会使用-得到的是两个表的乘积) [了解]
语法:select * from A,B;
- 内连接查询(使用的关键字 inner join -- inner可以省略)
隐式内连接:select * from A,B where 条件;
显示内连接:select * from A inner join B on 条件;
- 外连接查询(使用的关键字 outer join -- outer可以省略)
左外连接:left outer join
select * from A left outer join B on 条件;
右外连接:right outer join
select * from A right outer join B on 条件;
1.查询哪些分类的商品已经上架
隐式内连接
SELECT * FROM category c , products p
WHERE c.cid = p.category_id and p.flag = '1';
内连接
SELECT * FROM category c
INNER JOIN products p ON c.cid = p.category_id WHERE p.flag = '1';
2.查询所有分类的商品个数
左外连接
INSERT INTO category(cid,cname) VALUES(4,'奢侈品');
SELECT cname,COUNT(category_id) FROM category c
LEFT OUTER JOIN products p ON c.cid = p.category_id GROUP BY cname;
2.3 子查询
子查询:一条select语句结果作为另一条select语法一部分(查询条件,查询结果,表等)。
select ....查询字段 ... from ...表.. where ... 查询条件
3 子查询, 查询“化妆品”分类商品详情
隐式内连接
SELECT * FROM products p , category c
WHERE p.category_id=c.cid AND c.cname = '化妆品';
子查询
作为查询条件
SELECT * FROM products p
WHERE p.category_id = ( SELECT c.cid FROM category c WHERE c.cname='化妆品' ); ##作为另一张表 SELECT * FROM products p , (SELECT * FROM category WHERE cname='化妆品') c WHERE p.category_id = c.cid;
查询“化妆品”和“家电”两个分类商品详情
SELECT * FROM products p
WHERE p.category_id in ( SELECT c.cid FROM category c WHERE c.cname='化妆品' or c.name='家电' );
欢迎关注公众号:菜鸟永恒 点滴记录,共同进步。
立志想成为大牛的菜鸟一枚,将会记录 Java 技术知识,,不妨来扫描二维码关注一下!
欢迎加小编微信 拉你进新建的技术交流群
听说关注的人都变美变帅了
觉得我的文章写得不错,不妨点一下好看并分享给朋友!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Mybatis关联查询(嵌套查询)
- MySQL高级查询---连接查询实例
- Oracle子查询相关内容(包含TOP-N查询和分页查询)
- Laravel Query Builder 复杂查询案例:子查询实现分区查询 partition by
- 打造出色查询:如何优化SQL查询?
- SQL优化-慢查询+explain查询
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
设计原本
Frederick P. Brooks, Jr. / InfoQ中文站、王海鹏、高博 / 机械工业出版社 / 2011-1-1 / 55.00元
无论是软件开发、工程还是建筑,有效的设计都是工作的核心。《设计原本:计算机科学巨匠Frederick P. Brooks的思考》将对设计过程进行深入分析,揭示进行有效和优雅设计的方法。 本书包含了多个行业设计者的特别领悟。Frederick P. Brooks, Jr.精确发现了所有设计项目中内在的不变因素,揭示 了进行优秀设计的过程和模式。通过与几十位优秀设计者的对话,以及他自己在几个设计......一起来看看 《设计原本》 这本书的介绍吧!