MySQL 字串資料型別

2021-08-15 01:09:32 字數 3069 閱讀 1256

char & varchar

區別:

- char 是一種長度固定的型別;varchar 是一種長度可變的型別

- 從 char 列檢索出來的值,其尾部空格會被移除。對於 char(m)列,如果其值的長度小於 m 個字元,那麼在存入時會用空格將長度補齊。如果啟用 sql 的pad_char_to_full_length模式,那麼在檢索char 列值時就可以保留尾部空格

- 對於varchar列,其尾部空格儲存檢索時都會被保留

注意:char(0) 是合法的,僅乙個二進位制位。兩種取值:null空串

如何選擇?以下兩條通用原則:

- 如果所有值的長度固定,選用char。因為varchar需要用額外的位元組來記錄值的長度。反之長度不固定,則選用varchar節省空格占用的空間,因為 char 會用空格補齊。

- 如果使用的是myisam表,並且各個值的長度差別不大,那麼選用cahr更好些。因為myisam 儲存引擎固定長度行的處理效率高

binary & varbinary

這兩種型別與 char 和 varchar 相似,但有以下區別:

-charvarchar都是用於儲存字元的非二進位制型別,並且都有字符集和排序規則

- binary 和 varbinary 都是用於儲存位元組的二進位制型別,它們沒有字符集和排序規則。

對於binary(m),固定長度m,會用0x00位元組進行補齊,檢索時,不會去除任何內容

對於varbinary,在儲存值時,不會補齊檢索時,也不會去除任何內容

blob & text

blob二進位製大物件,乙個能夠存放任何內容的容器,多達 4g。儲存的是二進位制串,比如:壓縮資料、加密資料、影象和聲音。

text:與 blob 有很多相似之處,但其儲存的是非二進位制串,如字元

blob 和 text 列能否被索引,具體取決於所使用的儲存引擎

- 儲存引擎innodbmyisam支援對 blob 和 text 列進行索引,但必須指定乙個字首長度。除了fulltext 索引不會使用那個字首長度。

- memory 引擎不支援 blob 和 text 列。

使用注意:

- 由於兩者在長度方面的差異很大,因此在多次刪除修改之後,表裡容易產生大量碎片。如果使用myisam 表來儲存 blob 和 text 值,那麼定期執行optimize table 命令可以減少碎片和改善系統效能

- max_sort_length 系統變數,有必要時,可以調大。

enum & set

它們只能從乙個固定的字串列表裡取值。

主要區別:enum列值必須包含只能包含乙個值列表成員(可以為空);而set列值則允許包含任意多個值列表成員。

-enum單選字串資料型別,適用於儲存單選值,而set多選字串資料型別,適用於儲存多選值

- mysql從 1 開始依次對enum列定義的成員進行順序編號;而set成員並沒有按順序編號,而被儲存為二進位制位值

如何字串資料型別?

資料型別 字串

一字串 定義 它是乙個有序的字元的集合,用於儲存和表示基本的文字資訊 或 中間包含的內容稱之為字串 特性 1只能存放乙個值 2不可變 3按照從左到右的順序定義字元集合,下表從0開始順序訪問,有序 字串的常用操作 移除空白 strip 首字母大寫.capitalize 所有大寫 upper 統計字元長...

Python資料型別 字串型別

變數名 str 變數值 msg hello world print msg 0 print msg 1 msg hello n print len msg msg hello world print ello in msg print lo w not in msg res print hello ...

資料型別 字串型別 string

1 字串 數字,都會轉為字串來儲存 2 以二進位制的方式儲存在記憶體中 必須掌握的命令 1.設定乙個key value set key value 2.獲取key的值 get key 3.key不存在時再進行設定 nx set key value nx 4.設定過期時間 ex 過了日期就自動銷毀ex...