MySQL 函数和运算符:其他函数

来自Wikioe
跳到导航 跳到搜索


Name Description
ANY_VALUE() 禁止拒绝 ONLY_FULL_GROUP_BY 值
DEFAULT() 返回 table 列的默认值
INET_ATON() 返回 IP 地址的数值
INET_NTOA() 从数值返回 IP 地址
INET6_ATON() 返回 IPv6 地址的数值
INET6_NTOA() 从数值返回 IPv6 地址
IS_IPV4() 参数是否为 IPv4 地址
IS_IPV4_COMPAT() 参数是否为 IPv4 兼容地址
IS_IPV4_MAPPED() 参数是否为 IPv4Map 的地址
IS_IPV6() 参数是否为 IPv6 地址
MASTER_POS_WAIT() 阻塞直到从站读取并应用所有更新到指定位置
NAME_CONST() 使列具有给定名称
SLEEP() 睡觉几秒钟
UUID() 返回通用唯一标识符(UUID)
UUID_SHORT() 返回一个整数通用标识符
VALUES() 定义在 INSERT 期间要使用的值

【说明:略】


UUID():返回根据 RFC 4122“通用唯一标识符(UUID)URN 命名空间”(http://www.ietf.org/rfc/rfc4122.txt)生成的通用唯一标识符(UUID)。

  • UUID 被设计为在空间和时间上全局唯一的数字。即使对两个未连接的独立设备执行了对UUID()的两次调用,它们也会产生两个不同的值。
  • 尽管UUID()值旨在唯一,但不一定是不可猜测或不可预测的。如果需要不可预测性,则应以其他方式生成 UUID 值。

UUID()返回一个符合 RFC 4122 中描述的 UUID 版本 1 的值。该值是一个 128 位数字,表示为“aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee”格式的五个十六进制数字的utf8字符串:

  1. 前三个数字是从时间戳的低,中和高部分生成的。较高的部分还包括 UUID 版本号。
  2. 万一时间戳值失去单调性(例如,由于夏令时),第四个数字将保留时间唯一性。
  3. 第五个数字是提供空间唯一性的 IEEE 802 节点号。如果后者不可用(例如,因为主机设备没有以太网卡,或者不知道如何在主机 os 上找到接口的硬件地址),则将替换为一个随机数。在这种情况下,不能保证空间唯一性。但是,碰撞应该非常低。
    • 仅在 FreeBSD,Linux 和 Windows 上才考虑接口的 MAC 地址。在其他 os 上,MySQL 使用随机生成的 48 位数字。


mysql> SELECT UUID();
        -> '6ccd780c-baba-1026-9564-5b8c656024db'
  • 此功能对于基于语句的复制不安全。如果在“binlog_format”设置为“STATEMENT”时使用此功能,则会记录一条警告。【???】


UUID_SHORT():以 64 位无符号整数形式返回“短”通用标识符。 UUID_SHORT()返回的值与UUID()函数返回的字符串格式的 128 位标识符不同,并且具有不同的唯一性属性。如果满足以下条件,则UUID_SHORT()的值保证是唯一的:

  1. 当前服务器的server_id值在 0 到 255 之间,并且在您的主服务器和从服务器中是唯一的
  2. 您不会在mysqld重启之间为服务器主机设置系统时间
  3. 在mysqld重新启动之间,您每秒平均调用UUID_SHORT()次少于 1600 万次

UUID_SHORT()返回值的构造方式如下:

(server_id & 255) << 56
+ (server_startup_time_in_seconds << 24)
+ incremented_variable++;
mysql> SELECT UUID_SHORT();
        -> 92395783831158784
  • UUID_SHORT()不适用于基于语句的复制。【???】