溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MySQL中系統(tǒng)信息函數(shù)有哪些

發(fā)布時(shí)間:2021-03-04 09:39:38 來(lái)源:億速云 閱讀:303 作者:小新 欄目:MySQL數(shù)據(jù)庫(kù)

小編給大家分享一下MySQL中系統(tǒng)信息函數(shù)有哪些,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

系統(tǒng)信息函數(shù)

(1)獲取MySQL版本號(hào)、連接數(shù)和數(shù)據(jù)庫(kù)名的函數(shù)
(2)獲取用戶名的函數(shù)
(3)獲取字符串的字符集和排序方式的函數(shù)
(4)獲取最后一個(gè)自動(dòng)生成的ID值的函數(shù)

(相關(guān)免費(fèi)學(xué)習(xí)推薦:mysql視頻教程)

(1)、獲取MySQL版本號(hào)、連接數(shù)和數(shù)據(jù)庫(kù)名的函數(shù)

1.version()

  • version()返回指示MySQL服務(wù)器版本的字符串,這個(gè)字符串使用utf8字符集。

【例】查看當(dāng)前MySQL版本號(hào),SQL語(yǔ)句如下:

mysql> select version();+-----------+| version() |+-----------+| 8.0.16    |+-----------+1 row in set (0.05 sec)

2.connection_id()

  • connection_id()返回MySQL服務(wù)器當(dāng)前連接的次數(shù),每個(gè)連接都有各自唯一的ID。

【例】查看當(dāng)前用戶的連接數(shù),SQL語(yǔ)句如下:

mysql> select connection_id();+-----------------+| connection_id() |+-----------------+|              18 |+-----------------+1 row in set (0.05 sec)

3.show processlist 和 show full processlist

  • processlist 命令的輸出結(jié)果顯示有哪些線程在運(yùn)行,不僅可以查看當(dāng)前所有的連接數(shù),還可以查看當(dāng)前的連接狀態(tài),幫助識(shí)別出有問(wèn)題的查詢語(yǔ)句等。

  • 如果是root賬號(hào),就能看到所有用戶的當(dāng)前連接,如果是其他普通賬號(hào),則只能看到自己占用的連接。show processlist只列出 前100條,如果想全部列出可使用show full processlist命令。

【例】使用showprocesslist命令輸出當(dāng)前用戶的連接信息,SQL語(yǔ)句如下:

mysql> show processlist;+----+-----------------+-----------------+---------+---------+--------+------------------------+------------------+| Id | User            | Host            | db      | Command | Time   | State                  | Info             |+----+-----------------+-----------------+---------+---------+--------+------------------------+------------------+|  4 | event_scheduler | localhost       | NULL    | Daemon  | 381487 | Waiting on empty queue | NULL             || 18 | root            | localhost:60272 | company | Query   |      0 | starting               | show processlist |+----+-----------------+-----------------+---------+---------+--------+------------------------+------------------+2 rows in set (0.05 sec)

各個(gè)列的含義:

含義
id列用戶登錄MySQL時(shí),系統(tǒng)分配的"connection id"
User顯示當(dāng)前用戶,如果不是root,就顯示用戶權(quán)限范圍內(nèi)的MySQL語(yǔ)句
Host顯示這個(gè)語(yǔ)句是從哪個(gè)IP的哪個(gè)端口上發(fā)出的,可以用來(lái)追蹤出現(xiàn)問(wèn)題語(yǔ)句的用戶
db顯示這個(gè)進(jìn)程目前連接的是哪個(gè)數(shù)據(jù)庫(kù)
Command顯示當(dāng)前連接的執(zhí)行命令,一般取值為休眠(sleep)、查詢(Query)、連接(Connect)
Time顯示這個(gè)狀態(tài)持續(xù)的時(shí)間,單位是秒
State顯示使用當(dāng)前連接的SQL語(yǔ)句的狀態(tài),State只是語(yǔ)句執(zhí)行中的某一個(gè)狀態(tài)
Info顯示這個(gè)SQL語(yǔ)句,是判斷問(wèn)題語(yǔ)句的一個(gè)重要語(yǔ)句

4.database() 和 schema()
【例】查看當(dāng)前使用的數(shù)據(jù)庫(kù),SQL語(yǔ)句如下:

mysql> select database(),schema();+------------+----------+| database() | schema() |+------------+----------+| company    | company  |+------------+----------+1 row in set (0.00 sec)

(2)、獲取用戶名的函數(shù)
  • user()、current_user()、system_user()和session_user()這幾個(gè)函數(shù)返回當(dāng)前被MySQL服務(wù)器驗(yàn)證的用戶名和主機(jī)名組合。這個(gè)值符合確定當(dāng)前登錄用戶存取權(quán)限的MySQL賬戶。

【例】獲取當(dāng)前登錄用戶名稱,SQL語(yǔ)句如下:

  • 返回結(jié)果值顯示了當(dāng)前賬戶連接服務(wù)器時(shí)的用戶名及所連接的客戶主機(jī),root為當(dāng)前登錄的用戶名,localhost為登錄的主機(jī)名。

mysql> select user(),current_user,system_user();+----------------+----------------+----------------+| user()         | current_user   | system_user()  |+----------------+----------------+----------------+| root@localhost | root@localhost | root@localhost |+----------------+----------------+----------------+1 row in set (0.05 sec)

(3)、獲取字符串的字符集和排序方式的函數(shù)

1.charset(str)

【例】使用charset()函數(shù)返回字符串使用的字符集,SQL語(yǔ)句如下:

mysql> select charset('abc'),
    -> charset(convert('abc' USING latin1 ) ),
    -> charset(version());+----------------+----------------------------------------+--------------------+| charset('abc') | charset(convert('abc' USING latin1 ) ) | charset(version()) |+----------------+----------------------------------------+--------------------+| gbk            | latin1                                 | utf8               |+----------------+----------------------------------------+--------------------+1 row in set (0.00 sec)

2.collation(str)

【例】使用collation()函數(shù)返回字符串排列方式,SQL語(yǔ)句如下:

mysql> select collation('abc'),collation(convert('abc' USING utf8 ));+------------------+---------------------------------------+| collation('abc') | collation(convert('abc' USING utf8 )) |+------------------+---------------------------------------+| gbk_chinese_ci   | utf8_general_ci                       |+------------------+---------------------------------------+1 row in set, 1 warning (0.05 sec)

(4)、獲取最后一個(gè)自動(dòng)生成的ID值的函數(shù)

【例】使用select last_insetr_id查看最后一個(gè)自動(dòng)生成的列值,執(zhí)行過(guò)程如下:

①一次插入一條記錄
首先創(chuàng)建表worker,其id字段帶有auto_increment約束,SQL語(yǔ)句如下:

mysql> create table worker    -> (
    -> id int auto_increment not null primary key,
    -> Name varchar(30)
    -> );Query OK, 0 rows affected (0.21 sec)

分別單獨(dú)向表worker中插入兩條記錄:

mysql> insert into worker values(null,'jimy');Query OK, 1 row affected (0.07 sec)mysql> insert into worker values(null,'Tom');Query OK, 1 row affected (0.05 sec)mysql> select * from worker;+----+------+| id | Name |+----+------+|  1 | jimy ||  2 | Tom  |+----+------+2 rows in set (0.00 sec)

查看已經(jīng)插入的數(shù)據(jù),發(fā)現(xiàn)最后一條插入的記錄的id字段值為2,使用last_insert_id()查看最后自動(dòng)生成的id值:

mysql> select last_insert_id();+------------------+| last_insert_id() |+------------------+|                2 |+------------------+1 row in set (0.05 sec)

可以看到,一次插入一條記錄時(shí),返回值為最后一條插入記錄的id值。

②一次同時(shí)插入多條記錄
向表中插入多條記錄:

mysql> insert into worker values
    -> (null,'Kevin'),
    -> (null,'Michal'),
    -> (null,'NICK');Query OK, 3 rows affected (0.05 sec)Records: 3  Duplicates: 0  Warnings: 0mysql> SELECT * FROM WORKER;+----+--------+| id | Name   |+----+--------+|  1 | jimy   ||  2 | Tom    ||  3 | Kevin  ||  4 | Michal ||  5 | NICK   |+----+--------+5 rows in set (0.00 sec)

使用last_insert_id查看最后自動(dòng)生成的id值:

mysql> SELECT LAST_INSERT_ID();+------------------+| LAST_INSERT_ID() |+------------------+|                3 |+------------------+1 row in set (0.00 sec)

使用一條insert語(yǔ)句插入多個(gè)行時(shí),last_insert_id()只返回插入的第一行數(shù)據(jù)時(shí)產(chǎn)生的值,在這里為插入第3條記錄。之所以這樣是因?yàn)檫@使依靠其他服務(wù)器復(fù)制同樣的insert語(yǔ)句變得簡(jiǎn)單。

提示:

  • last_insert_id是與table無(wú)關(guān)的,先向表a插入數(shù)據(jù),再向表b插入數(shù)據(jù),last_insert_id返回表b中的id值。

看完了這篇文章,相信你對(duì)“MySQL中系統(tǒng)信息函數(shù)有哪些”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI