sql知识总结(不断更新)

两张表,如果你只需要一张表的数据且这张表的数据依赖另一张表的数据作为过滤条件,则用子查询

如果涉及两张表的数据查询,则使用join关联

1.round函数
  a.round(x) x最接近的整数
  e.g. round(2.5) 取3
  b. round(x,d) d是保留d位小数
  e.g. round(2.456,0) 不保留小数位 返回2.0
2.时间函数

   获取当前时间 select now() / select sysdate()

   获取当前日期 select curDate()

   日期 —> 字符串:Date_format(时间戳,‘%Y%m%d’)

   字符串 —> Datetime类型 str_to_date(str,format) 

    时间戳转成时间 from_unixtime(时间戳)

    返回当前时间戳 Unix_timestamp()

  from_unixtime函数
  不管10位还是13位都是unix时间戳
  a.10位时间戳转成日期
    from_unixtime(x) x是十位时间戳 返回日期类型
  b.13位时间戳转成日期
    from_unixtime(round(x/1000,0)) 先把十三位变成十位,再返回日期类型

sql 调优 是一个持续的过程

可以添加limit关键字

选择exists 代替 in   

使用表的别名 尽量避免全表扫描

数据库设计优化,避免数据冗余

使用参数化查询,不仅提高sql执行效率,而且防止sql注入

 python中引入pymysql

监控和分析,定期分析日志,找出执行效率低下的sql语句

                     使用性能分析工具 explain,找出性能瓶颈        

not in 和 not exists的区别
性能 not in 不走索引  
not in 字段为null的不进行筛选

coalesce
    返回参数列表中第一个非Null值

ifnull(a,b)

    第一个值不为空则返回,为空则返回第二个值

ifnull只有两个参数,而coalesce有两个以上的参数

between and 是闭区间

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值