首頁>技術>

在MySQL中資料型別有以下五種:

數字

整數:常用的有2種,一是int型,int型最多可以表示10位數字(無符合的4開頭,有符合的2開頭;二是tinyint unsigned,用來表示年齡(值範圍是0-255)。

小數:注意float(m,n)表示法中的m表示數字總共有m位,n表示小數有n位,那麼整數部分只能有m-n位。float預設保留5位小數、double預設保留16位小數、decimal預設是10位數字不含小數(它的最大範圍是65位數字,其中小數可以保留30位)。

時間

表示時間值的日期和時間型別為DATETIME、DATE、TIMESTAMP、TIME和YEAR。

每個時間型別有一個有效值範圍和一個"零"值,當指定不合法的MySQL不能表示的值時使用"零"值。

時間型別可以增加限定屬性:

not null 非空

default current_timestamp 預設時間為當前時間

on update current_timestamp 更新資料時自動更新當前時間

date:用來記錄各種日期,如出生日期、入職日期等關注日期而不關注時間的等資訊。

time:用來記錄時間安排(課程表、日程表)的資訊、時長的等資訊。

datetime:使用者登入時間等

字串

以上型別中char和varchar型別用得最多。

char型別為定長字元型,長度固定為宣告的長度,範圍是0-255字元數(注意不是位元組數!使用utf8編碼中文會佔3個位元組,也就是說255箇中文字元實際上會佔用765位元組)。儲存時資料長度不夠宣告的長度時末尾會被填充空格,取值時會捨棄末尾的空格部分,資料超過宣告長度的部分會被捨棄。適合使用char型別的如身份證號、手機號、qq號、使用者名稱、密碼、銀行卡號等。

varchar型別為不定長字元型,長度不固定但最長不能超過宣告的長度,範圍是0-65535字元數。儲存時資料長度不夠宣告的長度時不會填充空格,資料最後會附加2個位元組的長度資訊,資料超過宣告長度的部分會被捨棄。適合使用varchar型別的如評論、朋友圈、微博等。

char型別優點是檢索速度快,缺點是浪費儲存空間;varchar型別優點是節省儲存空間,缺點是檢索速度慢。由於現在儲存空間不再是瓶頸,所以在強調檢索速度的場景優先使用char,只有在不確定字串長度又不強調檢索速度的場景才使用varchar。

enum單選

案例:

在下面的sql語句中建立了test表,它的gender欄位約束了資料只能是’male’或’female’。

create table test(id int,name char(18),gender enum('male','female'));

如果該欄位輸其它內容會報錯並導致整條資料不能存入資料庫。如下面這條語句就會報錯且資料不會儲存到資料庫。

insert into test values(1,'mike','不詳');

只有輸入正確的選項資料才能存入資料庫。

insert into test values(1,'mike','male');
set多選

案例:

在下面的sql語句中建立了test表,它的hobby欄位約束了資料只能從列表中選擇’。

create table test(id int,name char(18),hobby set('抽菸','喝酒','燙頭','洗腳'));

如果該欄位輸其它內容會報錯並導致整條資料不能存入資料庫。如下面這條語句就會報錯且資料不會儲存到資料庫。

insert into test values (1,'mike','燙頭,喝酒,抽菸,按摩’);

只有輸入正確的選項資料才能存入資料庫。

insert into test values (1,'mike','燙頭,喝酒,抽菸');

注意上述多選中整個選項作為一個字串且選項之間用英文逗號隔開。

13
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • JS常用獲取時間的方式彙總