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

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

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

select * from product,category;

查询出来的是两张表的乘积,查询出来的数据没有意义
MySQL数据库基础(八):连接查询、分页查询、子查询_第1张图片
1.2 过滤出有意义的数据

select * from product,category where cno=cid;

MySQL数据库基础(八):连接查询、分页查询、子查询_第2张图片
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;

MySQL数据库基础(八):连接查询、分页查询、子查询_第3张图片

2、内连接查询

2.1 隐式内连接

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

MySQL数据库基础(八):连接查询、分页查询、子查询_第4张图片
2.2 显式内连接

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

MySQL数据库基础(八):连接查询、分页查询、子查询_第5张图片

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;

MySQL数据库基础(八):连接查询、分页查询、子查询_第6张图片
3.2右外连接

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

数据准备

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

右外连接查询

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

MySQL数据库基础(八):连接查询、分页查询、子查询_第7张图片

4、分页查询

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

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

练习:

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

使用分页查询第一页

select * from product limit 0,3;

MySQL数据库基础(八):连接查询、分页查询、子查询_第8张图片
查询第二页

select * from product limit 3,3;

MySQL数据库基础(八):连接查询、分页查询、子查询_第9张图片
代码计算:

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

5、子查询

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

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

MySQL数据库基础(八):连接查询、分页查询、子查询_第10张图片
5.2 查询出(商品名称、商品分类名称)信息

左连接方式

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

MySQL数据库基础(八):连接查询、分页查询、子查询_第11张图片
子查询

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

MySQL数据库基础(八):连接查询、分页查询、子查询_第12张图片

你可能感兴趣的:(MySQL数据库)