MySQL CASE:SQL 語法的 switch 和 if-else

MySQL、MSSQL 的 SQL 語法裡面,想要做 if-else 或 switch,可以怎麼做呢?

閱讀全文〈MySQL CASE:SQL 語法的 switch 和 if-else〉

MySQL 的 Prompt 想顯示主機和資料庫名稱

MySQL 的 Prompt 想要顯示主機和資料庫名稱等資訊,要怎麼設定呢?

mysql> 想要變成 (user@host) [(dbname)]> 作法如下:

  1. 在 Shell 輸入下述,再進入 MySQL CLI:
    • export MYSQL_PS1="(\u@\h) [\d]> "
  2. 進入 MySQL 裡面(mysql>),輸入下述:
  3. 在 Shell 輸入:
    • mysql --prompt="(\u@\h) [\d]> "
  4. vim /etc/mysql/my.cnf
    • [mysql]
    • prompt=(\\u@\\h) [\\d]>\\_

上述我是使用1、4,my.cnf 的設定不需要重啟 MySQL,直接寫完 mysql cli 進入就會直接讀取生效

PHP PDO Prepare Debug 印出 SQL 語法

PHP 都建議使用 Prepare 來避免 SQL injection 等等的,但是在 Debug 的時候,最困擾的就是如何把當下 SQL 語法印出來。

此套件支援 Debug 主要是可以將 SQL 語法印出。

閱讀全文〈PHP PDO Prepare Debug 印出 SQL 語法〉

MySQL SQL 語法 需要注意 型態自動轉換問題

MySQL SELECT、UPDATE、DELETE 加上 WHERE 條件,想說應該就沒有問題,但是若型態不對,可能會出現意想不到的結果。

閱讀全文〈MySQL SQL 語法 需要注意 型態自動轉換問題〉

MySQL 於 CLI 對所有 DB、Table 做 OPTIMIZE

MySQL 可以在 SQL 語法做 OPTIMIZE、Repair 等等的動作,於 CLI 也可以做,作法如下:

對所有 Database 做 OPTIMIZE 語法:

  • mysqlcheck -o --all-databases
  • mysqlcheck -o --all-databases -u [username] -p[password]

比較常用的 Analyze、Repair、Optimize 語法:

  • mysqlcheck -u [username] -p[password] -o [database name]
  • mysqlcheck --all-databases # -A
  • mysqlcheck --all-databases --analyze # -Aa
  • mysqlcheck --all-databases --auto-repair # -A --auto-repair
  • mysqlcheck --all-databases --optimize # -Ao
  • 於上述命令後面自己加上 -u root -p
  • 上述 指令「不能」複合一起下