那些纷繁的多表查询

在程序开发时,不可避免的要用到视图,首先我们来看看视图到底有什么作用:

简单性:看到的就是需要的。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次制定全部的条件。

安全性:通过视图用固话只能查询和修改他们所能见到的数据。数据库中的其他数据则既看不见也取不到。数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上。

其他的优点暂时省略。

视图中我们用的最多的可能就是多表查询了,既然视图有这么多的优点,那么我们就来说说如何多表查询

两个表查询:

情景1

如图所示:


其中foodTypeID为第二个表的主键,那么当我们要筛选出这样的数据(foodID、foodTypeName、foodName、Price)的时候就要用到多表查询了,是这样做的:

select FoodInfo.foodID, FoodTypeInfo.foodTypeName , FoodInfo.foodName ,FoodInfo.price from FoodInfo inner join FoodTypeInfo on FoodInfo.foodTypeID =FoodTypeInfo .foodTypeID

情景2

如图所示:


大家可以看到第一张表和上面的相比增加了两个字段,其中我们要用到的就有ManagerID,第二张表还是原来那张表,增加的第三张表中我们也用到ManagerID,最后查询的结果想要看到的是(foodID、foodTypeName、foodName、Price,ManagerID),是这样操作的:

select FoodInfo.foodID, FoodTypeInfo.foodTypeName ,
	   FoodInfo.foodName ,FoodInfo.price,
	   managerInfo.ManagerID  
from (FoodInfo inner join FoodTypeInfo 
on FoodInfo.foodTypeID =FoodTypeInfo .foodTypeID )
inner join managerInfo on managerInfo.ManagerID =FoodInfo .ManagerID

 

看到上面的我们是不是可以总结出这样的规律呢?

我们以五个表为例来说明一下:

首先前面的选择表头的东西就省略了,直接写表和表之间的关系:

from((((表 inner join 表 on 表.字段名 =表.字段名) innner join 表 on 表.字段名=表.字段名) inner join 表 on表.字段名=表.字段名) inner join 表 on 表.字段名=表.字段名






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值