本文共 2186 字,大约阅读时间需要 7 分钟。
Connection_id()
--返回当前连接的ID,每个连接都有一个单独的ID以示区别
mysql> SELECT CONNECTION_ID();
-> 23786
Current_user()
返回实际登陆的用户名和主机信息,此决定了当前session的访问权限,返回字符串采用utf8;
可能与user()不一样,其记录的是当前连接使用的用户名和主机信息
mysql> SELECT CURRENT_USER();
-> '@localhost'
mysql> SELECT USER();
-> 'davida@localhost'
在存储过程和视图里,如果没有指定sql security invoker,current_user()返回定义此对象的用户definer,否则返回调用者invoker;
而触发器和event没有sql security选项,故current_user()永远返回对象的definer,而user()/session_user()返回invoker;
Database()
返回当前数据库名,如果没有责返回null,采用utf8字符集
Found_rows()
最近一次查询返回的行数
如果select采用limit,如果想知道去除limit返回的行数,可对select添加SQL_CALC_FOUND_ROWS关键字,在其后查询FOUND_ROWS()即可
mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name
-> WHERE id > 100 LIMIT 10;
mysql> SELECT FOUND_ROWS();
如果只有limit,limit 10—返回10;limit 50,10—返回60
该函数使用statement复制不可靠,会自动选用row-based
Last_insert_id()
自动返回最后一个INSERT或 UPDATE 查询中 AUTO_INCREMENT列第一个生成的值
第一
此函数作用域为会话级别,即只对当前连接有效
mysql> SELECT LAST_INSERT_ID();
-> 100
此值不能被其他会话读取
第二
该函数与表无关,如果向表a插入数据后,再向表b插入数据,LAST_INSERT_ID返回表b中的Id值
第三
假如你使用一条INSERT语句插入多个行, LAST_INSERT_ID() 只返回插入的第一行数据时产生的值
第四
假如你使用 INSERT IGNORE而记录被忽略,则AUTO_INCREMENT 计数器不会增量,而 LAST_INSERT_ID() 返回0, 这反映出没有插入任何记录。
session_user()/system_user()/user()
效果一样,都是返回发起连接时指定的用户名
version()
返回mysql服务器版本,采用utf8字符集
row_count()
5.5.5之前,返回DML操作的行数;
5.5.5启,DDL返回0,select返回-1;对于select into outfile/load data infile则返回操作的行数量;
concat(,..,)
连接字符参数,如果参数中有NULL则返回NULL
mysql> SELECT CONCAT('My', 'S', 'QL');
-> 'MySQL'
mysql> SELECT CONCAT('My', NULL, 'QL');
-> NULL
hex()/unhex()
返回给定参数的16进制
load_file()
读取参数指定的文件名并将文件内容以字符串形式返回;
此文件必须位于服务器上;
必须具有file权限;
文件必须小于max_allowed_packet;
如果设定了secure_file_priv,文件必须位于此目录下;
如上述条件任何一个没有满足,则函数返回NULL
mysql> UPDATE t SET blob_col=LOAD_FILE('/tmp/picture')
WHERE id=1;
cast()/convert()
将给定的表达式值转换为特定的数据类型
就是CAST(xxx AS 类型), CONVERT(xxx,类型)
mysql> SELECT CAST('3.35' AS signed);
+------------------------+
| CAST('3.35' AS signed) |
+------------------------+
| 3 |
+------------------------+
1 row in set
NULLIF()
如果两个表达式相同则返回NULL,否则返回第一个表达式
mysql> SELECT NULLIF(1,1);
-> NULL
mysql> SELECT NULLIF(1,2);
-> 1
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15480802/viewspace-758260/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/15480802/viewspace-758260/