システム情報関数
(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列 | 「接続ID」ユーザーが MySQL にログインするときにシステムによって割り当てられます |
User | 現在のユーザーを表示します。root でない場合は、ユーザーの権限内の MySQL ステートメントを表示します |
Host | このステートメントが発行された IP とポートを表示します。これは、問題のあるステートメントを発行したユーザーを追跡するために使用できます |
db | このプロセスの現在のステータスを表示します。 どのデータベースが接続されているかを表示します。 |
現在の接続の実行コマンドを表示します一般的な値は、sleep、query、connect | |
この状態の継続時間を表示します。単位は秒です。 | |
現在の使用状況を表示します。接続された SQL ステートメントの状態です。State は、ステートメントの実行における特定の状態です。 | |
この SQL 文の表示は、問題文を判断するための重要な文です |
mysql> select database(),schema();+------------+----------+| database() | schema() |+------------+----------+| company | company |+------------+----------+1 row in set (0.00 sec)
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)
[例] 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)
(4)、最後に自動生成されたID値を取得する関数[例] select last_insetr_id を使用して、最後に自動生成された列の値を確認します 実行プロセスは次のとおりです:
①一度に 1 つのレコードを挿入します
まず、id フィールドを含むテーブル ワーカーを作成しますauto_increment 制約があり、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)
mysql> create table worker -> ( -> id int auto_increment not null primary key, -> Name varchar(30) -> );Query OK, 0 rows affected (0.21 sec)
挿入されたデータをチェックし、最後に挿入されたデータの id フィールド値を確認します。レコードは 2 です。最後に自動的に生成された ID 値を表示するには、last_insert_id() を使用します。:
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)
一度に 1 つのレコードを挿入すると、戻り値が最後の ID 値であることがわかります。挿入されたレコード。
複数のレコードをテーブルに挿入します:
mysql> select last_insert_id();+------------------+| last_insert_id() |+------------------+| 2 |+------------------+1 row in set (0.05 sec)
last_insert_id を使用して、最後に自動的に生成された 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)
When insert ステートメントを使用して複数の行を挿入すると、
は、データの最初の行が挿入されたときに生成された値のみを返します (ここでは 3 番目のレコードが挿入されています)。その理由は、他のサーバーに依存して同じ挿入ステートメントを複製することが容易になるためです。
last_insert_id
はテーブルから独立しています。最初にテーブル a にデータを挿入し、次にテーブル b にデータを挿入します (
mysql データベース
(ビデオ)
以上がMySQL がシステム情報機能を導入の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。