MySQL 常用指令筆記(問答)

MySQL 常用的設定和指令記錄, 採 FAQ 方式記錄.

MySQL 於 mysql> 使用 less 看結果
pager less -n -i -S
直式列出 query 結果
SELECT * FROM TABLE_NAMEG
設定 mysql> 變成 (user@host) [(dbname)]>
於 .bashrc 加一行

export MYSQL_PS1="(u@h) [d]> "

MySQL 看 status
show status; 或 mysqladmin -u root -p status
MySQL 要讓 localhost 以外的 Client 連進來
/etc/mysql/my.cnf 拿掉 bind-address = 127.0.0.1 即可
MySQL 秀錯誤編號, 該如何查此編號對應的原因?
MySQL error 編號, 在 shell 下打 "perror 編號" 就可知道原因了, Example:

$ perror 134
MySQL error: 134 = Record was already deleted (or record file crashed)
mysql error code
shell> perror 12
System error: 12 = Cannot allocate memory

Check Table 是否有錯誤
CHECK TABLE tbl_name [fast] [quick], 詳可參見: 此連結
於系統運作下, 修復 TABLE
repair table table_name, 詳可參見: 此連結
MySQL 停止後, 於 shell 下修復 TABLE(MyISM)
myismchk /mysql/data/TABLE_NAME.MYI
MySQL 只 dump table 的 schema

使用此參數: --no-data, -d
mysqldump -d -u root -p DB_NAME TABLE_NAME > TABLE_NAME.sql

MySQL 只 dump db 的 schema

使用此參數: --no-data, -d
mysqldump -d -u root -p DB_NAME > DB_NAME.sql

MySQL 只 dump db 的 data

-c: SQL 語法前面會把欄位名稱也列出來
-t: Table
mysqldump -u root -p -t -c DBNAME > DB_ALL_DATA.sql
或 mysqldump -u root -p -t DBNAME > DB_ALL_DATA.sql

MySQL 只 dump table 的 data

-c: SQL 語法前面會把欄位名稱也列出來
-t: Table
mysqldump -u root -p -t -c DBNAME TABLENAME > DB_TABLE_DATA.sql
或 mysqldump -u root -p -t DBNAME TABLENAME > DB_TABLE_DATA.sql

Query 指定使用哪個 index 的語法

SELECT COUNT(*) FROM TABLE_NAME USE INDEX(XXX_idx)

看此 table_name 使用多少容量、空間

show table status like 'table_name';

看 table 如何 create 的

mysql> show create table table_name

如何看 mysql bin log

mysqlbinlog m10-relay-bin.001

如何看 SQL 語法使用到哪個 Index Key

mysql> EXPLAIN SELECT * FROM User

如何設定把 所有 對此 MySQL 所下的 SQL 語法都記錄下來

my.cnf
[mysqld]
log = /var/logs/mysql/mysql-query.log

如何找出 MySQL column欄位中的值不等於 0-9 的

SELECT * FROM TABLENAME WHERE column REGEXP '[^0-9]';

要將資料倒回 DB 的標準做法(若有設 Foreign Key 用此方法才能順利匯入)
  • mysql> SET FOREIGN_KEY_CHECKS = 0;
  • mysql> SOURCE dump_file_name;
  • mysql> SET FOREIGN_KEY_CHECKS = 1;

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈MySQL 常用指令筆記(問答)〉中有 3 則留言

  1. mysqldump沒有時間的參數可以設定
    mysqldump是否可以將select語法直接加入作為備份條件?
    或是有較為正統根據時間備份的方式呢?
    (假設table內有一個欄位為timestamp)
    謝謝

  2. 要將 SELECT 語法作為備份條件, 可以考慮:
    mysql -u root -e "SELECT * FROM TABLE WHERE time > '2009-01-01'"
    不過, 得要自己 parse 來寫回去.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料