MySQL基礎之資料型別和運算子
早些年學習MySQL的筆記,發在部落格園上,以便後續回顧學習:
1. 資料型別為int(11),注意到後面的數字11,這表示的是該資料型別指定的顯示寬度,指定能夠顯示的數值中數字的個數。其他資料型別也可以在定義表結構的時候指定所需要的顯示寬度,如果不指定,則系統為每一種型別指定預設的寬度。
2. MySQL使用浮點數和定點數表示小數。單精度浮點型別有兩種:單精度浮點型(float)和雙精度浮點型(double)。定點型別只有一種:decimal。浮點型別和定點型別都可以用(M,N)來表示,其中M稱為進度,表示總共的位數;N稱為標度,表示的是小數的位數。
3. 不論是定點還是浮點型別,如果使用者指定的進度超出了進度範圍,這回四捨五入進行處理。
4. 浮點數相對於定點數的有點是在長度一定的情況下,浮點數能夠表示更大的資料範圍,它的缺點是會引起進度問題。
5. MySQL中,定點數以字串的形式儲存,在對進度要求比較高的時候(比如貨幣和科學計算)使用decimal的型別比較好,另外兩個浮點數進行減法和比較運算時也容易出現問題,所以在使用浮點型時需要注意,盡避免做浮點數比較。
6. 儲存為YEAR型別時,既可以傳入整型,也可以傳入字元型。若是插入超過了YEAR型別的取值範圍,值將被轉換為2000。
7. 儲存為TIME型別時,如果不合法,儲存時將變為00:00:00。
8. 可以使用字串型別或者數字型別的資料插入DATE型別資料,只要符合DATE的日期格式即可。
9. MySQL允許“不嚴格”的語法:任何標點符號都可以用作日期部分之間的間隔符。例如“98-10-19”、“98.10.18”、“98/10/19”和“98@10@19@”都是等價的,這些字也是可以正確的插入到資料庫的。
10. 插入DATETIME型別資料時,可以使用字串型別和數字型別的資料插入,只要符合DATETIME的日期格式即可。例如:“YYYY-MM-DD HH:MM:SS”、“YYYYMMDDHHMMSS”、或者用數字YYYYMMDDHHMMSS、YYMMDDHHMMSS表示均可。
11. MySQL允許“不嚴格”語法:任何標點符號都可以用作日期部分或者時間部分之間的間隔,例如:“98-10-19 12:12:12”、“98.10.19 12+12+12”、“98@10@9 12*12*12”、“98#10#19 12:12:12”都是等效且被允許的。
12. 字串型別用來儲存字串資料,除了可以儲存字串資料外,還可以儲存其他資料,比如圖片、聲音的二進位制資料。
13. MySQL至此兩類字元型資料:文字字串和二進位制字串。
14. VARCHAR、TEXT、BLOB都是變長型別,對於其儲存需求取決於列值得實際長度,而不是取決於型別的最大可能長度。例如,一個VARCHAR(10)能儲存最大長度為10個字元的一個字串,實際的儲存需要字串實際長度L加上一個位元組(用於記錄字串的長度)。對於字串“abcd”,L是4,而儲存需要5個位元組。
15. CHAR(M)為固定長度的字串,在定義時指定字串長度。當儲存時在右側填充空格到指定的長度。M表示列長度,M的範圍是0~255個字元。當檢索到CHAR值時,尾部的空格將被刪除。
16. VARCHAR(M)是可變長的字串,M表示最大列長度。M的範圍是0~65535.VARCHAR在只儲存和檢索時尾部的空格人保留。
17. 等於運算子(=)不能用於null的判斷,但是安全等於運算子(<=>)可以。
18. 用LIKE匹配字元時:
“%”匹配任何數目的字元,甚至包括零字元
“_”只能匹配一個字元。
19. 如果想刪除表中所有記錄,除了使用DELETE FROM 表名 表名 的方式之外,還可以使用TRUNCATETABLE語句,TRUNCATE將直接刪除原來的表,並重新建立一個新的表。TRUNCATE直接說刪除表而不是刪除記錄,因此執行速度比DELETE快。