zoukankan      html  css  js  c++  java
  • mysql常用函数 [转]

    算数运算子
    +, -, *, /
    除于 0 会等于 NULL
    比较运算子
    任何东西跟 NULL 比较会等于 NULL
    比较字符串通常不需要注意大小写,如果要比较大小写,用 BINARY 关键词。

    程序代码:

    SELECT *
    FROM department
    WHERE name = BINARY 'marketing';

    程序代码:

    =      相等
    !=
    <>    不相等
    <     
    小于
    <=    
    小或等于
    >     
    大于
    >=    
    大或等于
    n BETWEEN
    min AND max   
    测试范围
    n IN (set)    set
    可以是一系列的数值或子查询。
    <=>   
    可以比较 NULL,如果比较两个 NULL 会传回 1
    n IS NULL   
    测试 n 是否 NULL
    ISNULL(n)   
    测试 n 是否 NULL

    逻辑运算子
    传回的值有 1 (true), 0 (false, NULL
    任何不是 0 或不是 NULL 的值都是 true

    程序代码:

    AND && n && m      
                   true && true = true
                   false && anything = false
                  
    其它会等于 NULL
    OR
    ||   n || m      
                   true || anything = true
                   NULL || false = NULL
                   NULL || NULL = NULL
                   false || false = false
    NOT
    !    NOT n     不是
                   !true = false
                   !false = true
                   !NULL = NULL
    XOR    n XOR m     
    不包含的 OR
                   true XOR true = false
                   true XOR false = true
                   false XOR true = true
                   NULL XOR n = NULL
                   n XOR NULL = NULL


    控制流向的函式
    IF (e1, e2, e3)
    如果 e1 trueIF 会传回 e2,不然会传回 e3
    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

    程序代码:

    SELECT workdate, CASE
        WHEN workdate < 2000-01-01 THEN "archived"
        WHEN workdate < 2003-01-01 THEN "old"
        ELSE "current"
        END
    FROM assignment;


    字符串函式
    concat(s1, s2, ...) -
    连接字符串 s1 s2...
    conv(n, original_base, new_base) -
    转换数字 n 从本来的 base 到新的 base
    length(s) -
    找字符串的长度
    load_file(filename) -
    依照字符串传回档案的内容
    locate(needle, haystack, position) -
    传回 needle 字符串的开始位置,在 haystack 字符串里,从 position 开始
    lower(s) and upper(s) -
    转换 s 到小写或大写
    quote(s) -
    跳脱 s 字符串,让它可以安全输入数据库
    replace(target, find, replace) -
    传回 target 字符串,将 find 字符串覆盖成 replace 字符串
    soundex(s) -
    传回跟 s 类似的 soundex 字符串。soundex 是字符串的发音
    substring(s, position, length) -
    传回字符串里的字符串,s 是本来的字符串,position 是开始的位置,length 是传回的字数
    trim(s) -
    移除开头跟字尾的空格符。也可以用 rtrim() ltrim()
    字符串比较的函式
    LIKE -
    利用通配字符来进行比较
    RLIKE -
    利用正规表示法来进行比较
    STRCMP -
    比较字符串,类似 C 里面的 strcmp()
    MATCH -
    进行 full-text 比较

    利用通配字符来进行比较

    程序代码:

    SELECT *
    FROM department
    WHERE name LIKE '%research%';

    % 会吻合任何字数,包括 0
    _
    会吻合单一字数, _at 会吻合 cat, mat, bat...

    利用正规表示法来进行比较
    RLIKE
    可以用来吻合正规表示法。
    'cat'
    会吻合 'catacomb' 'the cat sat on the mat'
    如果只要吻合 'cat',用 '^cat$'
    ^
    表示在吻合的字符串开头是 'cat'
    $
    表示在吻合的字符串最后是 'cat'
    .
    可以用来代表通配字符,'.at' 会吻合 'cat', 'bat', 'mat'
    *
    表示字符可以出现零或多次,'n*' 会吻合 '', 'nn', 'nnn'
    ()
    会归类字符,'(cat)*' 会吻合 '', 'cat', 'catcat', 'catcatcat'
    .*
    会吻合任何字或字符串。
    +
    表示在他之后的字或字符串会重复一或多次。
    ?
    表示吻合一或零次。
    列出特定的范围,'(cat)(2,4)' 会吻合 'catcat', 'catcatcat', 'catcatcatcat'
    []
    可以列出一系列的文字,'[a-z]' 会吻合任何字母,'[a-z]*' 会吻合任何数量的字母。
    文字类别,[[:alnum:]] 会吻合任何字母和数字的文字。

    程序代码:

    SELECT *
    FROM department
    WHERE name RLIKE 'an';

    这会吻合全部有包括 'an' 的部门。

    STRCMP() 来比较字符串
    STRCMP(s1, s2)
    如果字符串相同会传回 0-1 如果 s1 s2 (s1 s2 早出现)
    1
    如果 s1 s2 (s1 s2 晚出现)

    程序代码:

    SELECT STRCMP('cat', 'cat');
    //
    传回 0
    SELECT STRCMP('cat', 'dog');
    //
    传回 -1
    SELECT STRCMP('cat', 'ant');
    //
    传回 1


    数字函式

    abs(n)

    传回 n 的正数

    ceiling(n)

    n rounded up to the nearest integer

    floor(n)

    n rounded down to the nearest integer

    mod(n,m) div

    这两个函式会将 n 除于 mdiv 传回商数,mod() 会传回剩余数。

    power(n,m)

    n to the power of m

    rand(n)

    传回 0 1 的随意数。n 可以不提供,如果提供会用来产生随意数。
    相同的 n 会产生相同的随意数。

    round(n[,d])

    n rounded to the nearest integer. if supply d, n will be rounded to d decimal places.

    sqrt(n)

    传回 n 的平方

    mod() 可以是 mod(9,2) 9 mod 2 9 % 2
    div
    只能用 9 div 2

    程序代码:

    SELECT 9 mod 2;
    //
    传回 1
    SELECT 9 div 2;
    //
    传回 4


    日期和时间函式
    adddate(date, INTERVAL n type)
    subdate(date, INTERVAL n type)
    这些函式可以用来增加和减少日期。从 date 的日期开始计算,然后增加或减少 INTERVAL 后的日期范围。
    你必须提供 n 和他的类型。类型可以是 SECOND, MINUTE, HOUR, DAY, MONTH, YEAR, MINUTE:SECOND (m:s),
    HOUR:MINUTE (h:m), DAY_HOUR(d h), YEAR_MONTH (y-m), HOUR_SECOND (h:m:s), DAY_MINUTE (d h:m),
    DAY_SECOND (d h:m:s)

    curdate(), curtime(), now()
    这些函式会传回目前的日期,目前的时间,还有时间和日期。
    date_format(date, format)
    time_format(time, format)
    这些可以用来改变日期和时间的格式。
    你必须提供格式的字符串,譬如说 date_format(workdate, '%W %D of %M, %Y')
    这会给你 'Monday 16th of June, 2003)
    全部可用的格式请看 MySQL 的手册。
    dayname(date)
    传回日期的名称,例如 Monday
    extract(type FROM date)
    传回 date 的日期,譬如说 YEAR,他就会传回那个日期的年数。
    函式可用的类型跟 adddate() subdate() 的类型相同。
    unix_timestamp([date])
    传回目前的 Unix 时间。如果跟 date 一起使用,传回的日期会从 date 的日期开始计算。
    范例:

    程序代码:

    SELECT adddate("1999-01-01", INTERVAL "1-6" YEAR_MONTH);
    //
    传回 2000-07-01
    SELECT unix_timestamp(adddate("1999-01-01", INTERVAL "1-6" YEAR_MONTH);
    //
    传回 962373600

    可以用 PHP date() 函式来将 Unix 的时间格式化。

    cast
    函式
    cast
    可以用来改变类型,用 cast() convert() 函式。
    两个函式相同,但是不同的语法构造。
    cast(expression AS type)
    convert(expression, type)
    cast()
    是依照 ANSI 的规格,convert() 是依照 ODBC 的规格。
    类型可以是 BINARY, CHAR, DATE, DATETIME, SIGNED (INTEGER), UNSIGNED (INTEGER)
    通常 MySQL 会自动帮你改变类型。

    其它函式
    benchmark(count, expression)
    这个函式是用来测试查询的速度,只会传回 0 值。
    encrypt(s[,salt])
    s 加密用 Unix 的加密系统。salt 字符串是两个字符的字符串,可以不用。
    如果没有 crypt 功能,像在 Windows 系统,这个函式会传回 NULL
    found_rows()
    传回字段的数量,如果没有用 LIMIT
    只有在 SELECT 里使用 SQL_CALC_FOUND_ROWS 才能用这个函式。
    last_insert_id()
    传回最后产生的 AUTO_INCREMENT 值。
    md5(s)
    传回 128bit MD5 的加密字符串。
    password(s)
    计算 s 的密码,不建议用这个函式来储存密码。

    用于 GROUP BY 的函式
    这些还是专门为了 GROUP BY 而写的。
    avg(column) -
    传回字段的平均值
    count(column) -
    传回字段的数量
    min(column) -
    传回字段的最小值
    max(column) -
    传回字段的最大值
    std(column) -
    传回字段的标准差
    sum(column) -
    传回字段的总数

  • 相关阅读:
    Django ORM操作
    两张表是一对一的关系为什么不直接都放在一张表里面?
    TCP、UDP 详解
    如何使用Xshell连接虚拟机
    selenium中常见的无法定位元素问题
    python中生产者消费者模式
    Selenium 点击后跳转至新窗口无法定位元素问题(element not interactable)
    linux 网络管理
    Linux文件权限
    linux 用户管理命令
  • 原文地址:https://www.cnblogs.com/tuyile006/p/1273340.html
Copyright © 2011-2022 走看看