CC00051.bigdatajava——|Java&MySQL多表/外键/数据库设计.V09|——|MySQL.v09|内连接查询|

一、多表查询的分类
### --- 内连接查询

~~~     内连接的特点:
~~~     通过指定的条件去匹配两张表中的数据, 匹配上就显示,匹配不上就不显示
~~~     比如通过: 从表的外键 = 主表的主键 方式去匹配
### --- 隐式内连接

~~~     from子句 后面直接写 多个表名 使用where指定连接条件的 这种连接方式是 隐式内连接.
~~~     使用where条件过滤无用的数据
~~~     语法格式
SELECT 字段名 FROM 左表, 右表 WHERE 连接条件;
### --- 查询所有商品信息和对应的分类信息

~~~     # 隐式内连接
SELECT * FROM products,category WHERE category_id = cid;
### --- 查询商品表的商品名称 和 价格,以及商品的分类信息
### --- 可以通过给表起别名的方式, 方便我们的查询(有提示)

SELECT
p.`pname`,
p.`price`,
c.`cname`
FROM products p , category c WHERE p.`category_id` = c.`cid`;
~~~     # 查询 格力空调是属于哪一分类下的商品

SELECT p.`pname`,c.`cname` FROM products p , category c
WHERE p.`category_id` = c.`cid` AND p.`pid` = 'p002';
### --- 显示内连接
~~~     使用 inner join ...on 这种方式, 就是显式内连接
~~~     语法格式

SELECT 字段名 FROM 左表 [INNER] JOIN 右表 ON 条件
-- inner 可以省略
~~~     # 查询所有商品信息和对应的分类信息
~~~     # 显式内连接查询
SELECT * FROM products p INNER JOIN category c ON p.category_id = c.cid;
~~~     # 查询鞋服分类下,价格大于500的商品名称和价格
~~~     # 查询鞋服分类下,价格大于500的商品名称和价格
-- 我们需要确定的几件事
-- 1.查询几张表 products & category
-- 2.表的连接条件 从表.外键 = 主表的主键
-- 3.查询的条件 cname = '鞋服' and price > 500
-- 4.要查询的字段 pname price
SELECT
p.pname,
p.price
FROM products p INNER JOIN category c ON p.category_id = c.cid
WHERE p.price > 500 AND cname = '鞋服';
二、sql语句
### --- sql语句

-- 多表查询 交叉连接查询 的查询结果会产生 笛卡尔积 是不能够使用的.
SELECT * FROM products ,category;
/*
    1.内连接查询
    2.外连接查询
*/

/*
    内连接查询
        特点 通过指定的条件 去匹配俩张表中的内容, 匹配不上的就不显示
        
        隐式内连接
            语法格式: select 字段名... from 左表,右表 where 连接条件
            
        显式内连接
            语法格式: select 字段名... from 左表 [inner] join 右表 on 连接条件
            inner 可以省略
    
*/
-- 1.查询所有商品信息和对应的分类信息
-- 隐式内连接
SELECT * FROM products , category WHERE category_id = cid;
-- 2.查询商品表的商品名称 和 价格,以及商品的分类信息
-- 多表查询中 可以使用给表起别名的方式 简化查询
SELECT  
    p.`pname`,
    p.`price`,
    c.`cname`
FROM products p,category c WHERE p.`category_id` = c.`cid`;

--  查询 格力空调是属于哪一分类下的商品 
SELECT 
    p.`pname`,
    c.`cname`
FROM products p, category c WHERE p.`category_id` = c.`cid` AND p.`pid` = 'p002';
-- 1.查询所有商品信息和对应的分类信息
-- 显式内连接
SELECT 
* 
FROM products p 
INNER JOIN category c ON p.`category_id` = c.`cid`;
-- 2.查询鞋服分类下,价格大于500的商品名称和价格
/*
    查询之前要确定几件事情
        1.查询几张表 products &  category
        2.表的连接条件 p.`category_id` = c.`cid`; 从表.外键 = 主表.主键
        3.查询所用到的字段  商品名称  价格
        4.查询的条件 分类 = 鞋服,  价格 > 500
*/
SELECT 
    p.`pname`,
    p.`price`
FROM products p 
INNER JOIN category c ON p.`category_id` = c.`cid`
WHERE p.`price` > 500 AND c.`cname` = '鞋服';
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yanqi_vip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值