美文网首页
MySQL 中的查询模型

MySQL 中的查询模型

作者: djz0306 | 来源:发表于2019-06-29 11:57 被阅读0次

    在 MySQL 中查询是使用最多的也是最复杂的操作之一,但是经常可能会写错或者结果与预期不一致的情况。所以查询的模型理解就相当重要了。

    模型理解

    1. 把列看出变量,把 where 后面看成是 Python 或者 Java 等语言中 if(exp) 中的 exp 表达式

    2. 哪行可以被取出来,就看哪行能让 exp 表达式为真

    3. 把列看成变量,既然是变量就可以运算,术语上叫做广义投影。例如取出所有商品的 id 和名字,省的钱超过200,并计算出本店价比市场价节省的钱,计算出来的列可以不起名字也可以起个列别名:

      select goods_id, goods_name, (market_price - shop_price) as discount from goods where (market_price - shop_price) > 200;
      
    MySQL中查询广义投影的计算.jpg

    此处需要注意的是,where 后面不能直接用 discount ,要对结果进行筛选的话可以使用 having。where 进行判断是对表中的原数据进行判断,等把结果筛选出来以后才有 discount 所以 where 中直接用 discount 会出现 Unknown column 'discount' in 'where clause' 的报错

    练习题

    1. 现有如下表和数组,把其中 num 值处于 [20,29] 的改为 20,把 num 值处于 [30,39] 之间的改为 30。num中的值为:3,12,15,25,23,29,34,37,32,45,48,52,表名为mian

      update mian num=floor(num/10)*10 where num between 20 and 39;
      

      结果如下:

    MySQL 练习题1.jpg
    1. 把 goods 表中的商品名由“摩托罗拉xxxx”改为“联想”:

      update goods set goods_name = concat('联想',substring(goods_name,5)) where goods_name like '摩托罗拉%';
      

      使用 substring() 截取字符串,然后使用 concat() 拼接。结果如下:

      MySQL 练习题2.jpg

    相关文章

      网友评论

          本文标题:MySQL 中的查询模型

          本文链接:https://www.haomeiwen.com/subject/chtpcctx.html