MySQL 教程 03 資料型別

2021-08-26 23:27:44 字數 3412 閱讀 2010

取值範圍如果加了 unsigned, 則最大值翻倍,如 tinyint unsigned 的取值範圍為(0~256).

設乙個字段定義為 float(5,3),如果插入乙個數 123.45678, 實際資料庫裡存的是123.457,但總個數還是以實際為準,即 6 位。

浮點型在資料庫中存放的是近似值,而定點型別在資料庫中存放的是精確值。

decimal(m,d) 引數 m<65 是總個數,d<30 且 d

char 和 varchar:

① char(n) 若存入字元數小於n, 則以空格補於其後, 查詢之時再將空格去掉. 所以 char 型別儲存的字串末尾不能有空格, varchar 不限於此.

② char(n) 固定長度, char(4) 不管是存入幾個字元, 都將占用4個位元組,

varchar 是存入的實際字元數+1個位元組(n<=255)或2個位元組(n>255), 所以varchar(4),存入3個字元將占用4個位元組。

③ char 型別的字串檢索速度要比 varchar 型別的快.

varchar 和 text:

① varchar 可指定n,text 不能指定,內部儲存 varchar 是存入的實際字元數+1個位元組(n<=255)或2個位元組(n>255),text是實際字元數+2個位元組。

② text 型別不能有預設值.

③ varchar 可直接建立索引, text 建立索引要指定前多少個字元. varchar 查詢速度快於 text, 在都建立索引的情況下, text 的索引似乎不起作用.

blob和_text儲存方式不同, text以文字方式儲存,英文儲存區分大小寫,而 blob 是以二進位制方式儲存,不分大小寫。

blob儲存的資料只能整體讀出。

text 可以指定字符集, blob 不用指定字符集.

datetime       用於表示 年月日時分秒, 是 date 和 time 的組合, 並且記錄的年份比較長久. 如果實際應用中有這樣的需求, 就可以使用 datetime 型別.

timestamp 用於表示 年月日時分秒, 但是記錄的年份比較短暫.

timestamp 和時區相關, 更能反映當前時間. 當插入日期時, 會先轉換為本地時區後再存放, 當查詢日期時, 會將日期轉換為本地時區後再顯示.

所以不同時區的人看到的同一時間是不一樣的. 如果記錄的日期需要讓不同時區的人使用, 最好使用 timestamp.

date 用於表示 年月日, 如果實際應用值需要儲存 年月日 就可以使用 date. 生日字段使用 date 即可.

time 用於表示 時分秒, 如果實際應用值需要儲存 時分秒 就可以使用 time.

year 用於表示 年份, year 有 2 位(最好使用4位)和 4 位格式的年. 預設是 4 位.

如果實際應用只儲存年份, 那麼用 1 bytes 儲存 year 型別完全可以. 不但能夠節約儲存空間, 還能提高表的操作效率.

乙個表中至多只能有乙個字段設定 current_timestamp.

current_timestamp 好像只適合 timestamp 型別的字段.

-- 新增 create_time 字段, 設定預設時間 current_timestamp

alter

table 表名

addcolumn create_time datetime null

default

current_timestamp comment '建立時間' ;

-- 修改 create_time 字段, 設定預設時間 current_timestamp

alter

table 表名

modify column create_time datetime null

default

current_timestamp comment '建立時間' ;

-- 新增 updatetime 設定 預設時間 current_timestamp 設定更新時間為 on update current_timestamp

alter

table

`table_name`

addcolumn

`updatetime`

timestamp

null

default

current_timestamp

onupdate

current_timestamp comment '建立時間' ;

--修改 updatetime 設定 預設時間 current_timestamp 設定更新時間為 on update current_timestamp

alter

table

`table_name`

modify column

`updatetime`

timestamp

null

default

current_timestamp

onupdate

current_timestamp comment '建立時間' ;

① 優先選擇佔空間小的型別.

② 對於字元型和數字型, 優先選擇數字型.

③ 對於 char 和 varchar:

① 如果列中的資料長度差不多一致, 比如 : 省份證號, 學號等, 則應該考慮使用 char 型別.

② 如果列中的最大資料長度小於 50 byte (15個字元左右), 則一般考慮使用 char.

④ 對於 decimal 和 float:

① 精確資料只能使用 decimal 型別.

② 非精確資料優先使用 float 型別, ( float 比 decimal 的儲存空間小 )

以上原則主要是從以下角度考慮:

① 在對資料進行比較 ( 查詢條件, join 條件以及排序 ) 操作時, 同樣的資料, 數字的處理比字串快.

字串的比較與當前的排序規則有關, 它需要去查詢當前排序規則的字典順序, 而數字不需要.

② 在資料庫中, 資料的處理以頁為單位 ( mysql 16k 每頁 ), 列的長度越小, 每頁顯示的內容越多, 利於效能提公升.

MySQL系列03 資料型別

資料型別是指列 儲存過程引數 表示式和區域性變數的資料特徵,它決定了資料的儲存格式,代表了不同的資訊型別。有符號位可以表示負數 無符號位只能表示0和正數 在正數表達的範圍內,無符號位是有符號位的兩倍範圍 上述int及以下類別,每個類別都是2的冪次行增加8位,分別為28 216 224 232 位元組...

03 資料型別

值型別 基本資料型別是go語言實際的原子,復合資料型別是由不同的方式組合基本型別構造出來的資料型別,如 陣列,slice,map,結構體 整型 int8 uint 基礎型別之數字型別 浮點型 float32,float64 基礎型別之數字型別 複數 基礎型別之數字型別 布林型 bool 基礎型別,只...

03 資料型別

資料型別包括 基本資料型別和引用資料型別。基本資料型別指的是簡單的資料段,引用資料型別指的是有多個值構成的物件。當我們把變數賦值給乙個變數時,解析器首先要確認的就是這個值是基本型別值還是引用型別值。1 基本資料型別 number var a 123 typeof 檢查當前變數是什麼資料型別 cons...