MySQL 應用小筆記

來源:互聯網
上載者:User

標籤:

MySQL 掛起的調試

1. 附加到mysql

[email protected]: gdb -p 1232

1232 是 MySQL 的PID

2. 顯示當前線程

(gdb) info threads

3.顯示所有線程的回溯

(gdb) thread apply all bt
MySQL BINARY
mysql> SELECT * FROM tbl_4;+----+-------+| id | title |+----+-------+|  1 | 11    ||  2 | 22    ||  3 | 33    ||  4 | aa    ||  5 | bb    ||  6 | cc    ||  7 | AA    ||  8 | BB    ||  9 | CC    |+----+-------+9 rows in set (0.00 sec)mysql> SELECT * FROM tbl_4 WHERE title LIKE \‘a%\‘;+----+-------+| id | title |+----+-------+|  4 | aa    ||  7 | AA    |+----+-------+2 rows in set (0.00 sec)
mysql> SELECT * FROM tbl_4 WHERE BINARY title LIKE \‘a%\‘;+----+-------+| id | title |+----+-------+|  4 | aa    |+----+-------+1 row in set (0.00 sec)mysql> SELECT * FROM tbl_4 WHERE BINARY title LIKE \‘A%\‘;+----+-------+| id | title |+----+-------+|  7 | AA    |+----+-------+1 row in set (0.00 sec)
GROUP BY WITH ROLLUP

在 GROUP BY 結果的最後一行,列出所有行的總和,如下

mysql> S ELECT COUNT(*), title FROM tbl_4 GROUP BY title WITH ROLLUP;+----------+-------+| COUNT(*) | title |+----------+-------+|        1 | 11    ||        1 | 22    ||        1 | 33    ||        2 | aa    ||        2 | bb    ||        2 | cc    ||        9 | NULL  |+----------+-------+7 rows in set (0.00 sec)
ORDER BY IF

排序時將某列中特定值排在最前,例如在如下排序中要把 aa 放在最前面:

mysql> SELECT title FROM tbl_4 ORDER BY IF(title = \‘aa\‘, 0, 1), title;+-------+| title |+-------+| aa    || AA    || 11    || 22    || 33    || bb    || BB    || cc    || CC    |+-------+9 rows in set (0.00 sec)
prompt

有很多 MySQL 資料庫管理,有時會發生自己忘記了在那台伺服器的資料庫上,使用 prompt 來重寫mysql用戶端提示符。

mysql>prompt \\[email protected]\\h(\\d) \\r:\\m:\\s>
  • \\u 串連使用者
  • \\h 串連主機
  • \\d 串連資料庫
  • \\r:\\m:\\s: 顯示目前時間

有一一勞永逸的方法,就是在 my.cnf 中直接配置

#不是[mysqld][mysql]prompt=\\\\[email protected]\\\\d \\\\R:\\\\m>
pager

如果 SELECT 出來的結果集超過幾個螢幕,那麼前面的結果無法看到。使用 pager 可以設定調用 os 的 more 或者 less 顯示查詢結果,和在 OS 中使用 more 或者 less 查看大檔案的效果一樣。

mysql> pager morePAGER set to \‘more\‘mysql> \\P morePAGER set to \‘more\‘mysql> pager lessPAGER set to \‘less\‘mysql> \\P lessPAGER set to \‘less\‘mysql> nopagerPAGER set to stdout
DELIMITER

DELIMITER 就是告訴 MySQL 解譯器,命令的結束符是什麼。

預設情況下 MySQL 命令結束是以分號(;),在寫過程或者函數等情況下,這會產生不少問題,因為預存程序中有許多語句,所以每一個都需要一個分號。因此你需要選擇一個不太可能出現在你的語句或程式中的字串作為分隔字元。

[email protected](test) 03:27:17>DELIMITER $

[email protected](test) 03:27:24>SELECT * FROM tbl_4$

+―-+――-+

| id | title |

+―-+――-+

| 1 | 11 |

| 2 | 22 |

| 3 | 33 |

| 4 | aa |

| 5 | bb |

| 6 | cc |

| 7 | AA |

| 8 | BB |

| 9 | CC |

+―-+――-+

9 rows in set (0.00 sec)

LOAD DATA LOCAL INFILE
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE \‘file_name.txt\‘
LOAD DATA INFILE and LOAD DATA LOCAL INFILE

在資料庫中,LOAD DATA INFILE 和 LOAD DATA LOCAL INFILE都可以匯入本地的資料,而 MySQL5.0 版本預設支援上述模式

mysql> LOAD DATA INFILE ‘test.sql’ INTO TABLE test;mysql> LOAD DATA LOCAL INFILE ‘test.sql’ INTO TABLE test;

啟動mysql 加參數可限制使用 LOAD DATA LOCAL INFILE

[email protected]:/usr/local/mysql/bin/mysqld_safe --local-infile=0 &

mysql> LOAD DATA INFILE ‘test.sql’ INTO TABLE test;

ERROR 1148 (42000): The used command is not allowed with this MySQL version

而對於對於LOAD DATA INFILE, 可由user的 File_priv 對伺服器主機上的檔案訪問進行控制

MySQL 提示符下運行應用程式
mysql>\\! cd /home
  • 本文來自:Linux教程網

MySQL 應用小筆記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.