1.简单多表查询
select * from [表名1],[表名2]
select * from product,productdir
2.笛卡尔积:没有连接条件的表的关系返回的结果。
多表查询会产生笛卡尔积。如下图
正常数据
3.隐式内连接查询
-- 查询货品ID ,货品名称,货品所属分类
select productId,productName,dirName from product,productdir
where product.dirId=productdir.dirId -- 重复列名使用 [表名].[列名]
select productId,productName,dirName from product p,productdir pd
where p.dirId=pd.dirId -- 表定义别名
-- 查询货品ID ,货品名称,货品所属分类
select productId,productName,dirName from product,productdir where product.dirId=productdir.dirId
select productId,productName,dirName from product p,productdir pd where p.dirId=pd.dirId
-- 查询零售价格大于200的无线鼠标
-- 查询零售价格大于200的无线鼠标(别名)
select * from product p,productdir pd where p.dirId=pd.dirId and p.salePrice>200
and pd.dirName ='无线鼠标'
-- 查询每个货品对应的分类以及对应的库存
select productName,dirName,stockNum from product p,productdir pd,productstock ps
where p.dirId=pd.dirId and p.productId=ps.product_id
-- 如果库存货物都销售完成,按照利润从高到底查询货物名称,零售价,货品分类(三张表)
select productName,salePrice,dirName,stockNum*(salePrice-costPrice) as profit
from product p,productdir pd,productstock ps where p.dirId=pd.dirId and p.productId=ps.product_id
order by profit desc
4.自连接查询
自连接查询:把一张表看成两张表使用
select b.dirId, b.dirName,a.dirName from productdir a,productdir b
where a.dirId=b.parent_id