07,sql 的查询模型(很重要)

查询模型的理解

1、把列看成变量

2、where后面看成语言中if(exp)里的表达式。哪一行能让exp为真,哪一行就能取出来。

其中对于第二点这里不做解释了,很容易明白。
主要讲一讲对第一点的解释:把列看成变量。

应用场景, 假设我现在想要得到每个商品的市场价格与店内价格的差,应该怎么做?

这里需要select出三个结果,goods_id,good_name,以及对应的差值。那么差值怎么计算?**直接用列(看成变量)计算即可。对应的名称就是“market_price-shop_price”。(其中的market_price以及另一个都是列名,这里当成变量使用)

如上图,尽管不是列名,但是也能打印出来。

对于列的运算结果,还可以起个列别名

既然可以看成变量,那么就可以给变量赋一个变量名。
比如把上面的差值用一个新的变量名discount来表示:
用as进行赋值

应用场景3

查出本店价格比市场省的钱,而且省200以上的商品,还是比较简单,如下图

注意,这里不能用‘where discount > 200’语句来做。

解释:

where只对表中数据发挥作用,而此时表中并没有discount。
对于结果中的dicount,应该用having来进行筛选。

只有把列看成了变量,才能在后续查询中,利用变量操作。
比如,num是一个列名称,那么可以用num整除10得到十位数。然后也可以进行别的操作。

你可能感兴趣的:(07,sql 的查询模型(很重要))