加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MYSQL数据库与MSSQL对比学习MYSQL的心得(六)--函数

发布时间:2020-12-26 08:26:38 所属栏目:MySql教程 来源:网络整理
导读:《MYSQL数据库与MSSQL对比学习MYSQL的心得(六)--函数》要点: 本文介绍了MYSQL数据库与MSSQL对比学习MYSQL的心得(六)--函数,希望对您有用。如果有疑问,可以联系我们。 MYSQL应用 数学函数 MYSQL应用 1、求余函数MOD(X,Y) MYSQL应用 MOD(X,Y)返回x被y除

MYSQL应用
?
2、CONNECTION_ID()返回MYSQL服务器当前连接的次数,每个连接都有各自唯一的ID

MYSQL应用查看当前用户的连接数

MYSQL应用
SELECT CONNECTION_ID()

MYSQL应用

MYSQL应用这里返回1,返回值根据登录的次数会有不同.

MYSQL应用3、SHOW PROCESSLIST;

MYSQL应用4、SHOW FULL PROCESSLIST;

MYSQL应用processlist命令的输出结果显示了有哪些线程在运行,不仅可以查看当前所有的连接数,还可以查看当前的连接状态

MYSQL应用帮助识别出有问题的查询语句等.

MYSQL应用?

MYSQL应用如果是root帐号,能看到所有用户的当前连接.如果是其他普通帐号,则只能看到自己占用的连接.showprocesslist只能列出当前100条

MYSQL应用如果想全部列出,可以使用SHOW FULL PROCESSLIST命令

MYSQL应用SHOW PROCESSLIST
SHOW FULL PROCESSLIST
show full processlist会看到连接使用的内存

MYSQL应用
show processlist

MYSQL应用

MYSQL应用
show full processlist

MYSQL应用

MYSQL应用?各个列的含义

MYSQL应用(1)id列,用户登录mysql时,系统分配的“connection_id”

MYSQL应用(2)user列,显示当前用户.如果不是root,这个命令就只显示用户权限范围的sql语句

MYSQL应用(3)host列,显示这个语句是从哪个ip的哪个端口上发的,可以用来跟踪出现问题语句的用户

MYSQL应用(4)db列,显示这个进程目前连接的是哪个数据库

MYSQL应用(5)command列,显示当前连接的执行的命令,一般取值为休眠(sleep),查询(query),连接(connect)

MYSQL应用(6)time列,显示这个状态持续的时间,单位是秒

MYSQL应用(7)state列,显示使用当前连接的sql语句的状态,很重要的列,后续会有所有状态的描述,state只是语句执行中的某一个状态.一个sql语句,

MYSQL应用以查询为例

MYSQL应用可能需要经过

MYSQL应用copying to tmp table,

MYSQL应用sorting result,

MYSQL应用sending data

MYSQL应用等状态才可以完成

MYSQL应用(8)info列,显示这个sql语句,是判断问题语句的一个重要依据.

MYSQL应用5、DATABASE()和SCHEMA()函数返回使用utf8字符集的默认(当前)数据库名

MYSQL应用
SELECT DATABASE(),SCHEMA()

MYSQL应用
可以看到,两个函数的作用相同

MYSQL应用6、获取用户名的函数

MYSQL应用USER()、CURRENT_USER()、CURRENT_USER、SYSTEM_USER()、SESSION_USER()

MYSQL应用这几个函数返回当前被MYSQL服务器验证的用户名和主机名组合.这个值符合确定当前登录用户

MYSQL应用存取权限的MYSQL帐户.一般情况下,这几个函数的返回值是相同的.

MYSQL应用
SELECT  USER(),CURRENT_USER(),SYSTEM_USER()

MYSQL应用
返回结果指示了当前帐户连接服务器的用户名以及所连接的客户主机,root为当前登录的用户名,localhost为登录的主机名

MYSQL应用7、获取字符串的字符集和排序方式的函数

MYSQL应用CHARSET(STR)返回字符串str自变量的字符集

MYSQL应用
SELECT  CHARSET('abc'),CHARSET(CONVERT('abc' USING latin1)),CHARSET(VERSION())

MYSQL应用
CHARSET('abc')返回系统默认的字符集utf8;

MYSQL应用CHARSET(CONVERT('abc' USING latin1))返回的字符集为latin1;

MYSQL应用VERSION()返回的字符串使用utf8字符集,因此CHARSET返回结果为utf8

MYSQL应用8、COLLATION(str)返回字符串str的字符排列方式

MYSQL应用
SELECT  COLLATION(_latin2 'abc'),COLLATION(CONVERT('abc' USING utf8))

MYSQL应用
可以看到,使用不同字符集时字符串的排列方式不同

MYSQL应用9、获取最后一个自动生成的ID值的函数

MYSQL应用LAST_INSERT_ID()自动返回最后一个INSERT或UPDATE为AUTO_INCREMENT列设置的第一个发生的值

MYSQL应用?

MYSQL应用(1)一次插入一条记录

MYSQL应用首先创建表worker,其ID字段带有AUTO_INCREMENT约束

MYSQL应用
CREATE TABLE worker(
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,NAME VARCHAR(30)
)

MYSQL应用分别单独向表worker插入2条记录

MYSQL应用
INSERT INTO worker VALUES(NULL,'jimmy');
INSERT INTO worker VALUES(NULL,'tom')
SELECT * FROM worker

MYSQL应用查看已经插入的数据可以发现,最后一条插入的记录的ID字段值为2,使用LAST_INSERT_ID()查看最后自动生成的ID值

MYSQL应用
SELECT LAST_INSERT_ID()

MYSQL应用
?
?可以看到,一次插入一条记录时,返回值为最后一条插入记录的ID值

MYSQL应用(2)一次同时插入多条记录

MYSQL应用?接下来,向表中插入多条记录

MYSQL应用
INSERT INTO worker VALUES(NULL,'kevin'),(NULL,'michal'),'nick')

MYSQL应用查询已经插入的记录

MYSQL应用
SELECT * FROM worker 

MYSQL应用

MYSQL应用可以看到最后一条记录的ID字段值为5,使用LAST_INSERT_ID()查看最后自动生成的ID值

MYSQL应用
SELECT LAST_INSERT_ID()

MYSQL应用

MYSQL应用结果显示,ID字段值不是5而是3,这是为什麽呢?

MYSQL应用在向数据表插入一条记录时,LAST_INSERT_ID()返回带有AUTO_INCREMENT约束的字段最新生成的值2;继续向表

MYSQL应用中同时添加3条记录,这时候因为当使用一条INSERT语句插入多个行时,LAST_INSERT_ID只返回插入的第一行数据

MYSQL应用时产生的值,在这里为第3条记录.之所以这样,是因为这使依靠其他服务器复制同样的INSERT语句变得简单

MYSQL应用TIPS:LAST_INSERT_ID是与table无关的,如果向表a插入数据后,再向表b插入数据,LAST_INSERT_ID返回表b中的ID值

MYSQL应用这里跟SQLSERVER不一样

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读