MySQL的資料型別

bitifi發表於2015-10-17
學習下資料型別~
1、日期型別

點選(此處)摺疊或開啟

  1. MySQL資料型別 含義
  2. date         3位元組, 日期,       格式:2014-09-18
  3. time         3位元組, 時間,       格式:08:42:30
  4. datetime     8位元組, 日期和時間, 格式:2014-09-18 08:42:30
  5. timestamp    4位元組, 自動儲存記錄修改的時間
  6. year         1位元組, 年份
2、數值整型
Mysql支援所有標準SQL中的數值型別,其中包括嚴格資料型別(INTEGER,SMALLINT,DECIMAL,NUMBERIC),以及近似數值資料型別(FLOAT,REAL,DOUBLE PRESISION),並在此基礎上進行擴充套件。
擴充套件後增加了TINYINT,MEDIUMINT,BIGINT這3種長度不同的整形,並增加了BIT型別,用來存放位資料。

點選(此處)摺疊或開啟

  1. MySQL資料型別 含義(有符號)
  2. tinyint      1位元組,範圍(-128~127)
  3. smallint     2位元組,範圍(-32768~32767)
  4. mediumint    3位元組,範圍(-8388608~8388607)
  5. int          4位元組,範圍(-2147483648~2147483647)
  6. bigint       8位元組,範圍(+-9.22*10的18次方)
上面定義的都是有符號的,當然了,也可以加上unsigned關鍵字,定義成無符號的型別,那麼對應的取值範圍就要翻倍了,比如:
tinyint unsigned的取值範圍為0~255。

點選(此處)摺疊或開啟

  1. CREATE TABLE test123 (id TINYINT UNSIGNED PRIMARY KEY AUTO_INCREMENT) ENGINE=INNODB
INSERT INTO test123 VALUES(-10);
1 queries executed, 0 success, 1 errors, 0 warnings

查詢:insert into test123 values(-10)
錯誤程式碼: 1264
Out of range value for column 'id' at row 1
3、數值浮點型

點選(此處)摺疊或開啟

  1. MySQL資料型別 含義
  2. float(m, d)      4位元組,單精度浮點型,m總個數,d小數位
  3. double(m, d)     8位元組,雙精度浮點型,m總個數,d小數位
  4. decimal(m, d)    decimal是儲存為字串的浮點數
CREATE TABLE test123 (id FLOAT(5,3)  PRIMARY KEY AUTO_INCREMENT) ENGINE=INNODB;
INSERT INTO test123 VALUES(12.7);
INSERT INTO test123 VALUES(12.7333);
INSERT INTO test123 VALUES(13.777);
查詢的結果為如下:當然插入123.4是插不進去的!當然unsigned只是去掉了負數部分,加上這個關鍵字插入的範圍減半~
    id  
--------
  12.700
  12.733
  13.777
4、字串型別

點選(此處)摺疊或開啟

  1. MySQL資料型別 含義
  2. char(n)     固定長度,最多255個字元
  3. varchar(n)  可變長度,最多65535個字元
  4. tinytext    可變長度,最多255個字元
  5. text        可變長度,最多65535個字元
  6. mediumtext  可變長度,最多2的24次方-1個字元
  7. longtext    可變長度,最多2的32次方-1個字元
1.char(n)和varchar(n)中括號中n代表字元的個數,並不代表位元組個數,所以當使用了中文的時候(UTF8)意味著可以插入m箇中文,但是實際會佔用m*3個位元組。
CREATE TABLE test123 (id CHAR(5) PRIMARY KEY ) ENGINE=INNODB CHARSET=utf8; 這裡不能新增自增主鍵,字元無法自增額INSERT INTO test123 VALUES('我');
INSERT INTO test123 VALUES('我的');
INSERT INTO test123 VALUES('我的蛋');
INSERT INTO test123 VALUES('我的蛋蛋');
INSERT INTO test123 VALUES('我的蛋蛋大');
INSERT INTO test123 VALUES('我的蛋蛋大啊'); --這個不能插入,因為最多5個字元,UTF8的字符集試試就知道了
INSERT INTO test123 VALUES('abcde');
INSERT INTO test123 VALUES('abcdef');  --這個不能插入,因為最多5個字元

2.同時char和varchar最大的區別就在於char不管實際value都會佔用n個字元的空間,而varchar只會佔用實際字元應該佔用的空間+1,並且實際空間+1<=n。VARCHAR 型別可以根據實際內容動態改變儲存值的長度,所以在不能確定欄位需要多少字元時使用 VARCHAR 型別可以大大地節約磁碟空間、提高儲存效率。
3.超過char和varchar的n設定後,字串會被截斷。
4.char的上限為255位元組,varchar的上限65535位元組,text的上限為65535。
5.char在儲存的時候會截斷尾部的空格,varchar和text不會。
6.varchar會使用1-3個位元組來儲存長度,text不會。
其他型別
1.enum(“member1″, “member2″, … “member65535″)
 enum資料型別就是定義了一種列舉,最多包含65535個不同的成員。當定義了一個enum的列時,該列的值限制為列定義中宣告的值。如果列宣告包含NULL屬性,則NULL將被認為是一個有效值,並且是預設值。如果宣告瞭NOT NULL,則列表的第一個成員是預設值。


2.set(“member”, “member2″, … “member64″)
 set資料型別為指定一組預定義值中的零個或多個值提供了一種方法,這組值最多包括64個成員。值的選擇限制為列定義中宣告的值。




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30496894/viewspace-1814622/,如需轉載,請註明出處,否則將追究法律責任。

相關文章