摘要:微信公众号菜鸟永恒第章多表关系实战实战省和市方案多张表,一对多方案一张表,自关联一对多实战用户和角色比如演员和扮演人物多对多关系实战角色和权限比如公司职位和开除等权限多对多关系实战客户和联系人可选一对多一个客户服务于多个联系人第章多表查
微信公众号:菜鸟永恒
第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 条件;
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 ... 查询条件
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技术知识,,不妨来扫描二维码关注一下!
欢迎加小编微信 拉你进新建的技术交流群
听说关注的人都变美变帅了
觉得我的文章写得不错,不妨点一下好看并分享给朋友!
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/32351.html
摘要:我将举几个栗子,来详细的说一下我自己在使用多表复杂查询的场景和想法。名字手机号这是一个单表的多条件复杂查询,由于是在几个属性中进行筛选,其中的属性的个数不知道有多少个,所以只需要利用查询就可以很方便的实现这个需求。 最近工作中由于要求只能用hibernate+jpa 与数据库进行交互,在简单查询中,jpa继承CrudRepository接口 ,然后利用jpa的方法命名规范进行jpql查...
摘要:会创建多表及多表的关系多表之间的关系如何来维护添加外键约束从分类表中删除分类为信息删除失败首先得去表删除所有分类商品建数据库原则通常情况下一个项目应用建一个数据库多表之间的建表原则一对多建表原则在多的一方增加一个外键指向一的一方多对多建表原 SQL 会创建多表及多表的关系 1.多表之间的关系如何来维护 添加外键约束: foreign key alter table product...
摘要:多表查询笛卡尔积多表查询中,如果没有连接条件,则会产生笛卡尔积数学中的定义假设集合,集合,则两个集合的笛卡尔积为实际运行环境下,应避免使用笛卡尔积解决方案在加入有效的连接条件等值连接连接张表,需要个连接条件主键约束约束当前表中, 多表查询: select listname from tablename1,tablename2; 笛卡尔积 多表查询中,如果没有连接条件,则会产生笛卡尔积数...
摘要:前言在之前已经大概了解过数据库和学过相关的知识点,但是太久没用过了,就基本忘了印象中就只有基本的语句和相关一些概念写下本博文的原因就是记载着一些以前没注意到的知识点以后或许会有用实例与数据库概念数据库服务器由两部分组成实例理解为对象看不见的 前言 在之前已经大概了解过Mysql数据库和学过相关的Oracle知识点,但是太久没用过Oracle了,就基本忘了...印象中就只有基本的SQL语...
摘要:今天把这个问题讲明白了,看看是怎么个多表关联以及如何去优化这个关联。现需要在列表展示表的来源渠道,且该渠道可搜索。关联表字段增加查询中的搜索模型也是通过实现的,该模型通过控制着哪个字段可搜索,哪个字段不可搜索。 作者:白狼 出处:http://www.manks.top/yii2_many_ar_relation_search.html 本文版权归作者,欢迎转载,但未经作者同意必须保留...
阅读 1887·2021-10-14 09:43
阅读 2346·2021-09-28 09:35
阅读 1980·2019-08-30 15:55
阅读 635·2019-08-30 14:23
阅读 1884·2019-08-30 13:21
阅读 1082·2019-08-30 12:50
阅读 2105·2019-08-29 18:46
阅读 2180·2019-08-29 17:28