【MySQL數據類型3之--字符類型】

MySQ字符類型大致可以分成(MySQL 5.0)

CHAR(M)0-255字節

VARCHAR(M)0-65535字節

TINYBLOBMEDIUMBLOBBLOBLONGBLOB(實際長度分別+1,3,2,4)

TINYTEXTMEDIUMTEXTTEXTLONGTEXT(實際長度分別+1,3,2,4)

BINARY(M):0-M字節

VARBINARY(M):實際長度+1

 

MySQL其他類型大致可以分成(MySQL 5.0)

ENUM(枚舉類型):1~65535個成員 12個字節

SET1--8字節

詳細範圍可以參考幫助手冊

 

1.CHAR、VARCHAR、XXXTEXT

 create table test4(c1 char(7),varchar(7));

insert test4 values(' a ',' a ');

mysql> select length(c1),length(c2),concat(c1,'yes'),concat(c2,'yes')

    -> from test4;

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

| length(c1) | length(c2) | concat(c1,'yes') | concat(c2,'yes') |

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

|          2 |          3 |  ayes            |  a yes           |

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

可以很明顯看出,char類型和varchar類型的前空格在檢索時不會被省略,但是尾部空格就不一樣了,char類型尾部空格是忽略的,varchar類型則反之;

至於varcharTEXT是完全一樣的(以前的版本的是和TINYTEXT版本一樣),唯一的區別在於TEXT的上限是確定的,不需要特定區設置一個寬度,但是varchar類型需要自己設定。

 

 

2..xxxBLOB BINARY(M) VARBINARY(M):

  它們的都是存儲二進制字符串的字段類型。他們與文本的區別是排序是按照二進制編碼進行的,使得排序更加準確。

 

3.ENUM

 mysql> create table test5(en enum('A','B'));

mysql> insert test5 select 'a';

mysql> insert test5 select null;

mysql> select * from test5;

+------+

| en   |

+------+

| A    |

| NULL |

+------+

mysql> insert test5 select 'c';

mysql> show warnings;

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

| Level | Code | Message                                 |

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

| Error | 1265 | Data truncated for column 'en' at row 1 |

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

在我的5.1測試版本上 插入的值如果有必要,會轉化成大寫;再插入枚舉列表以外的值,出錯;在5.0中,插入枚舉列表以外的值,自動轉化成枚舉列表的第一個值;

 

4.SET類型

mysql> create table test6(col SET('1','2','3','a','6'));

mysql> insert test6 values('1,2'),('1,2,3,a'),('1,1,2,2,3,3');

mysql> select * from test6;

+---------+

| col     |

+---------+

| 1,2     |

| 1,2,3,a |

| 1,2,3   |

+---------+

mysql> insert test6 select 'ak47';

mysql> show warnings;

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

| Level | Code | Message                                  |

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

| Error | 1265 | Data truncated for column 'col' at row 1 |

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

可以插入任意組合的值,當輸入重複的枚舉值的時候會自動去重;當插入不存在的組合時候,報錯;

                                          

                                                         參考文獻:深入淺出MySQL(網易)

                                 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章