03、MySQL【理解查询模型】

理解查询模型


  1. 理解select的查询过程

  2. select name from user where id=3;

    • 观念,每个列都是变量
    • 来到第一行三个列即三个变量, 取出了 id 变量作为比较条件
      • 判断第一行的id列的变量是否和查询的条件变量相符,
        • 当前行 id=1 条件行 id=3, where查询条件尝试 id=1 === id=3 的值为false
        • where 比的是 bool 取、不去, 列作为变量
        • 不相符继续向下查找
      • 如果相符了,则定位了 name 这个字段,还看作变量, select 的作用 将 name 这个变量取出来
    • where 是个表达式 为真取出来,假的不取
    • 理解 where 1, where 0
  3. 理解列当作变量

    • 变量可以计算,列也是
      • select uid+age, uid, age, name from user where 1;
    • 我想知道本店商品和市场售价相差多少?(衍生起了个别名alias)
      • select market_price-shop_price, market_price, shop_price , goods_name from goods where goods_id>1 && goods_id<10;
      • select market_price-shop_price as cheaper, market_price, shop_price , goods_name from goods where goods_id>1 && good

拓展一下思路场景

  • 扩展知识
    • 关键字: in, between, or, and , not in

有很多不是直接关联的查询,比如,取出1号栏目下的所有商品,命名有 我却查不到?
可能这个栏目是大栏目,例如,手机。 手机下有小米,apple, 华为… 这个大栏目有小栏目,却查不到?
需要根据大栏目id, 查小栏目。 然后根据小栏目去取得,对应商品

  1. 我首先要知道, 1号栏目有哪些子栏目,比如子栏目(4,5,9)
  2. 查询时候要 in 这些子栏目, 可以先查 parent_id = 1 , 知道这些栏目
  3. 然后查询 cat_id in 这些子栏目
  4. 上面做法太麻烦,怎么办?? 一步到位使用子查询,关联查询。

模糊的查询: where goods_name like “诺基亚%” 也可以 “%诺基亚”
like 关键字, % 任意匹配, _ 匹配一个单一字符
查出有诺基亚的: “诺基亚%” 也可以 “%诺基亚”
查诺基亚后面有三个字符的 “诺基亚___”

关于查询模型的理解, 可以怎么写sql?

  • 试试理解下面的代码, 看看是否懂了?
查询 -- 列,是变量的思想。
将number 在 0-16 增加1update mian set  num=num+1 where num between (0,16);
恢复原样: 
update mian set num = num -1 where num between 0 and 17;

查询 -- 加深, 列是变量的思想。
将goods_name 是诺基亚开头的改成 Nokia
update goods set  goods_name=concat('Nokia', substring(goods_name, 4)) where goods_name like 诺基亚%";
select * from goods where goods_name like "诺基亚%";
select * from goods where goods_name like "Nokia%";
恢复表也是一样。

可以查mysql的手册, mysql自带处理的函数。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

银色种子

打赏 >100 请留言,并私信

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值