余瑜的博客 余瑜的博客
首页
  • 并发
  • 线程池
  • spring
  • maven
  • 其他
  • redis
  • mysql
  • linux
  • zookeeper
  • docker
  • terminal
  • kong插件开发
  • 资料
  • leetCode-简单
  • blog
  • 其他
关于
GitHub (opens new window)
首页
  • 并发
  • 线程池
  • spring
  • maven
  • 其他
  • redis
  • mysql
  • linux
  • zookeeper
  • docker
  • terminal
  • kong插件开发
  • 资料
  • leetCode-简单
  • blog
  • 其他
关于
GitHub (opens new window)
  • redis

  • mysql

    • 高性能mysql学习笔记
    • MySQL中的函数
      • ON DUPLICATE KEY UPDATE
      • USING()
      • CURRENT_DATE
      • RAND()
      • CONCAT(a,b)
      • LEFT("字符串s",n)
      • LEFT(NOW(), 14)
      • INETATON() INETNTOA()
      • INTERVAL
      • TO_DAYS()
      • CURRENT_DATE
    • InnoDB和MyISAM区别
    • mysql索引最左原则
    • b+树图文详解
    • 聚集索引与辅助索引
    • 索引合并
  • DB
  • mysql
余瑜
2019-05-14
目录

MySQL中的函数

# ON DUPLICATE KEY UPDATE

在这个表中day和slot都是主键,进行插入时如果插入的数据中day或者slot有一项和表中数据时重复的就不添加直接对表中该数据进行操作,cnt = cnt + 1

<!--
x表中day被group by了所以每天的东西被汇总,比如今天就只有一条数据,以今天为例和c表进行关联后,关联语句为day相同,那么x表的今天的数据会和c表中的所有今天的数据结合成一条新的数据. 
然后set , 如果槽位相同也就是0; 那么c表中的cnt会变为x表的cnt,同时slot会变为0,         否则cnt变为0,槽位还是原来的槽位.
有两条set并且都有if是因为怕表中没有slot=0,那么久将最小的那个slot赋值为0
-->

CREATE TABLE daily_hit_counter(
    day date not null,
    slot tinyint unsigned not null,
    cnt int unsigned not null ,
    primary key(day, slot)
)ENGINE=InnoDB;

INSERT INTO daily_hit_counter(day, slot, cnt)
    VALUES(CURRENT_DATE, RAND()*100, 1)
    ON DUPLICATE KEY UPDATE cnt = cnt + 1;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# USING()

见上一个代码如果两张表的用* join做关联,并且on字段显示的关联字段名称一致,可以使用USING()代替on

# CURRENT_DATE

当前日期 不带时分秒

# RAND()

生成大于0小于1的随机数

# CONCAT(a,b)

拼接字符串

# LEFT("字符串s",n)

截取s的前n位

# LEFT(NOW(), 14)

来获得当前的日期和时间最接近的小时:

# INET_ATON() INET_NTOA()

将ip地址在字符串与证书之间转换 address to number

SELECT INET_ATON('192.168.1.1')
SELECT INET_NTOA('3232235777')
1
2

# INTERVAL

MySQL日期换算连接符

1. MySQL 为日期增加一个时间间隔:date_add()
select date_add(@now(), interval 1 day);   - 加1天
1
2

# TO_DAYS()

返回从0000年(公元1年)至当前日期的总天数。

# CURRENT_DATE

获取的是当天日期,如:2015-12-07

上次更新: 2021/02/20, 19:26:07

← 高性能mysql学习笔记 InnoDB和MyISAM区别→

Theme by Vdoing | Copyright © 2018-2022 逆光世间 | 备案号: 京ICP备19016086号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式