標籤:style blog http color ar 使用 sp 檔案 資料
整型資料:
1.tinyint,
2.smallint,
3.mediumint,
4.int,
5.bigint。
創
建表聲明的時候我們發現有這樣聲明:
create table main_t ( tiny_id tinyint(12), small_id smallint(12), meidum_id mediumint(12), int_id int(12), big_t bigint(12));
這
裡面括弧中的12是限制資料的寬度,但是不影響顯示,主要限制在:
1.顯示寬度是在終端下資料顯示的寬度,但是如果資料沒超過類型表示範圍而超過了顯示寬度,仍然可以完全顯示出來。
2.不影響記憶體,就是寬度無論是多少,記憶體配置永遠不變,譬如Int是4個位元組,即使用了100個顯示寬度,也是4個位元組。
另
外注意在不指定顯示寬度的時候系統會使用預設寬度。
浮點數和定點數:
1.float,
2.double,
3.decimal。
此處decimal是定點數類型,聲明的時候需要聲明精度M和標度D(小數位元),儲存位元組數與M有關,是M+2個位元組。定點數預設是(10,0),浮點數可以不用括弧來聲明精度等。
下面聲明:
create table float_t( n1 float(5,1), n2 double(5,1), n3 decimal(5,1));
插入資料:
insert into float_t values(5.12,5.12,5.123);
此時會發現在插入decimal資料的時候出現警告。
原
因是:
在浮點數據插入時,如果精度不滿足會自動進行4舍5入,
在定點數插入時,如果精度不滿足而進行類型轉換會產生警告,(只是警告,不是錯誤)。
注意:
1.一般浮點數容易產生精度問題,在需要精密儲存的資料上最好使用定點數,如貨幣,科學資料,
2.浮點是計算也容易產生精度問題,一般不用浮點數做減法和進行比較。
日期和時間:
1.datetime(YYYY-MM-DD HH:MM:SS),
2.date(YYYY-MM-DD),
3.timestamp(YYYY-MM-DD HH:MM:SS),
4.time(HH:MM:SS),
5.year(YYYY)。
括弧內的是日期和時間的格式。
注意:
year以四位字串或是4位元字表示1901-2155,2位字串或數字表示,00-69表示2000-2069,70-99表示1970-1999,一個位元組儲存。
time表示的時候如果輸入無意義的時間會自動轉換為00:00:00。
使用NOW()函數可以將系統時間插入資料中:
效果:
同樣可以看出的是,時間戳記的預設值就是當前系統時間。
關於時間的使用介紹起來很複雜,我還是選擇根據用途瞭解。
字串:
char(M) ,固定長度非二進位字串,M在1-255之前,佔用M位元組,
varchar(M) , 變長字串,L+1位元組,L<M,
tinytext,極小字串 ,L+1位元組,
text,小字串,L+2,
mediumtext ,中小字串,L+3,
longtext,大字串,L+4,
以上L不盡相同。
enum,枚舉,
set,集合。
對
於定長字串char,在右側的空格被忽略,
變長字串varchar,會在字串後加結束字元,
text用於儲存大段文本,譬如文章和評論,
enum需要提供枚舉值,如:
欄位 enum(值1,值2,…),
從1開始編號方便訪問,因此插入時可以使用編號訪問這些字串值,
set需要提供一系列值,在插入的時候會對不在這些值中的值進行錯誤警告,且會合并插入中重複的值,還會按照提供的值的順序排列插入值。
二進位類型:
1.bit,
2.binary,
3.varbinary,
4.tinybinary,
5.blob,
6.mediumblob,
7.longblob。
bit(M)會按照M位儲存,
binary和varbinary儲存二進位字串,
blob等用來儲存大型位元據。同樣可以儲存二進位字串,不含字元集。一般用於儲存圖片,音頻資訊等二進位檔案。
關
於類型選擇最佳化方面有講,應當有一個比較常用的標準,今後使用的時候可以自己體會,或是找一些項目看看。
MySQL資料庫操作4-資料類型