zoukankan      html  css  js  c++  java
  • MySQL常用操作及语句

    MySQL

    MySQL常用操作

    字符串

    LENGTH(FName)      计算字符串长度 LENGTH(FName)
    LOWER(FName)       字符串转换成小写
    UPPER(FName)       字符串转换成大写
    LTRIM(' abc ')     截去字符串左侧空格
    RTRIM(' abc ')     截去字符串右侧空格
    TRIM(' abc ')      截去字符串两侧空格 
    SUBSTRING(string,start_position,length)   截取子串 SUBSTRING(string,开始位置,截取长度)
    INSTR(FName,'m')   计算'm'在字段中的位置   都是从1开始
    LEFT(FName,3)       从左开始截取子串  LEFT(FName,截取的位数)
    RIGHT(FName,3)     从右侧开始截取子串 RIGHT(FName,截取的长度)
    REPLACE(FName,'i','e')  字符串替换 将指定字符替换成新的字符 若要删除子串将之替换成空字符串即可REPLACE(FName,'m','')
    REPLACE(' abc 123 wpf',' ','') 删除字符串中间的空格(trim的三个函数无法实现) 
    ASCII('abc')        得到字符串的ASCII码,若为多个字符则返回第一个的ASCII码
    CHAR(56)            得到一个ASCII码对应的字符
    -- 实际案例
    FIND_IN_SET( 'a','a,b,c' ) 判断一个字符串是否在另一个字符串中,存在返回索引1开始,不存在返回0  是完全匹配,用,分割
    select FIND_IN_SET( 'ab','ab,c' ),FIND_IN_SET( 'a','ab,c' ),FIND_IN_SET( 'a','a,c' ),FIND_IN_SET( 'a,b','a,b,c' ),FIND_IN_SET( '1','2,1,3' )
            --		1  			0				1			  0                         2
    用于一个告警字段解决所有告警,如   告警规则:1(14:30告警),2(20:00)  如有多个时间告警,使用,分隔写入,如  1,2,3 使用FIND_IN_SET()匹配规则   
    字符串截取实现split的功能
    

    日期

    日期:年月日
    时间:时分秒
    日期时间:年月日 时分秒
    时间戳:毫秒数
    
    1.获取日期时间
    得到当前日期时间  NOW(),别名:SYSDATE(),CURRENT_TIMESTAMP  2008-01-12 01:13:19
    得到当前的日期    CURDATE(),CURRENT_DATE   2008-01-12
    得到当前时间      CURTIME(),CURRENT_TIME   01:17:09
    一天的开始时间   date_format(curdate(),'%Y-%m-%d %H:%i:%s') 
    2.日期增减
    DATE_ADD (date,INTERVAL expr type) 别名:ADDDATE()  expr type:SECOND,MINUTE,HOUR,DAY,WEEK,MONTH,QUARTER(季度),YEAR
    DATE_ADD(FBirthDay,INTERVAL 2 MONTH) 也可为负数表示之前
    若想增加3天2小时分钟 DATE_ADD(date,INTERVAL '3 2:10' DAY_MINUTE)
    计算指定日期前的特定时间段的日期  DATE_SUB() ,与DATE_ADD()中参数为负数时效果一样,用法也几乎相同
    DATE_SUB(FBirthDay, INTERVAL '3 2:10' DAY_MINUTE)  3天2小时分钟前的时间
    
    3.计算日期差额
    DATEDIFF((date1,date2) 只能计算两个日期见的天数差额
    DATEDIFF(FRegDay, FBirthDay)/7  周数差额
    计算时间差值   TIMESTAMPDIFF(interval,datetime_start,datetime_end)   根据不同的interval返回不同的时间间隔单位(前小返回正,前大返回负)
    interval:
    SECOND 秒 SECONDS 
    MINUTE 分钟 MINUTES 
    HOUR 时间 HOURS 
    DAY 天 DAYS 
    MONTH 月 MONTHS 
    YEAR 年 YEARS
    
    4.计算一个日期是星期几
    DAYNAME(FBirthDay) 返回英文的日期表示法
    
    5.指定日期格式化
    DATE_FORMAT(date,format)  
    format:
    %S 秒数(00..59)
    %H 24小时制的小时 (00..23)
    %d 当月的第几天,两位数字,不足补零
    %m 两位数字表示的月份(00..12)
    %Y 年份数,四位数字
    %h 12小时制的小时(01..12)
    %i 数字形式的分钟(00..59)
    %j 日期在当年中的天数(001..366)
    %M 月份名(January..December)
    %p 上午还是下午(AM.. PM)
    %r 12小时制时间,比如08:09:29 AM
    %s 秒数(00..59)
    %T 时间,24小时制,格式为hh:mm:ss
    %U 所属周是当年的第几周,周日当作第一天(00..53)
    %u 所属周是当年的第几周,周一当作第一天(00..53)
    %V 所属周是当年的第几周,周日当作第一天(01..53)
    %v 所属周是当年的第几周,周一当作第一天(01..53)
    %W 星期几(Sunday..Saturday)
    %w 星期几,数字形式(0=Sunday..6=Saturday)
    %X 本周所属年,周日当作第一天
    %x 本周所属年,周一当作第一天
    %y 年份数,两位数字
    
    

    转换函数

    MYSQL中提供了CAST()函数和CONVERT()函数用于进行类型转换
    CAST(expression AS type)        CONVERT(expression,type)
    type: CHAR 字符串,DATE日期,DATETIME时间日期,TIME时间,SIGNED INTEGER有符号整数(缩写SIGNED),UNSIGNED INTEGER无符号整数(缩写UNSIGNED)
    CAST('123.456' as decimal) 将会得到 123(小数点后面的将会被省略掉)
    CAST('123.456' as decimal(38, 2)) ===>123.46
    
    string转时间
    其中第1要在一个“宽松”的语法是被允许的:以任何标点符号作为日期部分和时间部分中的定界符,如:
    一个 YYYYMMDD 或 YYMMDD 格式的数字,只要数字看起来像是一个日期。
    例如,19830905 和 830905 被解释成为 '1983-09-05 '。
    String转date
    DATE(Str)
    string转timestamp
    TIMESTAMP(Str)
    TIMESTAMP(CONCAT(date_id,hour_id,minute_id,'00'))
    

    插入或更新 replace

    • replace into
    • replace into set
    • replace select
      举一个实际工作中的例子:定时扫描hive元数据库中的表分区及大小,汇总成表的总大小后写入到MySQL中。粒度为每天一条记录,但为了尽可能的体现表的最新大小,且不至于占用太多的资源,方案定为每天扫描6次,每4小时扫描写入一次。
      其插入更新的操作可以交由数据库来完成,也可以交由程序代码来完成。下面记录的是交由数据库来完成的实现方案:
  • 相关阅读:
    C# 函数参数object sender, EventArgs e
    Winform中利用委托实现窗体之间的传值
    Web前端学习笔记——Canvas
    js 删除 按钮所在的行
    box-sizing
    前端中关于HTML标签的属性for的理解
    apply和call的用法总结
    target 确定元素是谁??
    css3过渡和动画
    处理两端极限值的小技巧
  • 原文地址:https://www.cnblogs.com/missedyou/p/13254803.html
Copyright © 2011-2022 走看看