• SQL杂俎_陪老婆一起学SQL系列_Chapter 03_查询基础2


    前言

    回顾了一下前面几篇的内容,发现【查询基础1】里面的内容可能有些多了,

    为了避免填鸭式的教程风格,

    接下来的内容会采取 “短篇幅,多章节”的思路去写,每个章节只写一两块的内容~~~

    1、加减乘除

    作为数据处理的基本操作,加减乘除必然是SQL可以实现的功能。

    示例1:

    --查询每个同学的分数
    SELECT 
        name AS "姓名",
        score AS "得分",
        --老师发现有一题存在问题,每个同学都加2分
        score + 2 AS "加两分后的成绩",   /*加法*/ 
            
        --满分100分,同学们都被扣了多少分?
        100 - score AS "被扣分数",      /*减法*/ 
            
        --换算成120制,得分是多少
        score * 1.2 AS "120分制",      /*乘法*/ 
            
        --每个人分数的一半是多少?
        score  / 2 AS "分数的一半"      /*除法*/ 
    FROM student

    执行结果:

     如图,“被扣分数”这一列里显示的就是每位同学与满分100分之间的差距,

    每一行的数据,都产生了用别名命名的新的列。

    运算就是这样以行为单位执行的

    2、混合运算

    仔细观察示例1中的结果,发现在老师给同学们都加上2分之后,“被扣分数”,“120分制” 和 “分数的一半”

    这三列的新数据仍然是基于最原始的得分去计算的。
    (第一条数据 刘盖文的原始得分是86,加上2分后,应该是88分,一半的分数应该为44,但示例1中仍然是43)

    数据查询的结果需要同步更新,我们修改如下:

    示例2:

    SELECT 
        name AS "姓名",
        score AS "得分",
        score + 2 AS "加两分后的成绩",
        100 - score + 2 AS "被扣分数",
        score + 2 * 1.2 AS "120分制",
        score + 2  / 2 AS "分数的一半"
    FROM student

    执行结果:

    好像和我们想象的不一样啊???!!!

    因为,SQL语句中同样是遵守四则运算规则的。

    所以 score + 2 * 1.2 执行的顺序实际上是 2*1.2然后再 + score


    解决办法就是使用括号“()”,SQL语句中可以像正常的计算公式一样使用括号,

    示例3:

    SELECT 
        name AS "姓名",
        score AS "得分",
        --老师发现有一题存在问题,每个同学都加2分
        score + 2 AS "加两分后的成绩",  /*加法*/ 
            
        --满分100分,同学们都被扣了多少分?
        100 - (score + 2) AS "被扣分数",      /*减法*/ 
            
        --换算成120制,得分是多少
        (score + 2) * 1.2 AS "120分制",       /*乘法*/ 
            
        --每个人分数的一半是多少?
        (score + 2)  / 2 AS "分数的一半"      /*除法*/ 
    FROM student

    执行结果:

    括号中的运算表达式的优先级会得到提升。

     tips:括号提升优先级的功能,不仅仅局限于四则运算,后面我们还会用到~

    3、特殊的 NULL

    在前面示例1、示例2的执行结果中,其实还有一行数据(截图隐藏了)

     “美芬”同学的得分在原始的 student 表中是 NULL

     通过上面的例子,我们发现加减乘除四则运算中,NULL值产生的结果都是NULL。

    实际上,所有包含NULL的计算,结果肯定是NULL。

    Tips:

    # 在很多时候,类似 9 / 0 这样除数为0 的情况会触发报错,但 NULL / 0 不会报错,结果依然是NULL

    # 如果实际数据处理的过程中,需要实现 NULL + 2 = 2的效果,我们可以借用其他方式,后面会介绍到。

  • 相关阅读:
    超轻量级三级展开列表
    5 Reasons Your Javascript Stinks
    xhEditor 轻量级文本编辑器简单配置
    简单SEO攻略
    ashx文件
    xml中xPath的使用
    关于MSDN,文章索引
    关于Jquery中 “$(document).ready(function(){ })”函数的使用
    在Jquery使用过程中用到了css属性:opacity(不透明度),cursor (光标的类型、形状)
    初识Silverlight
  • 原文地址:https://www.cnblogs.com/MyDoldrums/p/14104884.html
Copyright © 2020-2023  润新知