常見MYSQL技巧

2021-07-05 23:32:18 字數 3092 閱讀 1367

mysql利用regexp命令提供給使用者擴充套件的正規表示式功能,具體模式序列如下:

序列序列說明

序列序列說明

^在字串的開始處進行匹配

a?匹配1個或零個a

$在字串的末尾處進行匹配

a1|a2

匹配a1或a2

.匹配任意單個字元,包括換行符

a(m)

匹配m個a

[…]匹配出括號內德任意字元

a(m,)

匹配至少m個a

[^…]

匹配不出現括號內的任意字元

a(m,n)

匹配m到n個a

a*匹配零個或多個a(包括空串)

a(,n)

匹配0到n個a

a+匹配1個或多個(不包括空串)

(…)將模式元素組成單一元素

使用正規表示式」$」和」[…]」進行匹配:

mysql>select name,email from t where email regexp

「@163[.,]com$」

使用like方式查詢:

mysql>select name,email from t where email like 「%@163.com」 

or email like 「%@163,com」

mysql資料庫中有乙個隨機函式rand( )是獲取乙個0—1之間的數,利用這個函式一起和order by能夠把資料隨機排序。

mysql>select * from stu order by rand( );

下面是通過limit隨機抽取了3條資料樣本。

mysql>select * from stu order by rand( ) limit 3;

使用group by的with rollup子句可以檢索出更多的分組聚合資訊

mysql> select * from demo;

+-------+-------+

| cname | pname |

+-------+-------+

| bj    | hd    |

| bj    | hd    |

| bj    | xc    |

| bj    | xc    |

| bj    | hd    |

| sh    | dh    |

| sh    | dh    |

| sh    | rg    |

| sh    | dh    |

+-------+-------+

9 rows in set (0.00 sec)

mysql> select cname,pname,count(pname) from demo group by cname,pname;

+-------+-------+--------------+

| cname | pname | count(pname) |

+-------+-------+--------------+

| bj    | hd    |            3 |

| bj    | xc    |            2 |

| sh    | dh    |            3 |

| sh    | rg    |            1 |

+-------+-------+--------------+

4 rows in set (0.00 sec)

同樣使用with rollup關鍵字後,統計出更多的資訊,如下。注意: with rollup不可以和ordery by同時使用

mysql> select cname,pname,count(pname) from demo group by cname,pname with rollup;

+-------+-------+--------------+

| cname | pname | count(pname) |

+-------+-------+--------------+

| bj    | hd    |            3 |

| bj    | xc    |            2 |

| bj    | null  |            5 |

| sh    | dh    |            3 |

| sh    | rg    |            1 |

| sh    | null  |            4 |

| null  | null  |            9 |

+-------+-------+--------------+

7 rows in set (0.00 sec)

在使用group by語句時可以同時用使用bit_and、bit_or函式來完成統計工作。這兩個函式的作用主要是做數值之間的邏輯位運算

mysql>select id,bit_or(kind) from order_rab group by id

對order_rab表中id分組時對kind做位與和或計算

mysql>select id,bit_and(kind) from order_rab group by id

建立外來鍵的方式如下

mysql>create table temp( id int, name char(20), foreign key(id) references outtable(id) on delete cascade on update cascade);

注意:innodb型別的表支援外來鍵,myisam型別的表,雖然建立外來鍵可以成功,但是不起作用,主要原因是不支援外來鍵。

在mysql中那麼多的命令如何才能記得住是個問題,這裡有乙個特別好的獲得幫助的好方法,當然是在mysql>的提示下的操作:

1.? %   可以獲得所有的mysql>裡的命令,這個是最多的,那麼這裡的東西如何去進一步獲得幫助呢?

2.? create

3.? opti% 因為記不住optimize的全稱,這個時候可以用%來替代

4.? reg% 獲得了記不住了的regexp用法.

5.檢視所有用? contents可以得到所有的幫助大綱,通過這個目錄再用?繼續往下細查.

Mysql常見優化技巧

mysql基礎打牢以後,優化就是一大難題。如何優化資料庫呢?這也是面試常見的問題,除了新增索引以外,我們還需要從這些方面考慮 1 sql語句和索引 程式猿常常考慮的難題 2 資料庫表結構 資料結構設計 3 系統配置 4 硬體 硬體和系統配置不做介紹,先簡單介紹一下mysql常見效能優化技巧 mysq...

mysql 常見技巧hack彙總

mysql常見技巧hack彙總,包括開發和運維,具體如下 1 檢視mysql配置檔案路徑 my.cnf等 mysql預設配置檔案為my.cnf,如果不是預設配置檔案,則檢視mysql 程序資訊時會帶出配置檔案路徑,所以檢視配置檔案路徑步驟為 1 ps ef grep mysql 檢視輸出資訊裡有無配...

mysql技巧 MySQL技巧

一 儲存引擎 儲存引擎是mysql資料庫的核心 心臟 發動機,它決定了資料如何儲存,查詢的時候如何搜尋資料,索引如何建立等等 是對於資料庫檔案的一種訪問機制,如何實現儲存資料,如何為儲存的資料建立索引以及如何更新,查詢資料等技術實現的方法。常用儲存引擎 innodb 1.事務處理 回滾 崩潰修復能力...