MySQL数据库基础(八):连接查询、分页查询、子查询

1、交叉连接查询(笛卡尔积)

1.1 交叉连接查询product,category两张表中数据(无条件)

select * from product,category;

查询出来的是两张表的乘积,查询出来的数据没有意义
在这里插入图片描述
1.2 过滤出有意义的数据

select * from product,category where cno=cid;

在这里插入图片描述
1.3 加上别名

select * from product as p,category as c where p.cno=c.cid;
或
select * from product  p,category  c where p.cno=c.cid;

在这里插入图片描述

2、内连接查询

2.1 隐式内连接

select * from product  p,category c where p.cno=c.cid;

在这里插入图片描述
2.2 显式内连接

select * from product p inner join category c on p.cno=c.cid;

在这里插入图片描述

3、外连接查询

3.1 左外连接

将左表的数据全部查询出来,如果右表中没有对应的数据,用null代替

数据准备

insert into product values(null,'耐克',1000,null);

左外连接查询

select * from product p left outer join category c on p.cno=c.cid;

在这里插入图片描述
3.2右外连接

将右表的数据全部查询出来,如果左表中没有对应的数据,用null代替

数据准备

insert into category values(100,'电脑办公','电脑....');

右外连接查询

select * from product p right outer join category c on p.cno=c.cid;

在这里插入图片描述

4、分页查询

limit 第一个参数,第二个参数;

第一个参数是索引,第二个参数是显示的个数。

练习:

  • 每页的数据3
  • 起始索引从
  • 第一页:0
  • 第二页:3

使用分页查询第一页

select * from product limit 0,3;

在这里插入图片描述
查询第二页

select * from product limit 3,3;

在这里插入图片描述
代码计算:

起始索引:index代表显示第几页 页数从1开始
每页显示3条数据:startindex = (index-1)*3

5、子查询

5.1 查询分类名称为手机数码的所有商品

select * from product where cno=(select cid from category where cname='手机数码');

在这里插入图片描述
5.2 查询出(商品名称、商品分类名称)信息

左连接方式

select p.pname,c.cname from product p left outer join category c on p.cno=c.cid;

在这里插入图片描述
子查询

select pname,(select cname from category c where p.cno=c.cid) from product p;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值