1. 程式人生 > >006-mysql 一些小技巧

006-mysql 一些小技巧

mysql 一些小技巧

1、字串連線

1)concat(str1,str2,…):返回結果為連線引數產生的字串。      注意:如果其中一個引數為 null,則整個返回結果為 null。

SELECT CONCAT(‘tom’,‘cat’) as name 結果:tomcat SELECT CONCAT(‘tom’,‘cat’,null) as name 結果:null

2)concat_ws(separator,str1,str2,…):第一個引數是分隔符,返回結果是用分隔符分隔連線所有引數產生的字串。      注意:如果分隔符為 null,則整個返回結果為 null,其他引數為 null 時,結果中會忽略該引數。

》SELECT CONCAT_ws(’=’,‘tom’,‘cat’) as name 結果:tom=cat 》SELECT CONCAT_ws(’’,‘tom’,‘cat’) as name 結果:tomcat 》SELECT CONCAT_ws(null,‘tom’,‘cat’) as name 結果:null 》SELECT CONCAT_ws(’=’,‘tom’,null,‘kitty’) as name 結果:tom=kitty

3)group_concat(col,separator):按分組連線欄位值。預設按逗號分隔。

SELECT name,group_concat(id) ids FROM user group by name; SELECT name,group_concat(id separator ‘;’) ids FROM user group by name;

2、length 和 char_length

length(col):欄位的大小(位元組數)。 char_length(col):欄位值的長度(字元個數)。

3、select 直接列印

select ‘tomcat’; select ‘tomcat’ as name; SELECT now();

4、mysql 中的加號(+)

mysql 中的加號只有一個作用,就是算術運算子。 1)加號運算子執行前,會試圖將不是數值的轉換成數值,如果不能直接轉換,則被轉換的物件直接使用 0 代替。 如:select ‘tom’ + 3; 結果為:3 2)如果加號連線的一方為 null,則整個運算的結果也為 null。 如:select null + 5; 結果為:null

5、escape 轉義

在 like 語句中,%(任意個字元) 和 _(單個字元)是萬用字元。 下面有這樣一個場景: 如果在查詢欄位中包含 % 或 _,而查詢條件需要使用 % 或 _ 去作為匹配條件,而不是作為萬用字元使用,則這時需要將 % 和 _ 進行轉義。

# 法一:使用斜槓 \ 進行轉義
select name from user where like '\%kit%';
# 結果為:%kitty

# 法二:使用 escape 指定轉義符
select name from user where like '$%kit%' escape '$';
# 這裡 $ 就作為轉義(可以為任何字元,不僅僅是$,如 a)。
select name from user where like 'a%kit%' escape 'a';

6、between … and …

包含邊界值。

7、索引起始值

所有 sql 中,索引值都是從 1 開始的。

8、資料匯入匯出

命令匯出 mysqldump -uroot -p123456 dbname tablename > test.sql 命令匯入 mysql -uroot -p123456 dbname < test.sql 【xtrabackup 效能更高】

9、sql 優化

定位: 1)檢視日誌(通過 show variables like ‘%slow%’ 找到日誌) 2)explain sql語句 3)profile 【注意】 測試 sql 速度,應先關閉 sql 快取。