多表查询

栏目: 数据库 · 发布时间: 5年前

内容简介:第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 多表查询

  1. 交叉连接查询(基本不会使用-得到的是两个表的乘积) [了解]

 语法:select * from A,B;

  1. 内连接查询(使用的关键字 inner join -- inner可以省略)

 隐式内连接:select * from A,B where 条件;

 显示内连接:select * from A inner join B on 条件;

  1. 外连接查询(使用的关键字 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 技术知识,,不妨来扫描二维码关注一下!

多表查询

欢迎加小编微信 拉你进新建的技术交流群

多表查询

听说关注的人都变美变帅了

觉得我的文章写得不错,不妨点一下好看并分享给朋友!


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Sexy Web Design

Sexy Web Design

Elliot Stocks / SitePoint / 2009-03-28 / $39.95

Description A guide to building usable, aesthetically pleasing interfaces for web sites and web applications by applying timeless principles of user-centered design. This book focuses on practical ......一起来看看 《Sexy Web Design》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具