MySQL數據類型及后面小括號的意義


參考from:

MySQL數據類型及后面小括號的意義

1,數值類型

  1.1數值類型的種類

  標准 SQL 中的數值類型,包括嚴格數值類型(INTEGER、SMALLINT、DECIMAL、NUMERIC),以及近似數值數據類型(FLOAT、REAL、DOUBLE PRECISION)。

  MySQL在此基礎上又擴展了TINYINT、MEDIUMINT 和 BIGINT 這 3 種長度不同的整型,並增加了 BIT 類型,用來存放位數據。

  對於小數的表示,MySQL 分為兩種方式:浮點數和定點數。浮點數包括 float(單精度)和 double(雙精度),而定點數則只有 decimal 一種表示。定點數在 MySQL 內部以字符串形式存放,比浮點數更精確,適合用來表示貨幣等精度高的數據。 

  浮點數和定點數都可以用類型名稱后加“(M,D)”的方式來進行表示,“(M,D)”表示該值一共顯示 M 位數字(整數位+小數位),其中 D 位位於小數點后面,M 和 D 又稱為精度和標度。例如,定義為 float(7,4)的一個列可以顯示為-999.9999。MySQL 保存值時進行四舍五入,因此如果在float(7,4)列內插入 999.00009,近似結果是 999.0001。 



    1.2數值類型的顯示寬度

  對於5種整數類型(tinyint、smallint、mediumint、int、bigint),MySQL 還支持在類型名稱后面的小括號內指定顯示寬度(並不是該類型占用字節數)。

  例如 int(5)表示當數值寬度小於 5 位的時候在數字前面填滿寬度,如果不顯示指定寬度則默認為 int(11)。一般配合 zerofill 使用,顧名思義,zerofill 就是用“0”填充的意思,也就是在數字位數不夠的空間用字符“0”填滿。以下幾個例子分別描述了填充前后的區別。

 (1)創建表 t1,有 id1 和 id2 兩個字段,指定其數值寬度分別為 int 和 int(5)。
        

(2)在 id1 和 id2 中都插入數值 1,可以發現格式沒有異常。
        

(3)分別修改 id1 和 id2 的字段類型,加入 zerofill 參數:
        

  設置了寬度限制后,如果插入大於寬度限制的值,會不會截斷或者插不進去報錯?答案是肯定的:不會對插入的數據有任何影響,還是按照類型的實際精度進行保存,這是,寬度格式實際已經沒有意義 。

        

    1.3數值類型的屬性

    (1)UNSIGNED(無符號) ,如果需要在字段里面保存非負數或者需要較大的上限值時,可以用此選項,它的取值范圍是正常值的下限取 0,上限取原值的 2 倍,例如,tinyint 有符號范圍是-128~+127,而無符號范圍是 0~255。如果一個列指定為 zerofill,則 MySQL 自動為該列添加 UNSIGNED 屬性。 

    (2)AUTO_INCREMENT ,在需要產生唯一標識符或順序值時,可利用此屬性,這個屬性只用於整數類型。AUTO_INCREMENT 值一般從 1 開始,每行增加 1。 一個表中最多只能有一個 AUTO_INCREMENT列 。對於任何想要使用 AUTO_INCREMENT 的列,應該定義為 NOT NULL,並定義為 PRIMARY KEY 或定義為 UNIQUE 鍵。 例如,可按下列任何一種方式定義 AUTO_INCREMENT 列: 

    

 

2,日期時間類型

  MySQL 5.0 中所支持的日期和時間類型

  • 如果要用來表示年月日,通常用 DATE 來表示。 
  • 如果要用來表示年月日時分秒,通常用 DATETIME 表示 。
  • 如果只用來表示時分秒,通常用 TIME 來表示 。
  • 如果需要經常插入或者更新日期為當前系統時間,則通常使用 TIMESTAMP 來表示。TIMESTAMP 值返回后顯示為“YYYY-MM-DD HH:MM:SS”格式的字符串,顯示寬度固定為 19 個字符。如果想要獲得數字值,應在 TIMESTAMP 列添加+0。 
  • 如果只是表示年份,可以用 YEAR 來表示,它比 DATE 占用更少的空間。YEAR 有 2 位或4 位格式的年。默認是 4 位格式。 

 3,字符串類型   

    

  CHAR 和 VARCHAR 很類似,都用來保存 MySQL 中較短的字符串。二者的主要區別在於存儲方式的不同:CHAR 列的長度固定為創建表時聲明的長度,長度可以為從 0~255 的任何值(即指定長度是4的話,存的字符串長度必須是4);而 VARCHAR 列中的值為可變長字符串,長度可以指定為 0~255 (5.0.3 以前)或者 65535 (5.0.3以后)之間的值(即指定長度是4的話,存的字符串長度最大是4,1、2、3、4都可以)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM