「MySQL」の版間の差分

提供: Wikinote
移動: 案内検索
(覚え書き)
 
(同じ利用者による、間の4版が非表示)
行1: 行1:
 
== 覚え書き ==
 
== 覚え書き ==
 +
 +
=== 接続 ===
 +
 +
mysql コマンドで接続する。
 +
 +
# mysql -u user -p [database]
 +
 +
mysql> show databases;
 +
+--------------------+
 +
| Database          |
 +
+--------------------+
 +
| information_schema |
 +
| mysql              |
 +
| pt2_db            |
 +
| test              |
 +
| wikidb            |
 +
+--------------------+
 +
5 rows in set (0.00 sec)
 +
mysql> use pt2_db
 +
Database changed
 +
mysql> show tables;
 +
+----------------------+
 +
| Tables_in_pt2_db    |
 +
+----------------------+
 +
| Recorder_categoryTbl |
 +
| Recorder_channelTbl  |
 +
| Recorder_keywordTbl  |
 +
| Recorder_logTbl      |
 +
| Recorder_programTbl  |
 +
| Recorder_reserveTbl  |
 +
+----------------------+
 +
6 rows in set (0.00 sec)
  
 
=== テーブルのチェックと修復 ===
 
=== テーブルのチェックと修復 ===
行22: 行54:
 
  +----------------------------+--------+----------+----------+
 
  +----------------------------+--------+----------+----------+
 
  1 row in set (1.24 sec)
 
  1 row in set (1.24 sec)
 
  
 
データベース全体をチェックする場合は、mysqlcheck コマンドが使える。
 
データベース全体をチェックする場合は、mysqlcheck コマンドが使える。
  
  # mysqlcheck -u root -p wikidb
+
  # mysqlcheck -u user -p wikidb
 
  Enter password:  
 
  Enter password:  
 
  wikidb.archive                                    OK
 
  wikidb.archive                                    OK
行34: 行65:
 
  wikidb.filearchive                                OK
 
  wikidb.filearchive                                OK
 
   ...
 
   ...
 +
 +
=== テーブルの最適化 ===
 +
 +
データベースの更新? が重くなってきたら実行してみる価値はあるかも。
 +
うちの環境では明らかに CPU 使用率が低下する。
 +
 +
# mysqlcheck -o -u user -p pt2_db
 +
Enter password:
 +
pt2_db.Recorder_categoryTbl                        Table is already up to date
 +
pt2_db.Recorder_channelTbl                        Table is already up to date
 +
pt2_db.Recorder_keywordTbl                        OK
 +
pt2_db.Recorder_logTbl                            OK
 +
pt2_db.Recorder_programTbl                        OK
 +
pt2_db.Recorder_reserveTbl                        OK
 +
 +
=== SQL ===
 +
 +
ソフ開に合格した時は覚えてたんだが、使わないとやはり忘れてしまうなぁ。
 +
 +
==== データを抽出 ====
 +
SELECT 列名 FROM テーブル名 WHERE 条件式
 +
 +
* [http://ja.wikipedia.org/wiki/SELECT_(SQL) SELECT (SQL) - Wikipedia]
 +
 +
==== レコードを削除 ====
 +
DELETE FROM テーブル名 WHERE 条件式
 +
 +
* [http://ja.wikipedia.org/wiki/DELETE_(SQL) DELETE (SQL) - Wikipedia]
 +
 +
==== レコードを更新 ====
 +
UPDATE テーブル名 SET 列名 = 値 WHERE 条件式
 +
 +
* [http://ja.wikipedia.org/wiki/UPDATE_(SQL) UPDATE (SQL) - Wikipedia]

2012年3月1日 (木) 22:24時点における最新版

覚え書き

接続

mysql コマンドで接続する。

# mysql -u user -p [database]

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema | 
| mysql              | 
| pt2_db             | 
| test               | 
| wikidb             | 
+--------------------+
5 rows in set (0.00 sec)
mysql> use pt2_db
Database changed
mysql> show tables;
+----------------------+
| Tables_in_pt2_db     |
+----------------------+
| Recorder_categoryTbl | 
| Recorder_channelTbl  | 
| Recorder_keywordTbl  | 
| Recorder_logTbl      | 
| Recorder_programTbl  | 
| Recorder_reserveTbl  | 
+----------------------+
6 rows in set (0.00 sec)

テーブルのチェックと修復

某 PHP アプリが正常に動作しないと思ったら、データベースのテーブルが破損していた。

mysql> check table Recorder_programTbl;
+----------------------------+-------+----------+----------------------------------------------------------------------------------+
| Table                      | Op    | Msg_type | Msg_text                                                                         |
+----------------------------+-------+----------+----------------------------------------------------------------------------------+
| pt2_db.Recorder_programTbl | check | error    | Table './pt2_db/Recorder_programTbl' is marked as crashed and should be repaired | 
+----------------------------+-------+----------+----------------------------------------------------------------------------------+
1 row in set (0.00 sec)

以下のコマンドで修復できる。

mysql> repair table Recorder_programTbl;
+----------------------------+--------+----------+----------+
| Table                      | Op     | Msg_type | Msg_text |
+----------------------------+--------+----------+----------+
| pt2_db.Recorder_programTbl | repair | status   | OK       | 
+----------------------------+--------+----------+----------+
1 row in set (1.24 sec)

データベース全体をチェックする場合は、mysqlcheck コマンドが使える。

# mysqlcheck -u user -p wikidb
Enter password: 
wikidb.archive                                     OK
wikidb.category                                    OK
wikidb.categorylinks                               OK
wikidb.externallinks                               OK
wikidb.filearchive                                 OK
 ...

テーブルの最適化

データベースの更新? が重くなってきたら実行してみる価値はあるかも。 うちの環境では明らかに CPU 使用率が低下する。

# mysqlcheck -o -u user -p pt2_db
Enter password: 
pt2_db.Recorder_categoryTbl                        Table is already up to date
pt2_db.Recorder_channelTbl                         Table is already up to date
pt2_db.Recorder_keywordTbl                         OK
pt2_db.Recorder_logTbl                             OK
pt2_db.Recorder_programTbl                         OK
pt2_db.Recorder_reserveTbl                         OK

SQL

ソフ開に合格した時は覚えてたんだが、使わないとやはり忘れてしまうなぁ。

データを抽出

SELECT 列名 FROM テーブル名 WHERE 条件式

レコードを削除

DELETE FROM テーブル名 WHERE 条件式

レコードを更新

UPDATE テーブル名 SET 列名 = 値 WHERE 条件式