MySql的奇妙函数使用和实践

1.子查询中使用ANY,代表任何值。在比较运算符中使用。比较运算符有哪些呢?
=,>,<,<=,>=,<>,!=等。和ANY一样还有IN,SOME等关键字。
用法很讲究,详情可浏览官方文档

DELETE FROM t1
WHERE s11 > ANY
 (SELECT COUNT(*) /* no hint */ FROM t2
  WHERE NOT EXISTS
   (SELECT * FROM t3
    WHERE ROW(5*t2.s1,77)=
     (SELECT 50,11*s1 FROM t4 UNION SELECT 50,77 FROM
      (SELECT * FROM t5) AS t5)));
SELECT * FROM (SELECT 5 AS X,4 AS Y FROM DUAL 
UNION SELECT 3,3 FROM DUAL 
UNION SELECT NULL,NULL FROM DUAL) t3 WHERE 
t3.X > ANY
(SELECT COUNT(*) FROM ((SELECT 3 FROM DUAL )
 UNION (SELECT * FROM  (SELECT 2 FROM DUAL) AS t5)) t4)

第二个SQL中,where条件中使用alias x做条件查询,语法上注意一点,不用子查询,一条sql的字段 alias后,where语句中直接使用不识别alias。

2.sleep函数-线程睡眠,mysql的sleep和java中Thread.sleep方法一样支持睡眠操作。
单位是秒。mysql官文

SELECT SLEEP(10);

SELECT NOW(),SLEEP(5),NOW();

SELECT SYSDATE(), SLEEP(2), SYSDATE();

3.日期类型函数,例如 date(),date_add,date_sub等。
mysql的日期类型操作的系统函数数量庞大,说明日期类型操作重要,经常用到。还有其他日期相关的系统函数,例如字符串转化到日期,日期格式化等等。日期类型也很多。例如date,datetime,timestamp等。
mysql官方文档

SELECT CURRENT_TIME;

SELECT DATE(STR_TO_DATE('2019-10-21 10:21:45','%Y-%m-%d %H:%i:%s'));
SELECT TIME(STR_TO_DATE('2019-10-21 10:21:45','%Y-%m-%d %H:%i:%s'));
SELECT LAST_DAY('2003-02-05'); #当月的最后一个天

4.mysql的UUID和UUID_SHORT函数
UUID_SHORT将返回全局唯一的64位正整数。和uuid()是不同的。uuid()字符串格式的128位的全剧唯一id。
如果以下条件成立,则uuid_short()的值保证是唯一的:

The server_id value of the current server is between 0 and 255 and is unique among your set of master and slave servers
运行mysql当前服务器在集群中的server-id是0255.
You do not set back the system time for your server host between mysqld restarts
mysqld启动后,不能设置系统时间,当前系统时间设置为过去时间
You invoke UUID_SHORT() on average fewer than 16 million times per second between mysqld restarts
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() does not work with statement-based replication.
uuid_short()不适用于基于语句的复制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值