服務項目:網站建設、仿站、程序開發、APP開發設計、移動網站開發設計、企業網站設計、電子商務網站開發、網站維護、網站推廣、UX/UI 、HTML5、CSS3、JS / Jquery ...
          四川浚浚科技有限公司
          四川浚浚科技有限公司 (開發設計官網)TEL : 15308000360 / QQ : 38585404

          您的位置:首頁 > 技術經驗 > 數據庫 > 正文

          MySQL數據類型和常用字段屬性總結
          技術支持服務電話:15308000360 【7x24提供運維服務,解決各類系統/軟硬件疑難技術問題】

          這篇文章主要介紹了MySQL數據類型和常用字段屬性總結,本文總結了日期和時間數據類型、數值數據類型、字符串數據類型等,需要的朋友可以參考下

          前言

          好比C++中,定義int類型需要多少字節,定義double類型需要多少字節一樣,MySQL對表每個列中的數據也會實行嚴格控制,這是數據驅動應用程序成功的關鍵。M前言

          好比C++中,定義int類型需要多少字節,定義double類型需要多少字節一樣,MySQL對表每個列中的數據也會實行嚴格控制,這是數據驅動應用程序成功的關鍵。MySQL提供了一組可以賦給表中各個列的數據類型,每個類型都強制數據滿足為該數據類型預先確定的一組規則,例如大小、類型及格式。

          這里先總結數據類型。MySQL中的數據類型大的方面來分,可以分為:日期和時間、數值,以及字符串。下面就分開來進行總結。

          日期和時間數據類型

          MySQL數據類型 含義
          date 3字節,日期,格式:2014-09-18
          time 3字節,時間,格式:08:42:30
          datetime 8字節,日期時間,格式:2014-09-18 08:42:30
          timestamp 4字節,自動存儲記錄修改的時間
          year 1字節,年份

          數值數據類型

          整型

          MySQL數據類型 含義(有符號)
          tinyint 1字節,范圍(-128~127)
          smallint 2字節,范圍(-32768~32767)
          mediumint 3字節,范圍(-8388608~8388607)
          int 4字節,范圍(-2147483648~2147483647)
          bigint 8字節,范圍(+-9.22*10的18次方)

          上面定義的都是有符號的,當然了,也可以加上unsigned關鍵字,定義成無符號的類型,那么對應的取值范圍就要翻翻了,比如:

          tinyint unsigned的取值范圍為0~255。

          浮點型

          MySQL數據類型 含義
          float(m, d) 4字節,單精度浮點型,m總個數,d小數位
          double(m, d) 8字節,雙精度浮點型,m總個數,d小數位
          decimal(m, d) decimal是存儲為字符串的浮點數

          我在MySQL中建立了一個表,有一列為float(5, 3);做了以下試驗:

          1.插入123.45678,最后查詢得到的結果為99.999; 2.插入123.456,最后查詢結果為99.999; 3.插入12.34567,最后查詢結果為12.346;

          所以,在使用浮點型的時候,還是要注意陷阱的,要以插入數據庫中的實際結果為準。

          字符串數據類型

          MySQL數據類型 含義
          char(n) 固定長度,最多255個字符
          varchar(n) 可變長度,最多65535個字符
          tinytext 可變長度,最多255個字符
          text 可變長度,最多65535個字符
          mediumtext 可變長度,最多2的24次方-1個字符
          longtext 可變長度,最多2的32次方-1個字符

          1.char(n)和varchar(n)中括號中n代表字符的個數,并不代表字節個數,所以當使用了中文的時候(UTF8)意味著可以插入m個中文,但是實際會占用m*3個字節。 2.同時char和varchar最大的區別就在于char不管實際value都會占用n個字符的空間,而varchar只會占用實際字符應該占用的空間+1,并且實際空間+1<=n。 3.超過char和varchar的n設置后,字符串會被截斷。 4.char的上限為255字節,varchar的上限65535字節,text的上限為65535。 5.char在存儲的時候會截斷尾部的空格,varchar和text不會。 6.varchar會使用1-3個字節來存儲長度,text不會。

          其它類型

          1.enum(“member1″, “member2″, … “member65535″) enum數據類型就是定義了一種枚舉,最多包含65535個不同的成員。當定義了一個enum的列時,該列的值限制為列定義中聲明的值。如果列聲明包含NULL屬性,則NULL將被認為是一個有效值,并且是默認值。如果聲明了NOT NULL,則列表的第一個成員是默認值。

          2.set(“member”, “member2″, … “member64″) set數據類型為指定一組預定義值中的零個或多個值提供了一種方法,這組值最多包括64個成員。值的選擇限制為列定義中聲明的值。

          數據類型屬性

          上面大概總結了MySQL中的數據類型,當然了,上面的總結肯定是不全面的,如果要非常全面的總結這些內容,好幾篇文章都不夠的。下面就再來總結一些常用的屬性。

          1.auto_increment

          auto_increment能為新插入的行賦一個唯一的整數標識符。為列賦此屬性將為每個新插入的行賦值為上一次插入的ID+1。

          MySQL要求將auto_increment屬性用于作為主鍵的列。此外,每個表只允許有一個auto_increment列。例如:

          id smallint not null auto_increment primary key
          

          2.binary

          binary屬性只用于char和varchar值。當為列指定了該屬性時,將以區分大小寫的方式排序。與之相反,忽略binary屬性時,將使用不區分大小寫的方式排序。例如:

          hostname char(25) binary not null
          

          3.default

          default屬性確保在沒有任何值可用的情況下,賦予某個常量值,這個值必須是常量,因為MySQL不允許插入函數或表達式值。此外,此屬性無法用于BLOB或TEXT列。如果已經為此列指定了NULL屬性,沒有指定默認值時默認值將為NULL,否則默認值將依賴于字段的數據類型。例如:

          subscribed enum('0', '1') not null default '0'
          

          4.index

          如果所有其他因素都相同,要加速數據庫查詢,使用索引通常是最重要的一個步驟。索引一個列會為該列創建一個有序的鍵數組,每個鍵指向其相應的表行。以后針對輸入條件可以搜索這個有序的鍵數組,與搜索整個未索引的表相比,這將在性能方面得到極大的提升。

          create table employees
          (
          id varchar(9) not null,
          firstname varchar(15) not null,
          lastname varchar(25) not null,
          email varchar(45) not null,
          phone varchar(10) not null,
          index lastname(lastname),
          primary key(id)
          );
          
          我們也可以利用MySQL的create index命令在創建表之后增加索引:
          create index lastname on employees (lastname(7));
          

          這一次只索引了名字的前7個字符,因為可能不需要其它字母來區分不同的名字。因為使用較小的索引時性能更好,所以應當在實踐中盡量使用小的索引。

          5.not null

          如果將一個列定義為not null,將不允許向該列插入null值。建議在重要情況下始終使用not null屬性,因為它提供了一個基本驗證,確保已經向查詢傳遞了所有必要的值。

          6.null

          為列指定null屬性時,該列可以保持為空,而不論行中其它列是否已經被填充。記住,null精確的說法是“無”,而不是空字符串或0。

          7.primary key

          primary key屬性用于確保指定行的唯一性。指定為主鍵的列中,值不能重復,也不能為空。為指定為主鍵的列賦予auto_increment屬性是很常見的,因為此列不必與行數據有任何關系,而只是作為一個唯一標識符。主鍵又分為以下兩種:

          (1)單字段主鍵

          如果輸入到數據庫中的每行都已經有不可修改的唯一標識符,一般會使用單字段主鍵。注意,此主鍵一旦設置就不能再修改。

          (2)多字段主鍵

          如果記錄中任何一個字段都不可能保證唯一性,就可以使用多字段主鍵。這時,多個字段聯合起來確保唯一性。如果出現這種情況,指定一個auto_increment整數作為主鍵是更好的辦法。

          8.unique

          被賦予unique屬性的列將確保所有值都有不同的值,只是null值可以重復。一般會指定一個列為unique,以確保該列的所有值都不同。例如:

          email varchar(45) unique
          

          9.zerofill

          zerofill屬性可用于任何數值類型,用0填充所有剩余字段空間。例如,無符號int的默認寬度是10;因此,當“零填充”的int值為4時,將表示它為0000000004。例如:

          orderid int unsigned zerofill not null
          

          總結完畢!!!



          上一篇:MySql學習心得之存儲過程
          下一篇:MySQL server has gone away 問題的解決方法

          相關熱詞搜索:mysql
          主站蜘蛛池模板: 美团外卖猛男男同38分钟| 女人被两根一起进3p在线观看| 成人禁在线观看| 在线中文字幕第一页| 国产大片线上免费看| 免费1夜情网站| 久久精品国产亚洲AV水果派| 一级毛片a免费播放王色 | 中文字幕热久久久久久久| 97人洗澡从澡人人爽人人模| 青青青国产在线视频| 爱情岛论坛首页永久入口| 日本护士xxxx视频| 国偷自产视频一区二区久| 国产三级久久精品三级| 亚洲日产2021三区| 中文字幕中出在线| **实干一级毛片aa免费| 精品国产夜色在线| 最新版天堂中文在线官网| 好妈妈5韩国电影高清中字| 国产成人av一区二区三区在线观看| 免费一级特黄特色大片在线观看| 九九综合VA免费看| 91福利在线观看视频| 精品视频久久久久| 日韩精品久久无码中文字幕| 在线国产你懂的| 嗯~啊太紧了妖精h| 免费看黄视频app| 久久综合九色综合97伊人麻豆| 91精品欧美一区二区三区 | 高潮毛片无遮挡高清免费| 色www永久免费网站| 欧美aaaa在线观看视频免费| 天天在线天天看成人免费视频| 国产a三级三级三级| 久久精品久久久| 五月婷婷在线免费观看| 欧美牲交a欧美牲交aⅴ图片| 女博士梦莹凌晨欢爱|