ITPub博客

首页 > Linux操作系统 > Linux操作系统 > mysql常用函数

mysql常用函数

原创 Linux操作系统 作者:myownstars 时间:2013-04-11 15:39:58 0 删除 编辑

 

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博客 ” ,链接:https://blog.itpub.net/15480802/viewspace-758260/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: mysql的binlog格式
请登录后发表评论 登录
全部评论

注册时间:2010-03-18

  • 博文量
    375
  • 访问量
    3320761