zoukankan      html  css  js  c++  java
  • 结合实际应用总结mySql语句关键场景用法

    根据应用场景,不定时更新,欢迎大家把自己遇到的问题留言,稍后完善。

    1 mySql三范式

    1.1 第一范式(1NF)

      (必须有主键,列不可分)数据库表中的任何字段都是单一属性的,不可再分

    1.2 第二范式(2NF)

      (当一个表是复合主键时,非主键的字段不依赖于部分主键(即必须依赖于全部的主键字段))

      数据库表中非关键字段对任一候选关键字段的 都 不存在部分函数依赖

    1.3 第三范式(3NF)

      关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递依赖

    2 各种场景

    2.1 批量更新表数据

      适用场景:将表table_a数据中字段a,批量更新到表table_b中。适用于表迁移。

      关键字:inner join

      sql语句:update table_a a   inner join table_b b on b.org_id=a.department_id   set a.department_short_name = b.short_name

      解释:table_a的department_id和table_b的org_id中值一样,需要将table_b 中idorg_id一样的short_name批量更新到table_a中。

    2.2 条件语句,给字段重新赋值

      适用场景:每个枚举,返回对应的字符串。

      关键字:case when x=y then e when x=z then f end

      sql语句:(case when a.status=1 then '申请中' when a.status=2 then '受理中' when a.status=3 then '已转账' when a.status=4 then '拒绝' end) as status

      解释:当status为1时状态为申请中,当status为2时状态为受理中,当status为3时状态为已转账,当status为4时状态为拒绝。

    2.3 条件语句,给字段拼接字符

      适用场景:给字段拼接字符。

      关键字:concat

      sql语句:(case when a.type=0 then concat('-',a.score) else concat('+',a.score) end) as showscore

      解释:当type为0时score增加“-”前缀,当type为其他时score增加“+”前缀。

  • 相关阅读:
    hdu1698(线段树)
    poj3468(线段树)
    hdu1394(线段树求逆序对)
    hdu1754(线段树)
    hdu1166(线段树)
    hdu2412(树形dp)
    hdu4714(树形dp)
    hdu4705(树形dp)
    hdu4679(树形dp)
    滑动导航条
  • 原文地址:https://www.cnblogs.com/guobm/p/12697343.html
Copyright © 2011-2022 走看看