MySQL
提供: Wikinote
覚え書き
接続
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 条件式