zoukankan      html  css  js  c++  java
  • 视图和函数

    /*
    aurot:hch
    email:yuzhonghe113@126.COMMIT
    date:12-06-12
    */
    -- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    /*
    *1、mysql常用语句
    */

    -- 搜索功能
    select * FROM openshop_version.user_users#数据库+加表名

    -- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    /*
    *1、视图
    */
    -- 创建视图
    /*3. 注意事项
    创建视图存在如下注意事项:
    (1) 运行创建视图的语句需要用户具有创建视图(CRATE VIEW)的权限,若加了[OR REPLACE]时,还需要用户具有删除视图(DROP VIEW)的权限;
    (2) SELECT语句不能包含FROM子句中的子查询;
    (3) SELECT语句不能引用系统或用户变量;
    (4) SELECT语句不能引用预处理语句参数;
    (5) 在存储子程序内,定义不能引用子程序参数或局部变量;
    (6) 在定义中引用的表或视图必须存在。但是,创建了视图后,能够舍弃定义引用的表或视图。要想检查视图定义是否存在这类问题,可使用CHECK TABLE语句;
    (7) 在定义中不能引用TEMPORARY表,不能创建TEMPORARY视图;
    (8) 在视图定义中命名的表必须已存在;
    (9) 不能将触发程序与视图关联在一起;
    (10) 在视图定义中允许使用ORDER BY,但是,如果从特定视图进行了选择,而该视图使用了具有自己ORDER BY的语句,它将被忽略。
    */
    CREATE VIEW user_test
    AS
    SELECT * from user_users WHERE email LIKE "%yuz%"
    -- 修改视图
    #修改视图的注意事项除了第一条外跟创建视图的注意事项是一样的。第(1)条应改为:
    #该语句需要具有针对视图的CREATE VIEW和DROP权限,也需要针对SELECT语句中引用的每一列的某些权限。
    alter view user_test as select user_id,email from user_users WHERE email LIKE "%yuz%"
    -- 删除视图
    /*1. 语法
    DROP VIEW [IF EXISTS]
    view_name [, view_name] …
    [RESTRICT | CASCADE]
    该语句用户删除视图,可一次删除多个视图。[IF EXISTS]选项确保语句正确运行。若没有该子句,当指定的视图不存在时,将发生错误。
    2. 使用举例
    Eg1. 删除在前面的小节中创建的视图purchase_detail:DROP VIEW purchase_detail;
    Eg2. 删除一个未知的视图:DROP VIEW IF EXISTS test_view;
    Eg3. 删除多个视图:DROP VIEW IF EXISTS test_view1, test_view2;
    3. 注意事项
    必须对要删除的一个或多个视图拥有DROP VIEW的权限*/
    DROP VIEW user_test
    -- 使用视图
    select email FROM user_test

    -- ------------------------------------------------------------------------------------------------------------------------------------------------------------------
    /*
    *2、建立 存储过程
    可以加参数create procedure pr_add(a int,b int)
    使用LEAVE语句强制退出存储过程
    */
    CREATE PROCEDURE useCursor()
    BEGIN
    -- 定义变量
    declare tmpName varchar(20) default '' ;
    DECLARE no_more_record,pid Integer ;
    declare uid varchar(60);
    declare old_pay_points decimal(10,2);
    -- 定义游标
    DECLARE cur_user CURSOR FOR select u.user_id,u.pay_points from user_users u ;
    /* mysql 不知道为什么用异常加入判断 ?
    * 此请参考官方文档 20.2.11. 光标 光标
    * 这把 游标 异常后 捕捉
    * 并设置 循环使用 变量 no_more_record 为 1 跳出循环。
    */
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_record=1; -- 游标结束后设置变量值
    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET no_more_record=1;
    -- 默认变量值
    set no_more_record=0;
    open cur_user; -- 打开游标
    repeat -- 循环
    fetch cur_user into uid,old_pay_points; -- FETCH 获取游标当前指针的记录,并传给指定变量列表,注意变量数必须与MySQL游标返回的字段数一致,要获得多行数据,使用循环语句去执行FETCH
    IF(old_pay_points<0) then
    set old_pay_points = 0;
    end if;
    insert into user_points(user_id,point_type,plan_points,fact_points,point_time,point_type_name)values(uid,'0',0,old_pay_points,NOW(),'期初积分');
    until no_more_record end repeat; -- 循环结束 可以用while替换
    close cur_user;-- 关闭游标
    set no_more_record=0;
    END -- begin结束
    -- 第二个实例
    /*初始化*/
    drop procedure if exists useCursor

    /*建立 存储过程 create */
    CREATE PROCEDURE useCursor()
    BEGIN
    /*局部变量的定义 declare*/
    declare tmpName varchar(20) default '' ;
    declare allName varchar(255) default '' ;

    declare cur1 CURSOR FOR SELECT name FROM test.level ;

    /* mysql 不知道为什么用异常加入判断 ?
    * 此请参考官方文档 20.2.11. 光标 光标
    * 这把 游标 异常后 捕捉
    * 并设置 循环使用 变量 tmpname 为 null 跳出循环。
    */
    declare CONTINUE HANDLER FOR SQLSTATE '02000' SET tmpname = null;


    /*开游标*/
    OPEN cur1;
    /*游标向下走一步*/
    FETCH cur1 INTO tmpName;

    /* 循环体 这很明显 把游标查询出的 name 都加起并用 ; 号隔开 */
    WHILE ( tmpname is not null) DO
    set tmpName = CONCAT(tmpName ,";") ;
    set allName = CONCAT(allName ,tmpName) ;
    /*游标向下走一步*/
    FETCH cur1 INTO tmpName;
    END WHILE; #货用repeat替换

    CLOSE cur1;

    select allName ;
    END;
    -- 条用存储过程
    call useCursor()

    -- 删除存储过程
    drop procedure if exists useCursor

    -- ------------------------------------------------------------------------------------------------------------------------------------------------------------------
    /*
    *一、字符串处理函数
    */

    -- 返回字符的ascii编码
    select ASCII('dx');-- 返回字符串str的最左面字符的ASCII代码值。如果str是空字符串,返回0。如果str是NULL,返回NULL。
    select ORD('de');
    select CONV("a",16,2);# CONV(N,from_base,to_base) 在不同的数字基之间变换数字。返回数字N的字符串数字,从from_base基变换为to_base基,如果任何参数是NULL,返回NULL。参数N解释为一个整数,但是可以指定为一个整数或一个字符串。最小基是2且最大的基是36。如果to_base是一个负数,N被认为是一个有符号数,否则,N被当作无符号数。 CONV以64位点精度工作。
    /*BIN(N)
    -- 十进制转为八进制
    返回二进制值N的一个字符串表示,在此N是一个长整数(BIGINT)数字,这等价于CONV(N,10,2)。如果N是NULL,返回NULL。
    */
    select BIN(12);
    -- 十进制转为八进制
    select OCT(12);#OCT(N) 返回八进制值N的一个字符串的表示,在此N是一个长整型数字,这等价于CONV(N,10,8)。如果N是NULL,返回NULL。
    -- HEX(N) 返回十六进制值N一个字符串的表示,在此N是一个长整型(BIGINT)数字,这等价于CONV(N,10,16)。如果N是NULL,返回NULL。
    select HEX(255);
    -- 连接字符
    select CHAR(77,121,83,81,'76');#CHAR(N,...) CHAR()将参数解释为整数并且返回由这些整数的ASCII代码字符组成的一个字符串。NULL值被跳过。
    select CONCAT('My', 'S', 'QL');# CONCAT(str1,str2,...) 返回来自于参数连结的字符串。如果任何参数是NULL,返回NULL。可以有超过2个的参数。一个数字参数被变换为等价的字符串形式。
    -- 返回字符串str的长度。
    select LENGTH('text');
    select OCTET_LENGTH('text');
    select CHAR_LENGTH('text'); #注意,对于多字节字符,其CHAR_LENGTH()仅计算一次。
    select CHARACTER_LENGTH('text');
    -- 字符第一次出现位置
    select LOCATE('bar', 'foobarbar');#LOCATE(substr,str) 返回子串substr在字符串str第一个出现的位置,如果substr不是在str里面,返回0.
    select LOCATE('bar', 'foobarbar',5);#LOCATE(substr,str,pos) 返回子串substr在字符串str第一个出现的位置,从位置pos开始。如果substr不是在str里面,返回0。
    select INSTR('foobarbar', 'bar');#INSTR(str,substr) 返回子串substr在字符串str中的第一个出现的位置。这与有2个参数形式的LOCATE()相同,除了参数被颠倒。
    -- 字符串中插入字符
    select LPAD('hua',5,'hechun');#LPAD(str,len,padstr) 返回字符串str,左面用字符串padstr填补直到str是len个字符长。
    select RPAD('hua',5,'hechun');#RPAD(str,len,padstr) 返回字符串str,右面用字符串padstr填补直到str是len个字符长。
    -- 截取字符
    select LEFT('foobarbar', 5);#LEFT(str,len) 返回字符串str的最左面len个字符。
    select RIGHT('foobarbar', 4);#RIGHT(str,len) 返回字符串str的最右面len个字符。
    select SUBSTRING('Quadratically',5,6);#SUBSTRING(str,pos,len)和mid一样 从字符串str返回一个len个字符的子串,从位置pos开始。使用FROM的变种形式是ANSI SQL92语法。
    select SUBSTRING('Quadratically',5);#SUBSTRING(str,pos) 从字符串str的起始位置pos返回一个子串。
    select MID('Quadratically',5);
    select MID('Quadratically',5,6);
    select SUBSTRING_INDEX('www.mysql.com', '.', 2);#SUBSTRING_INDEX(str,delim,count) 返回从字符串str的第count个出现的分隔符delim之后的子串。如果count是正数,返回最后的分隔符到左边(从左边数) 的所有字符。如果count是负数,返回最后的分隔符到右边
    -- 删除字符串中某些字符
    select LTRIM(' barbar');#LTRIM(str) 返回删除了其前置空格字符的字符串str。
    select RTRIM('barbar ');#RTRIM(str) 返回删除了其拖后空格字符的字符串str
    select TRIM(' bar ');#DING | TRAILING] [remstr] FROM] str) 返回字符串str,其所有remstr前缀或后缀被删除了。如果没有修饰符BOTH、LEADING或TRAILING给出,BOTH被假定。如果remstr没被指定,空格被删除。
    select TRIM(LEADING 'x' FROM 'xxxbarxxx');
    select TRIM(BOTH 'x' FROM 'xxxbarxxx');
    select TRIM(TRAILING 'xyz' FROM 'barxxyz');
    -- 返回str的一个同音字符串
    select SOUNDEX('Hello');#SOUNDEX(str) 返回str的一个同音字符串。听起来“大致相同”的2个字符串应该有相同的同音字符串。一个“标准”的同音字符串长是4个字符,但是SOUNDEX()函数返回一个任意长的字符串。你可以在结果上使用SUBSTRING()得到一个“标准”的 同音串。所有非数字字母字符在给定的字符串中被忽略。所有在A-Z之外的字符国际字母被当作元音。
    -- 空格字符
    select SPACE(6);#SPACE(N) 返回由N个空格字符组成的一个字符串。
    -- 替代字符
    select REPLACE('www.mysql.com', 'w', 'Ww');#REPLACE(str,from_str,to_str) 返回字符串str,其字符串from_str的所有出现由字符串to_str代替。
    -- 重复字符
    select REPEAT('MySQL', 3);#REPEAT(str,count) 返回由重复countTimes次的字符串str组成的一个字符串。如果count <= 0,返回一个空字符串。如果str或count是NULL,返回NULL。
    -- 颠倒字符
    select REVERSE('abc');#REVERSE(str) 返回颠倒字符顺序的字符串str。
    -- 插入字符
    select INSERT('Quadratic', 3, 4, 'What');#INSERT(str,pos,len,newstr) 返回字符串str,在位置pos起始的子串且len个字符长得子串由字符串newstr代替。
    -- 返回某个字符串
    select ELT(1, 'ej', 'Heja', 'hej', 'foo');#ELT(N,str1,str2,str3,...) 如果N= 1,返回str1,如果N= 2,返回str2,等等。如果N小于1或大于参数个数,返回NULL。ELT()是FIELD()反运算。
    -- 返回str在str1, str2, str3, ...清单的索引
    select FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');#FIELD(str,str1,str2,str3,...) 返回str在str1, str2, str3, ...清单的索引。如果str没找到,返回0。FIELD()是ELT()反运算。
    select FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo');
    -- 返回字符串表中的位置的值
    SELECT FIND_IN_SET('b','a,b,c,d');#FIND_IN_SET(str,strlist) 如果字符串str在由N子串组成的表strlist之中,返回一个1到N的值。一个字符串表是被“,”分隔的子串组成的一个字符串。如果第一个参数是一个常数字符串并且第二个参数是一种类型为SET的列,FIND_IN_SET()函数被优化而使用位运算!如果str不是在strlist里面或如果strlist是空字符串,返回0。如果任何一个参数是NULL,返回NULL。如果第一个参数包含一个“,”,该函数将工作不正常。
    #MAKE_SET(bits,str1,str2,...) 返回一个集合 (包含由“,”字符分隔的子串组成的一个字符串),由相应的位在bits集合中的的字符串组成。str1对应于位0,str2对应位1,等等。在str1, str2, ...中的NULL串不添加到结果中。
    SELECT MAKE_SET(1,'a','b','c');
    SELECT MAKE_SET(1 | 4,'hello','nice','world');
    SELECT MAKE_SET(0,'a','b','c');
    select EXPORT_SET(5,'Y','N',',',4)#EXPORT_SET(bits,on,off,[separator,[number_of_bits]]) 返回一个字符串,在这里对于在“bits”中设定每一位,你得到一个“on”字符串,并且对于每个复位(reset)的位,你得到一个“off”字符串。每个字符串用“separator”分隔(缺省“,”),并且只有“bits”的“number_of_bits” (缺省64)位被使用。
    -- 大小写转换
    select LCASE('QUADRATadfadfa');#转为小写
    select LOWER('QUADRATadfadfa');
    select UCASE('QUADRATadfadfa');
    select UPPER('QUADRATadfadfa');
    -- 读入文件
    #LOAD_FILE(file_name) 读入文件并且作为一个字符串返回文件内容。文件必须在服务器上,你必须指定到文件的完整路径名,而且你必须有file权限。文件必须所有内容都是可读的并且小于max_allowed_packet。如果文件不存在或由于上面原因之一不能被读出,函数返回NULL。
    UPDATE table_name
    SET blob_column=LOAD_FILE("/tmp/picture")
    WHERE id=1;
    -- MySQL必要时自动变换数字为字符串,并且反过来也如此
    SELECT 1+"1";
    -- ------------------------------------------------------------------------------------------------------------------------------------------------------------
    /*
    *二、流程控制
    */
    /*-- 1、CASE WHEN THEN 函数 #函数用法说明:在第一个方案的返回结果中, value =compare-value 。而第二个方案的返回结果是第一种情况的真实结果。如果没有匹配的结果值,则返回结果为 ELSE 后的结果,如果没有 ELSE 部分,则返回值为 NUL
    CASE value
    WHEN [compare-value] THEN result
    WHEN [compare-value] THEN result
    ELSE result
    END
    CASE WHEN [condition] THEN result
    WHEN[condition] THEN result
    ELSE result
    END;

    -- 2、条件语句 IF 函数用法语法: IF(expr1,expr2,expr3)函数用法说明:如果 expr1 是 TRUE (expr1 <> 0 and expr1 <> NULL) ,则 IF() 的返回值为 expr2 ; 否则返回值则为 expr3 。 IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定
    if 条件 then
    statement
    else
    statement
    end if;

    -- 3.区块定义,常用
    begin
    ......
    end;
    #也可以给区块起别名,如:
    lable:begin
    ...........
    end lable;

    -- 4.循环语句
    (1)while循环
    [label:] WHILE expression DO

    statements

    END WHILE [label] ;

    (2).loop循环
    [label:] LOOP

    statements

    END LOOP [label];

    (3).repeat until循环
    [label:] REPEAT

    statements

    UNTIL expression

    END REPEAT [label] ;*/

    分支

    1)、if-then-else分支

    if condition then

    commands;

    else if condition then

    commands;

    else

    commands

    end if;

    2)、case分支(两种变体)

    //变体一

    case expression

    when value1 then commands;

    when value2 then commands;

    ...

    else commands;

    end case;

    //变体二

    case

    when condition then commands;

    when condition2 then commands;

    ...

    else commands;

    end case;

    循环

    1)、repeat-until循环

    类似于java中的 do while循环体;整个循环至少会执行一次。

    [loopname:] repeat

    commands

    util condition

    end repreat [loopname:];

    2)、while do循环

    类似于java中的while循环

    [loopname:] while condition do

    commands

    end while [loopname:];

    3)、loop循环

    在这种循环结构里,关键字loop和end loop之间的语句将一直执行直到遇见一条leave loopname命令并因此退出整个循环。在实际运用中几乎总是要用到loopname作为标号。

    loopname: loop

    commands;

    end loop loopname;

    4)、leave和iterate语句

    leave loopname命令:

    将使程序代码的执行流程跳出一个循环,该命令还可以用来提前推出begin-end语句块

    iterate loopname命令:

    将使循环体内的命令再执行一遍,不能用在begin-end语句块中
    -- ------------------------------------------------------------------------------------------------------------------------------------------------------------
    /*
    *三、数学函数
    */
    select ABS(-7) #返回 X 的绝对值
    ACOS(X )#函数使用说明:返回 X 反余弦 , 即 , 余弦是 X 的值。若 X 不在 -1 到 1 的范围之内,则返回 NULL 。
    ASIN ( X )#函数使用说明:返回X 的反正弦,即,正弦为X 的值。若X 若X 不在-1 到 1 的范围之内,则返回 NULL 。
    ATAN(X )#函数使用说明:返回 X 的反正切,即,正切为 X 的值。
    ATAN(Y ,X ) , ATAN2(Y ,X )#函数使用说明:返回两个变量 X 及 Y 的反正切。 它类似于 Y 或 X 的反正切计算 , 除非两个参数的符号均用于确定结果所在象限。
    CEILING(X ) CEIL(X )#函数使用说明:返回不小于 X 的最小整数值。
    COS(X )#函数使用说明:返回 X 的余弦,其中 X 在弧度上已知。
    COT(X )#函数使用说明:返回 X 的余切
    CRC32(expr )#函数使用说明:计算循环冗余码校验值并返回一个 32 比特无符号值。若参数为 NULL ,则结果为 NULL 。该参数应为一个字符串,而且在不是字符串的情况下会被作为字符串处理(若有可能)
    DEGREES(X ) #函数使用说明:返回参数 X , 该参数由弧度被转化为度。
    EXP(X )#函数使用说明:返回 e 的 X 乘方后的值 ( 自然对数的底 ) 。
    FLOOR(X )#函数使用说明:返回不大于 X 的最大整数值 。
    FORMAT(X ,D )#函数使用说明:将数字 X 的格式写成 '#,###,###.##' 格式 , 即保留小数点后 D 位,而第 D 位的保留方式为四舍五入,然后将结果以字符串的形式返回
    LN(X )#函数使用说明:返回 X 的自然对数 , 即 , X 相对于基数 e 的对数
    LOG(X ) LOG(B ,X )#函数使用说明:若用一个参数调用,这个函数就会返回 X 的自然对数。
    LOG2(X )#函数使用说明:返回 X 的基数为 2 的对数。
    LOG10(X )#函数使用说明:返回 X 的基数为 10 的对数。
    MOD(N ,M ) , N % M N MOD M#函数使用说明: 模操作。返回 N 被 M 除后的余数。
    PI()#函数使用说明:返回 ϖ (pi) 的值。默认的显示小数位数是 7 位 , 然而 MySQL 内部会使用完全双精度值。
    POW(X ,Y ) , POWER(X ,Y )#函数使用说明:返回 X 的 Y 乘方的结果值。
    RADIANS(X )#函数使用说明:返回由度转化为弧度的参数 X , ( 注意 ϖ 弧度等于 180 度)。
    RAND() RAND(N )#函数使用说明:返回一个随机浮点值 v ,范围在 0 到 1 之间 ( 即 , 其范围为 0 ≤ v ≤ 1.0) 。若已指定一个整数参数 N ,则它被用作种子值,用来产生重复序列。
    ROUND(X ) ROUND(X ,D )#函数使用说明:返回参数 X , 其值接近于最近似的整数。在有两个参数的情况下,返回 X ,其值保留到小数点后 D 位,而第 D 位的保留方式为四舍五入。若要接保留 X 值小数点左边的 D 位,可将 D 设为负值。
    SIGN(X )#函数使用说明:返回参数作为 -1 、 0 或 1 的符号,该符号取决于 X 的值为负、零或正。
    SIN(X )#函数使用说明:返回 X 正弦,其中 X 在弧度中被给定。
    SQRT(X )#函数使用说明: 返回非负数 X 的二次方根。
    TAN(X )#函数使用说明: 返回 X 的正切,其中 X 在弧度中被给定。
    TRUNCATE(X ,D )#函数使用说明: 返回被舍去至小数点后 D 位的数字 X 。若 D 的值为 0, 则结果不带有小数点或不带有小数部分。可以将 D 设为负数 , 若要截去 ( 归零 ) X 小数点左起第 D 位开始后面所有低位的值

    -- ------------------------------------------------------------------------------------------------------------------------------------------------------------
    /*
    *三、时间函数
    */
    TO_DAYS
      SELECT something FROM table WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30; #这里是一个使用日期函数的例子。下面的查询选择了所有记录,其date_col的值是在最后30天以内:

    -- 返回日期的星期几
    DAYOFWEEK
      select DAYOFWEEK('2012/06/12'); #DAYOFWEEK(date) 返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。这些索引值对应于ODBC标准。
      select DAYOFWEEK('2012-06-12');
    WEEKDAY
      select WEEKDAY('1997-10-04 22:23:00'); #WEEKDAY(date) 返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。
      select WEEKDAY('1997-11-05');

    -- 返回日期在月的中第几天
    DAYOFMONTH
      select DAYOFMONTH('1998-02-25'); #DAYOFMONTH(date) 返回date的月份中日期,在1到31范围内。

    -- 返回日期在年的中第几天
    DAYOFYEAR
      select DAYOFYEAR('1998-02-03'); #DAYOFYEAR(date) 返回date在一年中的日数, 在1到366范围内。

    -- 返回月份
    MONTH
      select MONTH('1998-02-03'); #MONTH(date) 返回date的月份,范围1到12。

    -- DAYNAME(date) 返回date的星期名字。
    DAYNAME
      select DAYNAME("1998-02-05");

    -- MONTHNAME(date) 返回date的月份名字。
    MONTHNAME
      select MONTHNAME("1998-02-05");

    -- QUARTER(date) 返回date一年中的季度,范围1到4。
    QUARTER
      select QUARTER('98-04-01');

    WEEK
      select WEEK('1998-02-20'); #WEEK(date,first) 对于星期天是一周的第一天的地方,有一个单个参数,返回date的周数,范围在0到52。2个参数形式WEEK()允许你指定星期是否开始于星期天或星期一。如果第二个参数是0,星期从星期天开始,如果第二个参数是1,从星期一开始。
      select WEEK('1998-02-20',0);
      select WEEK('1998-02-20',1);
    YEAR
      select YEAR('98-02-03');#YEAR(date) 返回date的年份,范围在1000到9999。
    HOUR
      select HOUR('10:05:03');#HOUR(time) 返回time的小时,范围是0到23。
    MINUTE
      select MINUTE('98-02-03 10:05:03'); #MINUTE(time) 返回time的分钟,范围是0到59。
    SECOND
      select SECOND('10:05:03');#SECOND(time) 回来time的秒数,范围是0到59。

    -- 加月份
    PERIOD_ADD
      select PERIOD_ADD(9801,2); #PERIOD_ADD(P,N) 增加N个月到阶段P(以格式YYMM或YYYYMM)。以格式YYYYMM返回值。注意阶段参数P不是日期值。

    -- 返回两个时间段的月数
      select PERIOD_DIFF(9802,199703); #PERIOD_DIFF(P1,P2) 返回在时期P1和P2之间月数,P1和P2应该以格式YYMM或YYYYMM。注意,时期参数P1和P2不是日期值。

      LAST_DAY(date )#函数使用说明:获取一个日期或日期时间值,返回该月最后一天对应的值。若参数无效,则返回 NULL 。

    -- 时间处理
    DATE_ADD(date,INTERVAL expr type)  
    DATE_SUB(date,INTERVAL expr type)   
    ADDDATE(date,INTERVAL expr type)
    SUBDATE(date,INTERVAL expr type)
      这些功能执行日期运算。对于MySQL 3.22,他们是新的。ADDDATE()和SUBDATE()是DATE_ADD()和DATE_SUB()的同义词。
      在MySQL 3.23中,你可以使用+和-而不是DATE_ADD()和DATE_SUB()。(见例子)date是一个指定开始日期的
      DATETIME或DATE值,expr是指定加到开始日期或从开始日期减去的间隔值一个表达式,expr是一个字符串;它可以以
      一个“-”开始表示负间隔。type是一个关键词,指明表达式应该如何被解释。EXTRACT(type FROM date)函数从日期
      中返回“type”间隔。下表显示了type和expr参数怎样被关联: type值 含义 期望的expr格式
      SECOND 秒 SECONDS
      MINUTE 分钟 MINUTES
      HOUR 时间 HOURS
      DAY 天 DAYS
      MONTH 月 MONTHS
      YEAR 年 YEARS
      MINUTE_SECOND 分钟和秒 "MINUTES:SECONDS"
      HOUR_MINUTE 小时和分钟 "HOURS:MINUTES"
      DAY_HOUR 天和小时 "DAYS HOURS"
      YEAR_MONTH 年和月 "YEARS-MONTHS"
      HOUR_SECOND 小时, 分钟, "HOURS:MINUTES:SECONDS"
      DAY_MINUTE 天, 小时, 分钟 "DAYS HOURS:MINUTES"
      DAY_SECOND 天, 小时, 分钟, 秒 "DAYS HOURS:MINUTES:SECONDS"
      MySQL在expr格式中允许任何标点分隔符。表示显示的是建议的分隔符。如果date参数是一个DATE值并且你的计算仅仅包含YEAR、MONTH和DAY部分(即,没有时间部分),结果是一个DATE值。否则结果是一个DATETIME值。
    INTERVAL   
    mysql> SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND;
      -> 1998-01-01 00:00:00
      mysql> SELECT INTERVAL 1 DAY + "1997-12-31";
      -> 1998-01-01
      mysql> SELECT "1998-01-01" - INTERVAL 1 SECOND;
      -> 1997-12-31 23:59:59
    DATE_ADD
      mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
      INTERVAL 1 SECOND);
      -> 1998-01-01 00:00:00
      mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
      INTERVAL 1 DAY);
      -> 1998-01-01 23:59:59
      mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
      INTERVAL "1:1" MINUTE_SECOND);
      -> 1998-01-01 00:01:00
    DATE_SUB
      mysql> SELECT DATE_SUB("1998-01-01 00:00:00",
      INTERVAL "1 1:1:1" DAY_SECOND);
      -> 1997-12-30 22:58:59
    DATE_ADD
      mysql> SELECT DATE_ADD("1998-01-01 00:00:00",
      INTERVAL "-1 10" DAY_HOUR);
      -> 1997-12-30 14:00:00
    DATE_SUB
      mysql> SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);
      -> 1997-12-02
    EXTRACT
      mysql> SELECT EXTRACT(YEAR FROM "1999-07-02");
      -> 1999
      mysql> SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03");
      -> 199907
      mysql> SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03");
      -> 20102
      如果你指定太短的间隔值(不包括type关键词期望的间隔部分),MySQL假设你省掉了间隔值的最左面部分。例如,如果你指定一个type是DAY_SECOND,值expr被希望有天、小时、分钟和秒部分。如果你象"1:10"这样指定值,MySQL假设日子和小时部分是丢失的并且值代表分钟和秒。换句话说,"1:10" DAY_SECOND以它等价于"1:10" MINUTE_SECOND的方式解释,这对那MySQL解释TIME值表示经过的时间而非作为一天的时间的方式有二义性。如果你使用确实不正确的日期,结果是NULL。如果你增加MONTH、YEAR_MONTH或YEAR并且结果日期大于新月份的最大值天数,日子在新月用最大的天调整。
      mysql> select DATE_ADD('1998-01-30', Interval 1 month);
      -> 1998-02-28
      注意,从前面的例子中词INTERVAL和type关键词不是区分大小写的。

    -- 时间格式
    TO_DAYS(date)
      给出一个日期date,返回一个天数(从0年的天数)。
      mysql> select TO_DAYS(950501);
      -> 728779
      mysql> select TO_DAYS('1997-10-07');
      -> 729669
      TO_DAYS()
      不打算用于使用格列高里历(1582)出现前的值。
    FROM_DAYS(N)
      给出一个天数N,返回一个DATE值。
      mysql> select FROM_DAYS(729669);
      -> '1997-10-07'
    DATE_FORMAT(date,format)
      根据format字符串格式化date值。下列修饰符可以被用在format字符串中: %M 月名字(January……December)
      %W 星期名字(Sunday……Saturday)
      %D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
      %Y 年, 数字, 4 位
      %y 年, 数字, 2 位
      %a 缩写的星期名字(Sun……Sat)
      %d 月份中的天数, 数字(00……31)
      %e 月份中的天数, 数字(0……31)
      %m 月, 数字(01……12)
      %c 月, 数字(1……12)
      %b 缩写的月份名字(Jan……Dec)
      %j 一年中的天数(001……366)
      %H 小时(00……23)
      %k 小时(0……23)
      %h 小时(01……12)
      %I 小时(01……12)
      %l 小时(1……12)
      %i 分钟, 数字(00……59)
      %r 时间,12 小时(hh:mm:ss [AP]M)
      %T 时间,24 小时(hh:mm:ss)
      %S 秒(00……59)
      %s 秒(00……59)
      %p AM或PM
      %w 一个星期中的天数(0=Sunday ……6=Saturday )
      %U 星期(0……52), 这里星期天是星期的第一天
      %u 星期(0……52), 这里星期一是星期的第一天
      %% 一个文字“%”。
      所有的其他字符不做解释被复制到结果中。
      mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
      -> 'Saturday October 1997'
      mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s');
      -> '22:23:00'
      mysql> select DATE_FORMAT('1997-10-04 22:23:00',
      '%D %y %a %d %m %b %j');
      -> '4th 97 Sat 04 10 Oct 277'
      mysql> select DATE_FORMAT('1997-10-04 22:23:00',
      '%H %k %I %r %T %S %w');
      -> '22 22 10 10:23:00 PM 22:23:00 00 6'
      MySQL3.23中,在格式修饰符字符前需要%。在MySQL更早的版本中,%是可选的。
    TIME_FORMAT(time,format)
      这象上面的DATE_FORMAT()函数一样使用,但是format字符串只能包含处理小时、分钟和秒的那些格式修饰符。其他修饰符产生一个NULL值或0。
      
      CURDATE()

    -- 获取时间值
    CURDATE();
      select CURDATE(); #CURRENT_DATE 以'YYYY-MM-DD'或YYYYMMDD格式返回今天日期值,取决于函数是在一个字符串还是数字上下文被使用。
      select CURTIME(); #CURRENT_TIME 以'HH:MM:SS'或HHMMSS格式返回当前时间值,取决于函数是在一个字符串还是在数字的上下文被使用。
    NOW()
      select NOW();#获取当时时间
      select SYSDATE(); #获取当时时间

    -- 时间和时间戳的转化
    CURRENT_TIMESTAMP
      以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回当前的日期和时间,取决于函数是在一个字符串还是在数字的上下文被使用。
      mysql> select NOW();
      -> '1997-12-15 23:50:26'
      mysql> select NOW() + 0;
      -> 19971215235026

    UNIX_TIMESTAMP()
       
      UNIX_TIMESTAMP(date)
      如果没有参数调用,返回一个Unix时间戳记(从'1970-01-01 00:00:00'GMT开始的秒数)。如果UNIX_TIMESTAMP()用一个date参数被调用,它返回从'1970-01-01 00:00:00' GMT开始的秒数值。date可以是一个DATE字符串、一个DATETIME字符串、一个TIMESTAMP或以YYMMDD或YYYYMMDD格式的本地时间的一个数字。
      mysql> select UNIX_TIMESTAMP();
      -> 882226357
      mysql> select UNIX_TIMESTAMP('1997-10-04 22:23:00');
      -> 875996580
      当UNIX_TIMESTAMP被用于一个TIMESTAMP列,函数将直接接受值,没有隐含的“string-to-unix-timestamp”变换。
    FROM_UNIXTIME(unix_timestamp)
      以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回unix_timestamp参数所表示的值,取决于函数是在一个字符串还是或数字上下文中被使用。
      mysql> select FROM_UNIXTIME(875996580);
      -> '1997-10-04 22:23:00'
      mysql> select FROM_UNIXTIME(875996580) + 0;
      -> 19971004222300
      FROM_UNIXTIME(unix_timestamp,format)
      返回表示 Unix 时间标记的一个字符串,根据format字符串格式化。format可以包含与DATE_FORMAT()函数列出的条目同样的修饰符。
      mysql> select FROM_UNIXTIME(UNIX_TIMESTAMP(),
      '%Y %D %M %h:%i:%s %x');
      -> '1997 23rd December 03:43:30 x'
    SEC_TO_TIME(seconds)
      返回seconds参数,变换成小时、分钟和秒,值以'HH:MM:SS'或HHMMSS格式化,取决于函数是在一个字符串还是在数字上下文中被使用。
      mysql> select SEC_TO_TIME(2378);
      -> '00:39:38'
      mysql> select SEC_TO_TIME(2378) + 0;
      -> 3938
    TIME_TO_SEC(time)
      返回time参数,转换成秒。
      mysql> select TIME_TO_SEC('22:23:00');
      -> 80580
      mysql> select TIME_TO_SEC('00:39:38');
      -> 2378
    -- ------------------------------------------------------------------------------------------------------------------------------------------------------------
    /*
    * 五全文搜索功能函数
    */

    a) 函数 MATCH (col1,col2,...) AGAINST (expr [IN BOOLEAN MODE | WITH QUERY EXPANSION])
    -- ------------------------------------------------------------------------------------------------------------------------------------------------------------
    /*
    * 六、 加密函数
    */

    AES_ENCRYPT(str ,key_str ) , AES_DECRYPT(crypt_str ,key_str )#函数使用说明:这些函数允许使用官方 AES 进行加密和数据加密 ( 高级加密标准 ) 算法 , 即以前人们所熟知的 “Rijndael” 。 保密关键字的长度为 128 比特,不过你可以通过改变源而将其延长到 256 比特。我们选择了 128 比特的原因是它的速度要快得多,且对于大多数用途而言这个保密程度已经够用。
    DECODE(crypt_str ,pass_str )#函数使用说明:使用 pass_str 作为密码,解密加密字符串 crypt_str , crypt_str 应该是由 ENCODE() 返回的字符串。
    ENCODE(str ,pass_str )#函数使用说明:使用 pass_str 作为密码,解密 str 。 使用 DECODE() 解密结果。
    DES_DECRYPT(crypt_str [,key_str ])#函数使用说明:使用 DES_ENCRYPT() 加密一个字符串。若出现错误,这个函数会返回 NULL 。
    DES_ENCRYPT(str [,(key_num |key_str )])#函数使用说明:用 Triple-DES 算法给出的关键字加密字符串。若出现错误,这个函数会返回 NULL 。
    ENCRYPT(str [,salt ])#函数使用说明:使用 Unix crypt() 系统调用加密 str 。 salt 参数应为一个至少包含 2 个字符的字符串。若没有给出 salt 参数,则使用任意值。
    MD5(str )#函数使用说明:为字符串算出一个 MD5 128 比特检查和。该值以 32 位十六进制数字的二进制字符串的形式返回 , 若参数为 NULL 则会返回 NULL 。例如,返回值可被用作散列关键字
    OLD_PASSWORD(str )#函数使用说明:当 PASSWORD() 的执行变为改善安全性时, OLD_PASSWORD() 会被添加到 MySQL 。 OLD_PASSWORD() 返回从前的 PASSWORD() 执行值 ( 4.1 之前 ) ,同时允许你为任何 4.1 之前的需要连接到你的 5.1 版本 MySQL 服务器前客户端设置密码,从而不至于将它们切断
    PASSWORD(str )#函数使用说明:从原文密码str 计算并返回密码字符串,当参数为 NULL 时返回 NULL 。这个函数用于用户授权表的Password 列中的加密MySQL 密码存储
    -- ------------------------------------------------------------------------------------------------------------------------------------------------------------
    /*
    * 七、 信息函数
    */

    BENCHMARK(count ,expr )#函数使用说明: BENCHMARK() 函数重复 count 次执行表达式 expr 。 它可以被用于计算 MySQL 处理表达式的速度。结果值通常为 0 。另一种用处来自 mysql 客户端内部 , 能够报告问询执行的次数
    CHARSET(str )#函数使用说明:返回字符串自变量的字符集。
    COERCIBILITY(str )#函数使用说明:返回字符串自变量的整序可压缩性值。
    COLLATION(str )#函数使用说明:返回惠字符串参数的排序方式。
    CONNECTION_ID()#函数使用说明:返回对于连接的连接 ID ( 线程 ID) 。每个连接都有各自的唯一 ID 。
    CURRENT_USER, CURRENT_USER()#函数使用说明:返回当前话路被验证的用户名和主机名组合。这个值符合确定你的存取权限的 MySQL 账户。在被指定 SQL SECURITY DEFINER 特征的存储程序内, CURRENT_USER() 返回程序的创建者
    DATABASE()#函数使用说明:返回使用 utf8 字符集的默认 ( 当前 ) 数据库名。在存储程序里,默认数据库是同该程序向关联的数据库,但并不一定与调用语境的默认数据库相同。
    FOUND_ROWS()#函数使用说明: A SELECT 语句可能包括一个 LIMIT 子句,用来限制服务器返回客户端的行数。在有些情况下,需要不用再次运行该语句而得知在没有 LIMIT 时到底该语句返回了多少行。为了知道这个行数 , 包括在 SELECT 语句中选择 SQL_CALC_FOUND_ROWS ,随后调用 FOUND_ROWS()
    LAST_INSERT_ID() LAST_INSERT_ID(expr )#函数使用说明:自动返回最后一个 INSERT 或 UPDATE 问询为 AUTO_INCREMENT 列设置的第一个 发生的值。
    ROW_COUNT()#函数使用说明: ROW_COUNT() 返回被前面语句升级的、插入的或删除的行数。 这个行数和 mysql 客户端显示的行数及 mysql_affected_rows() C API 函数返回的值相同。
    SCHEMA()#函数使用说明:这个函数和 DATABASE() 具有相同的意义
    SESSION_USER()#函数使用说明: SESSION_USER() 和 USER() 具有相同的意义。
    SYSTEM_USER()#函数使用说明: SYSTEM_USER() 合 USER() 具有相同的意义
    USER()#函数使用说明:返回当前 MySQL 用户名和机主名
    VERSION()

    #函数使用说明:返回指示 MySQL 服务器版本的字符串。这个字符串使用 utf8 字符集。
    -- ------------------------------------------------------------------------------------------------------------------------------------------------------------
    /*
    * 八、 其他函数
    */

    DEFAULT(col_name )#函数使用说明:返回一个表列的默认值。若该列没有默认值则会产生错误。
    FORMAT(X ,D )#函数使用说明:将数字 X 的格式写为 '#,###,###.##', 以四舍五入的方式保留小数点后 D 位, 并将结果以字符串的形式返回。若 D 为 0, 则返回结果不带有小数点,或不含小数部分。
    GET_LOCK(str ,timeout )#函数使用说明:设法使用字符串 str 给定的名字得到一个锁, 超时为 timeout 秒。若成功得到锁,则返回 1 ,若操作超时则返回 0 ( 例如 , 由于另一个客户端已提前封锁了这个名字 ), 若发生错误则返回 NULL ( 诸如缺乏记忆或线程 mysqladmin kill 被断开 ) 。假如你有一个用 GET_LOCK() 得到的锁,当你执行 RELEASE_LOCK() 或你的连接断开 ( 正常或非正常 ) 时,这个锁就会解除
    INET_ATON(expr )#函数使用说明:给出一个作为字符串的网络地址的点地址表示,返回一个代表该地址数值的整数。地址可以是 4 或 8 比特地址。
    INET_NTOA(expr )#函数使用说明:给定一个数字网络地址 (4 或 8 比特 ), 返回作为字符串的该地址的电地址表示
    IS_FREE_LOCK(str )#函数使用说明:检查名为 str 的锁是否可以使用 ( 换言之 , 没有被封锁 ) 。若锁可以使用,则返回 1 ( 没有人在用这个锁 ), 若这个锁正在被使用,则返回 0 ,出现错误则返回 NULL ( 诸如不正确的参数 ) 。
    IS_USED_LOCK(str )#函数使用说明:检查名为 str 的锁是否正在被使用 ( 换言之 , 被封锁 ) 。若被封锁,则返回使用该锁的客户端的连接标识符。否则返回 NULL 。
    MASTER_POS_WAIT(log_name ,log_pos [,timeout ])#函数使用说明:该函数对于控制主从同步很有用处。它会持续封锁,直到从设备阅读和应用主机记录中所有补充资料到指定的位置。返回值是其为到达指定位置而必须等待的记录事件的数目。若从设备 SQL 线程没有被启动、从设备主机信息尚未初始化、参数不正确或出现任何错误,则该函数返回 NULL 。若超时时间被超过,则返回 -1 。若在 MASTER_POS_WAIT() 等待期间,从设备 SQL 线程中止,则该函数返回 NULL 。若从设备由指定位置通过,则函数会立即返回结果。
    NAME_CONST(name ,value )#函数使用说明:返回给定值。 当用来产生一个结果集合列时 , NAME_CONST() 促使该列使用给定名称。
    RELEASE_LOCK(str )#函数使用说明:解开被 GET_LOCK() 获取的,用字符串 str 所命名的锁。若锁被解开,则返回 1 ,若改线程尚未创建锁,则返回 0 ( 此时锁没有被解开 ), 若命名的锁不存在,则返回 NULL 。若该锁从未被对 GET_LOCK() 的调用获取,或锁已经被提前解开,则该锁不存在。
    SLEEP(duration )#函数使用说明:睡眠 ( 暂停 ) 时间为 duration 参数给定的秒数,然后返回 0 。若 SLEEP() 被中断 , 它会返回 1 。 duration 或许或包括一个给定的以微秒为单位的分数部分。
    UUID()#函数使用说明:返回一个通用唯一标识符 (UUID) , UUID 被设计成一个在时间和空间上都独一无二的数字。 2 个对 UUID() 的调用应产生 2 个不同的值,即使这些调用的执行是在两个互不相连的单独电脑上进行。
    VALUES(col_name )#函数使用说明:在一个 INSERT … ON DUPLICATE KEY UPDATE … 语句中,你可以在 UPDATE 子句中使用 VALUES(col_name ) 函数,用来访问来自该语句的 INSERT 部分的列值。换言之, UPDATE 子句中的 VALUES(col_name ) 访问需要被插入的 col_name 的值 , 并不会发生重复键冲突。这个函数在多行插入中特别有用。 VALUES() 函数只在 INSERT ... UPDATE 语句中有意义,而在其它情况下只会返回 NULL

    -- ------------------------------------------------------------------------------------------------------------------------------------------------------------
    /*
    * 九、 聚合函数
    */

    AVG([DISTINCT] expr )#函数使用说明:返回 expr 的平均值。 DISTINCT 选项可用于返回 expr 的不同值的平均值。
    BIT_AND(expr ) #函数使用说明:返回expr 中所有比特的 bitwise AND 。计算执行的精确度为64 比特(BIGINT) 。若找不到匹配的行,则这个函数返回18446744073709551615 。( 这是无符号 BIGINT 值,所有比特被设置为 1 )。
    BIT_OR(expr )#函数使用说明:返回expr 中所有比特的bitwise OR 。计算执行的精确度为64 比特(BIGINT) 。若找不到匹配的行,则函数返回 0 。
    BIT_XOR(expr )#函数使用说明:返回expr 中所有比特的bitwise XOR 。计算执行的精确度为64 比特(BIGINT) 。若找不到匹配的行,则函数返回 0 。
    COUNT(expr )#函数使用说明:返回SELECT 语句检索到的行中非NULL 值的数目。若找不到匹配的行,则COUNT() 返回 0
    COUNT(DISTINCT expr ,[expr ...])#函数使用说明:返回不同的非NULL 值数目。若找不到匹配的项,则COUNT(DISTINCT) 返回 0
    GROUP_CONCAT(expr )#函数使用说明:该函数返回带有来自一个组的连接的非NULL 值的字符串结果。其完整的语法如下所示:
    GROUP_CONCAT([DISTINCT] expr [,expr ...]
    [ORDER BY {unsigned_integer | col_name | expr }

    [ASC | DESC] [,col_name ...]]

    [SEPARATOR str_val ])

    MIN([DISTINCT] expr ), MAX([DISTINCT] expr )#函数使用说明:返回 expr 的最小值和最大值。 MIN() 和 MAX() 的取值可以是一个字符串参数;在这些情况下, 它们返回最小或最大字符串值。
    STD(expr ) STDDEV(expr )#函数使用说明:返回 expr 的总体标准偏差。这是标准 SQL 的延伸。这个函数的 STDDEV() 形式用来提供和 Oracle 的兼容性。可使用标准 SQL 函数 STDDEV_POP() 进行代替
    STDDEV_POP(expr )#函数使用说明:返回expr 的总体标准偏差(VAR_POP() 的平方根) 。你也可以使用 STD() 或STDDEV(), 它们具有相同的意义,然而不是标准的 SQL 。若找不到匹配的行,则STDDEV_POP() 返回 NULL
    STDDEV_SAMP(expr )#函数使用说明:返回expr 的样本标准差 ( VAR_SAMP() 的平方根) 。若找不到匹配的行,则STDDEV_SAMP() 返回 NULL
    SUM([DISTINCT] expr )#函数使用说明:返回expr 的总数。 若返回集合中无任何行,则 SUM() 返回NULL 。DISTINCT 关键词可用于 MySQL 5.1 中,求得expr 不同值的总和。 若找不到匹配的行,则SUM() 返回 NULL
    VAR_POP(expr )#函数使用说明:返回 expr 总体标准方差。它将行视为总体,而不是一个样本, 所以它将行数作为分母。你也可以使用 VARIANCE(), 它具有相同的意义然而不是 标准的 SQL
    VAR_SAMP(expr )#函数使用说明:返回expr 的样本方差。更确切的说,分母的数字是行数减去1 。若找不到匹配的行,则VAR_SAMP() 返回NULL
    VARIANCE(expr )#函数使用说明:返回expr 的总体标准方差。这是标准SQL 的延伸。可使用标准SQL 函数 VAR_POP() 进行代替。若找不到匹配的项,则VARIANCE() 返回NULL


    -- ------------------------------------------------------------------------------------------------------------------------------------------------------------
    /*
    * 十、 操作符
    */
    算术运算符

    + 加 SET var1=2+2; 4
    - 减 SET var2=3-2; 1
    * 乘 SET var3=3*2; 6
    / 除 SET var4=10/3; 3.3333
    DIV 整除 SET var5=10 DIV 3; 3
    % 取模 SET var6=10%3 ; 1

    比较运算符

    > 大于 1>2 False
    < 小于 2<1 False
    <= 小于等于 2<=2 True
    >= 大于等于 3>=2 True
    BETWEEN 在两值之间 5 BETWEEN 1 AND 10 True
    NOT BETWEEN 不在两值之间 5 NOT BETWEEN 1 AND 10 False
    IN 在集合中 5 IN (1,2,3,4) False
    NOT IN 不在集合中 5 NOT IN (1,2,3,4) True
    = 等于 2=3 False
    <>, != 不等于 2<>3 False
    <=> 严格比较两个NULL值是否相等 NULL<=>NULL True
    LIKE 简单模式匹配 "Guy Harrison" LIKE "Guy%" True
    REGEXP 正则式匹配 "Guy Harrison" REGEXP "[Gg]reg" False
    IS NULL 为空 0 IS NULL False
    IS NOT NULL 不为空 0 IS NOT NULL True


    逻辑运算符

    与(AND)
    或(OR)
    异或(XOR)

    位运算符

    | 位或
    & 位与
    << 左移位
    >> 右移位
    ~ 位非(单目运算,按位取反)
    -- ------------------------------------------------------------------------------------------------------------------------------------------------------------
    /*
    * 十一、 字符串类
    */
    CHARSET(str) //返回字串字符集
    CONCAT (string2 [,... ]) //连接字串
    INSTR (string ,substring ) //返回substring首次在string中出现的位置,不存在返回0
    LCASE (string2 ) //转换成小写
    LEFT (string2 ,length ) //从string2中的左边起取length个字符
    LENGTH (string ) //string长度
    LOAD_FILE (file_name ) //从文件读取内容
    LOCATE (substring , string [,start_position ] ) 同INSTR,但可指定开始位置
    LPAD (string2 ,length ,pad ) //重复用pad加在string开头,直到字串长度为length
    LTRIM (string2 ) //去除前端空格
    REPEAT (string2 ,count ) //重复count次
    REPLACE (str ,search_str ,replace_str ) //在str中用replace_str替换search_str
    RPAD (string2 ,length ,pad) //在str后用pad补充,直到长度为length
    RTRIM (string2 ) //去除后端空格
    STRCMP (string1 ,string2 ) //逐字符比较两字串大小,
    SUBSTRING (str , position [,length ]) //从str的position开始,取length个字符,
    注:mysql中处理字符串时,默认第一个字符下标为1,即参数position必须大于等于1
    mysql> select substring('abcd',0,2);
    +-----------------------+
    | substring('abcd',0,2) |
    +-----------------------+
    | |
    +-----------------------+
    1 row in set (0.00 sec)


    mysql> select substring('abcd',1,2);
    +-----------------------+
    | substring('abcd',1,2) |
    +-----------------------+
    | ab |
    +-----------------------+
    1 row in set (0.02 sec)

    TRIM([[BOTH|LEADING|TRAILING] [padding] FROM]string2) //去除指定位置的指定字符
    UCASE (string2 ) //转换成大写
    RIGHT(string2,length) //取string2最后length个字符
    SPACE(count) //生成count个空格
    -- ------------------------------------------------------------------------------------------------------------------------------------------------------------
    /*
    * 十二.数学类

    */
    ABS (number2 ) //绝对值
    BIN (decimal_number ) //十进制转二进制
    CEILING (number2 ) //向上取整
    CONV(number2,from_base,to_base) //进制转换
    FLOOR (number2 ) //向下取整
    FORMAT (number,decimal_places ) //保留小数位数
    HEX (DecimalNumber ) //转十六进制
    注:HEX()中可传入字符串,则返回其ASC-11码,如HEX('DEF')返回4142143
    也可以传入十进制整数,返回其十六进制编码,如HEX(25)返回19
    LEAST (number , number2 [,..]) //求最小值
    MOD (numerator ,denominator ) //求余
    POWER (number ,power ) //求指数
    RAND([seed]) //随机数
    ROUND (number [,decimals ]) //四舍五入,decimals为小数位数]
    注:返回类型并非均为整数,如:
    (1)默认变为整形值
    mysql> select round(1.23);
    +-------------+
    | round(1.23) |
    +-------------+
    | 1 |
    +-------------+
    1 row in set (0.00 sec)

    mysql> select round(1.56);
    +-------------+
    | round(1.56) |
    +-------------+
    | 2 |
    +-------------+
    1 row in set (0.00 sec)

    (2)可以设定小数位数,返回浮点型数据
    mysql> select round(1.567,2);
    +----------------+
    | round(1.567,2) |
    +----------------+
    | 1.57 |
    +----------------+
    1 row in set (0.00 sec)

    SIGN (number2 ) //返回符号,正负或0
    SQRT(number2) //开平方

    -- ------------------------------------------------------------------------------------------------------------------------------------------------------------
    /*
    * 十三.日期时间类

    */

    ADDTIME (date2 ,time_interval ) //将time_interval加到date2
    CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) //转换时区
    CURRENT_DATE ( ) //当前日期
    CURRENT_TIME ( ) //当前时间
    CURRENT_TIMESTAMP ( ) //当前时间戳
    DATE (datetime ) //返回datetime的日期部分
    DATE_ADD (date2 , INTERVAL d_value d_type ) //在date2中加上日期或时间
    DATE_FORMAT (datetime ,FormatCodes ) //使用formatcodes格式显示datetime
    DATE_SUB (date2 , INTERVAL d_value d_type ) //在date2上减去一个时间
    DATEDIFF (date1 ,date2 ) //两个日期差
    DAY (date ) //返回日期的天
    DAYNAME (date ) //英文星期
    DAYOFWEEK (date ) //星期(1-7) ,1为星期天
    DAYOFYEAR (date ) //一年中的第几天
    EXTRACT (interval_name FROM date ) //从date中提取日期的指定部分
    MAKEDATE (year ,day ) //给出年及年中的第几天,生成日期串
    MAKETIME (hour ,minute ,second ) //生成时间串
    MONTHNAME (date ) //英文月份名
    NOW ( ) //当前时间
    SEC_TO_TIME (seconds ) //秒数转成时间
    STR_TO_DATE (string ,format ) //字串转成时间,以format格式显示
    TIMEDIFF (datetime1 ,datetime2 ) //两个时间差
    TIME_TO_SEC (time ) //时间转秒数]
    WEEK (date_time [,start_of_week ]) //第几周
    YEAR (datetime ) //年份
    DAYOFMONTH(datetime) //月的第几天
    HOUR(datetime) //小时
    LAST_DAY(date) //date的月的最后日期
    MICROSECOND(datetime) //微秒
    MONTH(datetime) //月
    MINUTE(datetime) //分


    附:可用在INTERVAL中的类型
    DAY ,DAY_HOUR ,DAY_MINUTE ,DAY_SECOND ,HOUR ,HOUR_MINUTE ,HOUR_SECOND ,MINUTE ,MINUTE_SECOND,MONTH ,SECOND ,YEAR

  • 相关阅读:
    html5——渐变
    html5——背景
    html5——边框
    html5——私有前缀
    html5——盒子模式
    html5——文本阴影
    html5——颜色
    html5——css选择器
    html5——DOM扩展
    html5——多媒体(一)
  • 原文地址:https://www.cnblogs.com/hechunhua/p/3373714.html
Copyright © 2011-2022 走看看