多表查询

栏目: 数据库 · 发布时间: 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 技术知识,,不妨来扫描二维码关注一下!

多表查询

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

多表查询

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

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


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

查看所有标签

猜你喜欢:

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

Series 60 应用程序开发

Series 60 应用程序开发

巴克 / 人民邮电出版社 / 2005-7 / 75.0

Series 60智能手机开发平台正掀起新一轮的移动服务浪潮。超过60%的手机生产商获得了Series 60平台的授权。Series 60移动应用开发平台拥有最大的用户群,从而成为智能手机市场的代表。诺基亚与EMCC软件公司合作,为C++程序员和软件设计师编撰了这本Series 60开发的权威指南。本书由诺基亚资深专家进行了全面审阅。本书内容涉及了开发过程的各个阶段,从设计、编程、测试、调试到部署......一起来看看 《Series 60 应用程序开发》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具