在MySQL中執行SQL語句時的幾個注意點

來源:互聯網
上載者:User

在執行尋找命令時的大小寫問題

預設情況下,MySQL在執行尋找時不區分字母的大小寫。當你在尋找時使用like 'a%'時, 預設將返回以a或者A開頭的所有列值,若要在尋找時區分大小寫,則需要使用collate運算子來實現,具體例子如下:

col_name COLLATE latin1_general_cs LIKE 'a%'
col_name LIKE 'a%' COLLATE latin1_general_cs
col_name COLLATE latin1_bin LIKE 'a%'
col_name LIKE 'a%' COLLATE latin1_bin

如果想讓某列在尋找時始終保持區分字母大小寫,則需要用case sensitive或binary collation來定義列的特性。

當進行簡單比較運算,如>=, >, =, <, <=, sorting, and grouping的時候,將依從字元的內在順序值,例如‘E’, ‘e’, and ‘é’這些字元有相同的內在順序值。

和空值NULL相關的問題

空值的概念比較容易混淆,有人認為空白值NULL和空 字元''是一會時,其實這樣認為是錯誤的,舉例來說,

mysql> INSERT INTO my_table (phone) VALUES (NULL);
mysql> INSERT INTO my_table (phone) VALUES ('');

上面兩條語句有完全不同的意義和結果。第一句表示,向表中插入的記錄中的某人的電話號碼NULL,意思是還不知道這 條記錄中的人的電話號碼,而第二句向表中插入''Null 字元,就意味著已經知道表中這條記錄中的人的電話號碼,這個電話號碼 是'',也可以確定此人沒有正常的電話號碼。

協助處理空值NULL的方法,主要通過執行is null運算判斷,is not null運算 判斷,和IFNULL()函數運算來實現。在SQL中,任何與NULL發生運算關係的結果都不可能為真(即永遠是假)。為了尋找NULL值 ,必須執行is null測試運算。

可以在MyISAM, InnoDB, BDB或MEMORY等儲存類型的表列中含有空值時添加index,但該 index必須聲明成not null,這樣之後將不可以往該列中輸入空值。

當使用load data infile語句載入資料時,空值NULL將 被替換成''。使用DISTINCT, GROUP BY, 或ORDER BY時所有空值將被視為等同。像COUNT(), MIN(), SUM()等概要總結函數將忽略空值NULL。

但對一些特殊類型的列來說,比如timestamp類型和具有auto_increment屬性的列:前者插入NULL是實際將插入目前時間值,向後者插入NULL時將是下個正整數序列。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.