MySQL-列的類型定義-整形&浮點型

如同編程中的變量一樣,數據庫的列 也有對應的類型。話不多說直接開幹

一.整形類型

整數類型是數據庫中最基本的數據類型。標準SQL中支持INTEGER和SMALLINT這兩種數據類型。MySQL數據庫除了支持這兩種類型以外,還擴展支持了TINYINT、MEDIUMINT和BIGINT。下表從不同整數類型的字節數、取值範圍等方面進行對比。

mysql> use school;   #選擇數據庫school

mysql> create table class5(class_id int , class_name varchar(128), class_teacher varchar(64) );         #創建表class5

寫成小寫 也沒有關係

整數類型的附帶屬性

1.類型名稱後面的小括號   指定顯示寬度(並不是該類型佔用字節數)。如果不顯示指定寬度則默認爲tinyint(3)、 smallint(5)、 mediumint(8)、 int(11) 和 bigint(20)。一般配合 zerofill 使用,顧名思義,zerofill 就是用“0”填充的意思,也就是在數字位數不夠的空間用字符“0”填滿。

mysql> use school;   #選擇數據庫school

mysql> create table class6(class_id integer(5) zerofill, class_name varchar(128), class_teacher varchar(64) );         #創建表class6

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

mysql> use school;   #選擇數據庫school

mysql> create table class6(id integer unsigned , name varchar(128), teacher varchar(64) );         #創建表class6

mysql> create table class7(id integer zerofill , name varchar(128), teacher varchar(64) );         #創建表class7, id類型爲 int unsigned

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

mysql> use school;   #選擇數據庫school

mysql> create table class8(id integer auto_increment PRIMARY KEY , name varchar(128), teacher varchar(64) );         #創建表class8, id 具有自增長屬性

mysql> create table class9(id integer auto_increment UNIQUE , name varchar(128), teacher varchar(64) );         #創建表class9, id 具有自增長屬性

 

二.浮點類型

數據表中用浮點數類型和定點數類型來表示小數。浮點數類型包括單精度浮點數(FLOAT型)和雙精度浮點數(DOUBLE型)。定點數類型就是DECIMAL型。下面從這三種類型的字節數、取值範圍等方面進行對比,如表所示。

三種類型的區別:

  • float數值類型用於表示單精度浮點數值,而double數值類型用於表示雙精度浮點數值,float和double都是浮點型,而decimal是定點型;

mysql> use school;   #選擇數據庫school

mysql> create table class10 (f1 float, do1 double, de1 decimal);  #創建表class10

  • MySQL 浮點型和定點型可以用類型名稱後加(M,D)來表示,M表示該值的總共長度,D表示小數點後面的長度,M和D又稱爲精度和標度,如float(7,4)的 可顯示爲-999.9999,MySQL保存值時進行四捨五入,如果插入999.00009,則結果爲999.0001。對於decimal,M是最大位數(精度),範圍是1到65。可不指定,默認值是10。D是小數點右邊的位數(小數位)。範圍是0到30,並且不能大於M,可不指定,默認值是0。
  • FLOAT和DOUBLE在不指定精度時,默認會按照實際的精度來顯示,而DECIMAL在不指定精度時,默認整數爲10,小數爲0,即(10, 0)
  • 忠告: 當我們需要存儲小數,並且有精度要求,比如存儲金額時,通常會考慮使用DECIMAL字段類型!!!

更多的關於數據庫學習我會在下面的文章中陸續的分享,也可以關注‘奇牛學院’

來一起討論

 

 

 

 

 

 

 

 

 

 

 

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