MYSQL数据库与MSSQL对比学习MYSQL的心得(六)--函数
MYSQL应用 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 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应用 MYSQL应用7、获取字符串的字符集和排序方式的函数 MYSQL应用CHARSET(STR)返回字符串str自变量的字符集 MYSQL应用 SELECT CHARSET('abc'),CHARSET(CONVERT('abc' USING latin1)),CHARSET(VERSION()) MYSQL应用 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应用 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不一样 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |