mysql數(shù)據(jù)類型和字段屬性原理與用法詳解
本文實(shí)例講述了mysql數(shù)據(jù)類型和字段屬性。分享給大家供大家參考,具體如下:
本文內(nèi)容: 數(shù)據(jù)類型 數(shù)值類型 整數(shù)型 浮點(diǎn)型 定點(diǎn)型 日期時(shí)間類型 字符串類型 補(bǔ)充: 顯示寬度與zerofll 記錄長(zhǎng)度 字段屬性 空不為空值:NULL、NOT NULL 主鍵:primary key 唯一鍵:unique key 自增長(zhǎng):auto_increment 默認(rèn)值:default 字段描述:comment 補(bǔ)充: 復(fù)合鍵首發(fā)日期:2018-04-08
數(shù)據(jù)類型:mysql的數(shù)據(jù)類型就是存儲(chǔ)數(shù)據(jù)的類型。
數(shù)值類型: 整數(shù)類型:tinyint,smallint,mediumint,integer,bigint 默認(rèn)是有符號(hào),如果需要使用無(wú)符號(hào)的數(shù)據(jù)類型要在后面加'UNSIGNED'類型 簡(jiǎn)寫 字節(jié)大小 (signed)范圍 (unsigned)范圍 備注 整數(shù)型: TINYINT 1 0~255 -128~127 SMALLINT 2 0~65535 -32768~32767 MEDIUMINT 3 0~16777215 -8388608~8388607 INTEGER INT 4 0~4294967295 -2147483648~2147483647 BIGINT 8 0~264-1 -263~263-1 小數(shù)類型: 浮點(diǎn)類型:float(size,d),double(size,d) size是數(shù)值的最大位數(shù),d是小數(shù)點(diǎn)右側(cè)的位數(shù)(即使你沒(méi)輸夠那么多位也會(huì)補(bǔ)全那么多位)。 FLOAT的精度為6~7位(依據(jù)情況不同?畢竟機(jī)器是以二進(jìn)制存儲(chǔ)的),DOUBLE的精度為14~15位 整數(shù)部分的個(gè)數(shù)為SIZE-D,直接存入的值的個(gè)數(shù)不能多于這個(gè),但如果浮點(diǎn)數(shù)四舍五入導(dǎo)致整數(shù)進(jìn)位而溢出超過(guò)最大位數(shù)的,系統(tǒng)允許成立(某些版本貌似已經(jīng)不允許了,所以一般小數(shù)位也不要超過(guò))。 很多時(shí)候沒(méi)必要關(guān)注兩個(gè)浮點(diǎn)的數(shù)值范圍大?。ㄊ菢O大的),注重點(diǎn)應(yīng)該是它的精度。


時(shí)間日期類型包括date,time,datetime,timestamp,year;
Datetime:時(shí)間日期,格式是YYYY-MM-DD HH:II:SS,表示的范圍是從1000到9999年(有些版本已經(jīng)允許0-9999?不確定);




create table my_set(hobby set(’football’,’basketball’,’pingpong’,’computer’))charset utf8;insert into my_set values(’basketball,computer’);insert into my_set values(3);-- 3=0011insert into my_set values(5);-- 5=0101
create table my_enum(gender enum(’male’,’female’,’unknown’))charset utf8;



create table myInt(t1 TINYINT(3));drop table myInt;insert into myInt values(127),(1);select * from myInt;alter table myInt modify t1 tinyint(3) zerofill;select * from myInt; 不要輕易的使用最大限度來(lái)存儲(chǔ)字符串,因?yàn)樯婕坝涗涢L(zhǎng)度問(wèn)題 : MySQL中規(guī)定任何一條數(shù)據(jù)最長(zhǎng)不能超過(guò)65535個(gè)字節(jié) 如果有任何一個(gè)字段允許為空,那么系統(tǒng)會(huì)自動(dòng)從整個(gè)記錄中保存一個(gè)字節(jié)來(lái)存儲(chǔ)NULL; text文本不占用記錄長(zhǎng)度,額外存儲(chǔ)。 UTF8中varchar的最大限度:65535-2(需要兩個(gè)字節(jié)來(lái)存儲(chǔ)長(zhǎng)度) /3=21844,所以最大字符數(shù)為21844 GBK中varchar的最大限度:65535-2(需要兩個(gè)字節(jié)來(lái)存儲(chǔ)長(zhǎng)度) /2=32766 字段屬性:
字段屬性是字段除數(shù)據(jù)類型外的屬性,一般有空不為空值、主鍵、唯一鍵、自增長(zhǎng)、默認(rèn)值、描述等屬性。
空不為空值:NULL、NOT NULL 字段的數(shù)據(jù)默認(rèn)情況下是允許為空的,比如說(shuō)一條人的信息記錄中可以沒(méi)有郵箱(或許有些人考慮用“空字符串”來(lái)代表),我們?cè)试S可以不填入數(shù)據(jù)的字段可以設(shè)置為null;但比如說(shuō)某些必填數(shù)據(jù),我們不想填入的時(shí)候留空,可以設(shè)置這個(gè)字段為not null 允許為空時(shí)的數(shù)據(jù),空的數(shù)據(jù)顯示為null:






alter table 表名 drop primary key; 唯一鍵:unique key 唯一鍵的功能與主鍵有點(diǎn)類型,但不同的是主鍵只能有一個(gè),唯一鍵可以有多個(gè),而且唯一鍵的字段的數(shù)據(jù)允許為空。 唯一鍵可以約束字段,使得字段的數(shù)據(jù)不能重復(fù) 如果唯一鍵同時(shí)也有not null,并且表中沒(méi)有主鍵的話,在desc查看表結(jié)構(gòu)中會(huì)顯示成主鍵 如果唯一鍵也不允許為空,那么功能與主鍵相同 唯一鍵的定義方法可以參考主鍵的。 唯一鍵的刪除:
alter table 表名 drop index 唯一鍵名; -- 唯一鍵默認(rèn)使用字段名來(lái)定義名字 自增長(zhǎng):auto_increment 自增長(zhǎng)的功能是可以使某個(gè)字段的數(shù)據(jù)隨著記錄的插入而進(jìn)行增長(zhǎng)(不給這個(gè)字段插入數(shù)據(jù)的情況下) 自增長(zhǎng)的前提是這個(gè)字段必須是一個(gè)“索引”,比如主鍵、唯一鍵 自增長(zhǎng)的前提這個(gè)字段的數(shù)據(jù)類型是一個(gè)數(shù)值型的,(如果給了float,也不會(huì)增長(zhǎng)成小數(shù),而僅僅是整數(shù)) 一個(gè)表只能有一個(gè)自增長(zhǎng)。 只有不給值,或者給null的情況下,才能正確自增長(zhǎng);如果某一次自增長(zhǎng)失敗了,那么下一次會(huì)從當(dāng)前字段的最大值開(kāi)始繼續(xù)自增長(zhǎng)。 自增長(zhǎng)的定義方法:;當(dāng)然也可以通過(guò)修改字段的形式來(lái)給字段定義not null屬性 自增長(zhǎng)的修改: 修改增長(zhǎng)速度:set auto_increment = 值; 修改下次增長(zhǎng)的值:alter table 表名 auto_increment = 值; 【修改的值只能變大,不能變小,因?yàn)榭赡軐?dǎo)致數(shù)據(jù)重復(fù)問(wèn)題】 自增長(zhǎng)的查看:show vairable like 'auto_increment%'; 自增長(zhǎng)的刪除:利用alter來(lái)刪除,alter修改字段屬性的時(shí)候如果不帶上原來(lái)的屬性就會(huì)被刪掉: 默認(rèn)值:default 默認(rèn)值的功能是當(dāng)我們不給一個(gè)字段賦值的時(shí)候,使用默認(rèn)值作為數(shù)據(jù),比如不選擇性別的時(shí)候,默認(rèn)使用“保密”; 默認(rèn)值的定義方式:
字段描述:comment 字段描述是用來(lái)描述字段的,能在查看數(shù)據(jù)表創(chuàng)建語(yǔ)句的時(shí)候顯示出來(lái)(不會(huì)再select結(jié)果中顯示出來(lái)),可以幫助我們了解某一個(gè)字段的意義。 定義方式:
補(bǔ)充: 復(fù)合鍵:可以將多個(gè)字段組成一個(gè)鍵,比如學(xué)生可以選多門課,但學(xué)生號(hào)跟課程號(hào)一起的時(shí)候應(yīng)該是唯一的,這里使用主鍵來(lái)限制這個(gè)情況 定義方法(復(fù)合以主鍵為例):
數(shù)據(jù)約束(以上面的表為例):
更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL查詢技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲(chǔ)過(guò)程技巧大全》、《MySQL數(shù)據(jù)庫(kù)鎖相關(guān)技巧匯總》及《MySQL常用函數(shù)大匯總》
希望本文所述對(duì)大家MySQL數(shù)據(jù)庫(kù)計(jì)有所幫助。
相關(guān)文章:
1. MySQL Delete 刪數(shù)據(jù)后磁盤空間未釋放的原因2. oracle 使用雜記23. mysql 視圖操作和存儲(chǔ)過(guò)程4. 淺談數(shù)據(jù)庫(kù)日期類型字段設(shè)計(jì)應(yīng)該如何選擇5. MySql如何使用not in實(shí)現(xiàn)優(yōu)化6. MySQL創(chuàng)始人發(fā)郵件尋求中國(guó)幫助7. MySQL性能優(yōu)化之一條SQL在MySQL中執(zhí)行的過(guò)程詳解8. 傳甲骨文將增加對(duì)MySQL投資與微軟競(jìng)爭(zhēng)9. MYSQL(電話號(hào)碼,身份證)數(shù)據(jù)脫敏的實(shí)現(xiàn)10. 數(shù)據(jù)庫(kù)Oracle9i的企業(yè)管理器簡(jiǎn)介
