【MySQL資料型別3之--字元型別】
MySQ字元型別大致可以分成(MySQL 5.0):
CHAR(M):0-255位元組
VARCHAR(M):0-65535位元組
TINYBLOB、MEDIUMBLOB、BLOB、LONGBLOB(實際長度分別+1,3,2,4)
TINYTEXT、MEDIUMTEXT、TEXT、LONGTEXT(實際長度分別+1,3,2,4)
BINARY(M):0-M位元組
VARBINARY(M):實際長度+1
MySQL其他型別大致可以分成(MySQL 5.0):
ENUM(列舉型別):1~65535個成員 1—2個位元組
SET:1--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型別則反之;
至於varchar與TEXT是完全一樣的(以前的版本的是和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(網易)
相關文章
- Mysql 資料型別之整數型別MySQL 資料型別
- MySQL 字元型別MySql字元型別
- 【MySQL資料型別1之--數值型別】MySql資料型別
- MySQL基礎之----資料型別篇(常用資料型別)MySql資料型別
- [Mysql] 3.Mysql 資料型別MySQL 資料型別
- 【MySQL資料型別2之--日期時間型別】MySql資料型別
- MySQL字元資料型別char與varchar的區別MySql字元資料型別
- js資料型別之基本資料型別和引用資料型別JS資料型別
- MYSQL 資料型別MySQL 資料型別
- [Mysql]資料型別MySql資料型別
- MySQL資料型別MySql資料型別
- 3. php資料型別、資料型別轉換PHP資料型別
- Python之字元型別Python字元型別
- Mysql資料庫學習(二):資料型別(數值型別 日期和時間型別 字串型別)MySql資料庫資料型別字串
- mysql字元型別varchar()比較MySql字元型別
- MySQL 的資料型別MySql資料型別
- 理解MySQL資料型別MySql資料型別
- MySQL的資料型別MySql資料型別
- MySQL基本資料型別MySql資料型別
- js基本語法之 值型別(資料型別)(變數型別)JS資料型別變數
- java中泛型之型別萬用字元(?)Java泛型型別字元
- NumPy之:資料型別資料型別
- Hive之 資料型別Hive資料型別
- 【BBED】使用bbed修改字元型別資料字元型別
- 資料型別: 資料型別有哪些?資料型別
- PHP 資料型別之檢視和判斷資料型別PHP資料型別
- 高效能Mysql(第3版)_資料型別的選擇_整數型別MySql資料型別
- Java 資料型別和 MySql 資料型別對應一覽表JavaMySQL 資料型別
- MySQL資料型別DECIMAL用法MySql資料型別Decimal
- MySQL資料型別筆記MySql資料型別筆記
- mysql常見資料型別MySql資料型別
- mysql 常用的資料型別MySql資料型別
- MySQL入門--資料型別MySql資料型別
- mysql 資料型別TIMESTAMPMySQL 資料型別
- MySQL 資料型別詳解MySQL 資料型別
- 詳解MySQL資料型別MySql資料型別
- MySQL 資料型別 詳解MySQL 資料型別
- mysql資料型別小結MySql資料型別