系統資訊函數
(1)取得MySQL版本號、連線數和資料庫名稱的函數
(2)取得使用者名稱的函數
(3)取得字串的字元集和排序方式的函數
(4)取得最後一個自動產生的ID值的函數
(相關免費學習推薦:mysql影片教學)
#1.version()
【範例】查看目前MySQL版本號,SQL語句如下:
mysql> select version();+-----------+| version() |+-----------+| 8.0.16 |+-----------+1 row in set (0.05 sec)
2.connection_id()
【範例】查看目前使用者的連線數,SQL語句如下:
mysql> select connection_id();+-----------------+| connection_id() |+-----------------+| 18 |+-----------------+1 row in set (0.05 sec)
3.show processlist 和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)
【範例】取得目前登入使用者名稱,SQL語句如下:
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)
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.collation(str)
【範例】使用collation()函數傳回字串排列方式,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)
【範例】使用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中文網其他相關文章!