Mysql函数

2011-10-27 22:56

mysql数据库高级部分

字符串处理函数
=======================================
*concat(s1,s2,…Sn) 连接s1,s2..Sn为一个字符串
insert(str,x,y,instr)将字符串str从第xx位置开始,y字符串的子字符串替换为字符串str
lower(str)将所有的字符串变为小写
upper(str)将所有的字符串变为大写
left(str,x)返回字符串中最左边的x个字符
rigth(str,y)返回字符串中最右边的x个字符
lpad(str,n,pad)用字符串pad对str最左边进行填充,直到长度为n个字符串长度
rpad(str,n,pad)用字符串pad对str最右边进行填充,直到长度为n个字符串长度
trim(str)  去掉左右两边的空格
ltrim(str) 去掉字符串str左侧的空格
rtrim(str) 去掉字符串str右侧的空格
repeat(str,x)   返回字符串str重复x次
replace(str,a,b)将字符串的的a替换成b
strcmp(s1,s2)   比较字符串s1和s2
substring(s,x,y)返回字符串指定的长度
*length(str)  返回值为字符串str 的长度  


数值函数
====================================
*abs(x)    返回x的绝对值
ceil(x)   返回大于x的最小整数值
floor(x)  返回小于x的最大整数值
mod(x,y)  返回x/y的取余结果
rand()    返回0~1之间的随机数
*round(x,y)返回参数x的四舍五入的有y位小数的值
truncate(x,y) 返回x截断为y位小数的结果


日期和时间函数
==================================================
curdate()  返回当前日期,按照’YYYY-MM-DD’格式
curtime()  返回当前时间,当前时间以'HH:MM:SS'
*now()      返回当前日期和时间,
*unix_timestamp(date) 返回date时间的unix时间戳
from_unixtime(unix_timestamp[,format])    返回unix时间的时间
week(date)        返回日期是一年中的第几周
year(date)      返回日期的年份
hour(time)      返回time的小时值
minute(time)    返回日time的分钟值
monthname(date) 返回date的月份
*date_fomat(date,fmt) 返回按字符串fmt格式化日期date值
date_add(date,INTERVAL,expr type) 返回一个日期或者时间值加上一个时间间隔的时间值
*datediff(expr,expr2)   返回起始时间和结束时间的间隔天数

其他常用函数
==================================================
*database() 返回当前数据库名
version()   返回当前服务器版本
user()        返回当前登陆用户名
inet_aton   返回当前IP地址的数字表示
inet_ntoa(num) 返回当前数字表示的ip
*password(str)  返回当前str的加密版本
*md5(str)      返回字符串str的md5值



创建一个触发器
=========================================
格式:1、触发器的定义:
  CREATE TRIGGER trigger_name trigger_time trigger_event
    ON tbl_name FOR EACH ROW trigger_stmt
 
  说明:
  # trigger_name:触发器名称
  # trigger_time:触发时间,可取值:BEFORE或AFTER
  # trigger_event:触发事件,可取值:INSERT、UPDATE或DELETE。
  # tb1_name:指定在哪个表上
  # trigger_stmt:触发处理SQL语句。
 
    示例:
        mysql> delimiter $$
        mysql> create trigger del_stu before delete on stu for each row
            -> begin
            ->  insert into stu_bak values(old.id,old.name,old.sex,old.age,old.addtime);
            -> end;
            -> $$
        Query OK, 0 rows affected (0.05 sec)

        mysql> delimiter ;
        

视图:(虚拟表信息)
===========================================
格式:
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
    VIEW view_name [(column_list)]
    AS select_statement
    [WITH [CASCADED | LOCAL] CHECK OPTION]
    
    
    

  function aa($a,$b,&$c){
     $c =  $a+$b;
  }

    aa(10,20,$cc);    
        
        echo $cc;


存储过程的创建
//============================================        
DELIMITER $$

DROP PROCEDURE IF EXISTS `lamp34`.`adddemo`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `adddemo`(in n varchar(16),in s varchar(2))
BEGIN
    set n=UPPER(n);
    set s=UPPER(s);
    insert into demo values(n,s);
    END$$
DELIMITER ;

原文地址:https://www.cnblogs.com/vinbrave/p/2921808.html