MySQL介紹系統資訊函數

coldplay.xixi
發布: 2021-03-04 09:17:18
轉載
2235 人瀏覽過

MySQL介紹系統資訊函數

系統資訊函數

(1)取得MySQL版本號、連線數和資料庫名稱的函數
(2)取得使用者名稱的函數
(3)取得字串的字元集和排序方式的函數
(4)取得最後一個自動產生的ID值的函數

(相關免費學習推薦:mysql影片教學)

(1)、取得MySQL版本號、連線數和資料庫名稱的函數

#1.version()

  • version()傳回指示MySQL伺服器版本的字串,這個字串使用utf8字元集。

【範例】查看目前MySQL版本號,SQL語句如下:

mysql> select version();+-----------+| version() |+-----------+| 8.0.16    |+-----------+1 row in set (0.05 sec)
登入後複製

2.connection_id()

  • connection_id()傳回MySQL伺服器目前連線的次數,每個連線都有各自唯一的ID。

【範例】查看目前使用者的連線數,SQL語句如下:

mysql> select connection_id();+-----------------+| connection_id() |+-----------------+|              18 |+-----------------+1 row in set (0.05 sec)
登入後複製

3.show processlist 和show full processlist

  • processlist 指令的輸出結果顯示有哪些執行緒在執行,不僅可以查看目前所有的連線數,還可以查看目前的連線狀態,幫助辨識出有問題的查詢語句等。
  • 如果是root帳號,就能看到所有使用者的目前連接,如果是其他普通帳號,則只能看到自己佔用的連線。 show processlist只列出 前100條,若想全部列出可使用show full processlist指令。

【範例】使用showprocesslist指令輸出目前使用者的連線訊息,SQL語句如下:

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)
登入後複製

各個欄位的意思:

意義
id欄位 使用者登入MySQL時,系統指派的"connection id"
User 顯示目前使用者,如果不是root,就顯示使用者權限範圍內的MySQL語句
#Host 顯示這個語句是從哪個IP的哪個連接埠上發出的,可以用來追蹤出現問題語句的使用者
db 顯示這個進程目前連接的是哪個資料庫
Command 顯示目前連線的執行指令,一般取值為休眠(sleep)、查詢(Query)、連線(Connect)
Time 顯示這個狀態持續的時間,單位是秒
State 顯示使用目前連接的SQL語句的狀態,State只是語句執行中的某一個狀態
Info 顯示這個SQL語句,是判斷問題語句的重要語句

4.database() 和schema()
【範例】查看目前使用的資料庫,SQL語句如下:

mysql> select database(),schema();+------------+----------+| database() | schema() |+------------+----------+| company    | company  |+------------+----------+1 row in set (0.00 sec)
登入後複製

(2 )、取得使用者名稱的函數
  • user()、current_user()、system_user()和session_user()這幾個函數傳回目前被MySQL伺服器驗證的使用者名稱和主機名稱組合。這個值符合確定目前登入使用者存取權限的MySQL帳號。

【範例】取得目前登入使用者名稱,SQL語句如下:

  • #傳回結果值顯示了目前帳號連線伺服器時的使用者名稱及所連接的客戶主機,root為目前登入的使用者名,localhost為登入的主機名稱。
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)、取得字串的字元集和排序方式的函數

1.charset(str)

【範例】使用charset()函數傳回字串使用的字元集,SQL語句如下:

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.collat​​ion(str)

【範例】使用collat​​ion()函數傳回字串排列方式,SQL語句如下:

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)、取得最後一個自動產生的ID值的函數

【範例】使用select last_insetr_id查看最後一個自動產生的列值,執行程序如下:

①一次插入一筆記錄
首先建立表worker,其id欄位帶有auto_increment約束,SQL語句如下:

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

分別單獨向表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)
登入後複製

查看已經插入的數據,發現最後一筆插入的記錄的id字段值為2,使用last_insert_id()查看最後自動產生的id值:

mysql> select last_insert_id();+------------------+| last_insert_id() |+------------------+|                2 |+------------------+1 row in set (0.05 sec)
登入後複製

可以看到,一次插入一筆記錄時,傳回值為最後一筆插入記錄的id值。

②一次同時插入多筆記錄
向表中插入多筆記錄:

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查看最後自動產生的id值:

mysql> SELECT LAST_INSERT_ID();+------------------+| LAST_INSERT_ID() |+------------------+|                3 |+------------------+1 row in set (0.00 sec)
登入後複製

使用一條insert語句插入多個行時,last_insert_id()只傳回插入的第一行資料時產生的值,在這裡為插入第3筆記錄。之所以這樣是因為這使得依靠其他伺服器複製同樣的insert語句變得簡單。

提示:

  • last_insert_id是與table無關的,先向表a插入數據,再向表b插入數據,last_insert_id傳回表b中的id值。

相關免費學習推薦:mysql資料庫(影片)

以上是MySQL介紹系統資訊函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!