mysql數據類型和字段屬性原理與用法詳解
本文實例講述了mysql數據類型和字段屬性。分享給大家供大家參考,具體如下:
本文內容: 數據類型 數值類型 整數型 浮點型 定點型 日期時間類型 字符串類型 補充: 顯示寬度與zerofll 記錄長度 字段屬性 空不為空值:NULL、NOT NULL 主鍵:primary key 唯一鍵:unique key 自增長:auto_increment 默認值:default 字段描述:comment 補充: 復合鍵首發日期:2018-04-08
數據類型:mysql的數據類型就是存儲數據的類型。
數值類型: 整數類型:tinyint,smallint,mediumint,integer,bigint 默認是有符號,如果需要使用無符號的數據類型要在后面加'UNSIGNED'類型 簡寫 字節大小 (signed)范圍 (unsigned)范圍 備注 整數型: 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 小數類型: 浮點類型:float(size,d),double(size,d) size是數值的最大位數,d是小數點右側的位數(即使你沒輸夠那么多位也會補全那么多位)。 FLOAT的精度為6~7位(依據情況不同?畢竟機器是以二進制存儲的),DOUBLE的精度為14~15位 整數部分的個數為SIZE-D,直接存入的值的個數不能多于這個,但如果浮點數四舍五入導致整數進位而溢出超過最大位數的,系統允許成立(某些版本貌似已經不允許了,所以一般小數位也不要超過)。 很多時候沒必要關注兩個浮點的數值范圍大小(是極大的),注重點應該是它的精度。


時間日期類型包括date,time,datetime,timestamp,year;
Datetime:時間日期,格式是YYYY-MM-DD HH:II:SS,表示的范圍是從1000到9999年(有些版本已經允許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; 不要輕易的使用最大限度來存儲字符串,因為涉及記錄長度問題 : MySQL中規定任何一條數據最長不能超過65535個字節 如果有任何一個字段允許為空,那么系統會自動從整個記錄中保存一個字節來存儲NULL; text文本不占用記錄長度,額外存儲。 UTF8中varchar的最大限度:65535-2(需要兩個字節來存儲長度) /3=21844,所以最大字符數為21844 GBK中varchar的最大限度:65535-2(需要兩個字節來存儲長度) /2=32766 字段屬性:
字段屬性是字段除數據類型外的屬性,一般有空不為空值、主鍵、唯一鍵、自增長、默認值、描述等屬性。
空不為空值:NULL、NOT NULL 字段的數據默認情況下是允許為空的,比如說一條人的信息記錄中可以沒有郵箱(或許有些人考慮用“空字符串”來代表),我們允許可以不填入數據的字段可以設置為null;但比如說某些必填數據,我們不想填入的時候留空,可以設置這個字段為not null 允許為空時的數據,空的數據顯示為null:






alter table 表名 drop primary key; 唯一鍵:unique key 唯一鍵的功能與主鍵有點類型,但不同的是主鍵只能有一個,唯一鍵可以有多個,而且唯一鍵的字段的數據允許為空。 唯一鍵可以約束字段,使得字段的數據不能重復 如果唯一鍵同時也有not null,并且表中沒有主鍵的話,在desc查看表結構中會顯示成主鍵 如果唯一鍵也不允許為空,那么功能與主鍵相同 唯一鍵的定義方法可以參考主鍵的。 唯一鍵的刪除:
alter table 表名 drop index 唯一鍵名; -- 唯一鍵默認使用字段名來定義名字 自增長:auto_increment 自增長的功能是可以使某個字段的數據隨著記錄的插入而進行增長(不給這個字段插入數據的情況下) 自增長的前提是這個字段必須是一個“索引”,比如主鍵、唯一鍵 自增長的前提這個字段的數據類型是一個數值型的,(如果給了float,也不會增長成小數,而僅僅是整數) 一個表只能有一個自增長。 只有不給值,或者給null的情況下,才能正確自增長;如果某一次自增長失敗了,那么下一次會從當前字段的最大值開始繼續自增長。 自增長的定義方法:;當然也可以通過修改字段的形式來給字段定義not null屬性 自增長的修改: 修改增長速度:set auto_increment = 值; 修改下次增長的值:alter table 表名 auto_increment = 值; 【修改的值只能變大,不能變小,因為可能導致數據重復問題】 自增長的查看:show vairable like 'auto_increment%'; 自增長的刪除:利用alter來刪除,alter修改字段屬性的時候如果不帶上原來的屬性就會被刪掉: 默認值:default 默認值的功能是當我們不給一個字段賦值的時候,使用默認值作為數據,比如不選擇性別的時候,默認使用“保密”; 默認值的定義方式:
字段描述:comment 字段描述是用來描述字段的,能在查看數據表創建語句的時候顯示出來(不會再select結果中顯示出來),可以幫助我們了解某一個字段的意義。 定義方式:
補充: 復合鍵:可以將多個字段組成一個鍵,比如學生可以選多門課,但學生號跟課程號一起的時候應該是唯一的,這里使用主鍵來限制這個情況 定義方法(復合以主鍵為例):
數據約束(以上面的表為例):
更多關于MySQL相關內容感興趣的讀者可查看本站專題:《MySQL查詢技巧大全》、《MySQL事務操作技巧匯總》、《MySQL存儲過程技巧大全》、《MySQL數據庫鎖相關技巧匯總》及《MySQL常用函數大匯總》
希望本文所述對大家MySQL數據庫計有所幫助。
相關文章: