1. 程式人生 > >MySQL中的常用基本資料型別

MySQL中的常用基本資料型別

MySQL中常用的資料型別:

varchar :

變長字串,使用時我們必須設定其長度,最大值”理論值”65535個,實際上最大隻能存65533個,但考慮到儲存的字元編碼的不同,也會有進一步的減少。比如:

  • 如果儲存從中文gbk,則最多是65533/2個;
  • 如果儲存中文utf-8,則最多儲存65533/3個

此型別的實際長度是儲存內容決定,而設定的值是最多可儲存的字元個數。

注意:這裡的儲存限制,其實都來源於一個表格的”一行”的資料儲存的最大容量顯示。

char :

定長字串,使用時需要設定其長度,如果不設定,預設是1,最大理論值是255個。

定長字串,適用於儲存的資料都是可遇見的明確的固定長度的字元,比如手機號,身份證號,但是在實際儲存的時候,如果少於設定的值,也可以儲存,但會使用空格填充空餘部分。

enum :

單選項字串資料型別。它非常適用於儲存表單介面中的”單選項值”,它設定的時候,需要給定”固定的幾個選項” 儲存的時候就只儲存其中的一個值。

形式如下:

enum("選項1","選項2","選項3"……)

實際內部:

這些字串的選項值對應的是如下的數字值:1、2、3、4、5……最多65535個選項

使用enum作為sex的資料型別:

 create table tab_test_enum (id int primary key auto_increment,name varchar(10),sex enum('boy','girl'));

向表中插入資料:

第一種方式:

 insert into tab_test_enum (name,sex)values('wangke','boy');

第二種方式:

 insert into tab_test_enum (name,sex)values('xiaohong',2);

注:由於在內部,每一個選項值都對應著一個數字,因此這裡我們可以直接插入數字。

當前表中內容:

這裡寫圖片描述

set :

多選字串的資料型別。它非常適用於儲存表單介面中的”多選項值“;它設定的時候,需要給定”固定的幾個選項”,然後在儲存的時候,就可以儲存其中若干個值。

形式如下:

set("選項1","選項2","選項3"……)

實際內部:

這些字串選項對應的是如下的數字值:1,2,4,8,16,……最多64個選項。

建立表使用set作為hobby的資料型別:

create table tab_test_set(id int primary key auto_increment,name varchar(10),hobbyset('coding','eat','play','sleep'));

插入資料的兩種方式:

第一種方式:

 insert into tab_test_set(name,hobby)values('wangke','eat,play,sleep');

第二種方式:

insert into tab_test_set(name,hobby)values('xiaohong',14);

兩種方式插入的hobby的內容是一樣的,第二種方式中的14是所有hobby選項值相加所得(2+4+8)。

當前表中內容:

這裡寫圖片描述

text :

“長文字”字元型別,通常,其儲存的型別不佔距表格中行的資料容量限制,其本身不佔距表中一行的資料容量的限制,其本身最長可儲存65535個字元

其他同類字串型別:smalltext,tinytext,longtext

其他:

  • binary型別: 定長二進位制字串型別,裡面儲存的是二進位制值

  • varbinary型別: 變長二進位制字串型別,裡面儲存的是二進位制值

  • blob型別: 二進位制資料型別,裡面儲存的是二進位制值,但其適用於儲存”圖片”,”其他檔案”等,由於在資料庫中操作的效率問題,極少使用。

時間型別:

  • datetime(時間日期型別)

  • date(日期型別

  • time(時間型別)

  • year(年份型別)

  • timestamp(時間戳型別):就是指一個時間的”資料值”–本質其實就是一個數字。它的一個重要作用:能夠自動獲得時間戳的資料值–相當於”now()”(注:這個欄位通常不需要插入資料)

    注:在應用中,時間日期型別,再我們自己給定的資料情形下,需要使用’單引號’引起來,跟字串一樣。

演示時間日期型別的欄位的使用:

/*像表中插入時間*/
insert into tab_time(my_datetime,my_date,my_time,my_year)value('2017-4-13 16:41:34','2017-4-13','16:41:34','2017');

使用now()函式可以直接獲取當前時間

記錄MySQL學習筆記 ^ - ^