服務(wù)項(xiàng)目:網(wǎng)站建設(shè)、仿站、程序開(kāi)發(fā)、APP開(kāi)發(fā)設(shè)計(jì)、移動(dòng)網(wǎng)站開(kāi)發(fā)設(shè)計(jì)、企業(yè)網(wǎng)站設(shè)計(jì)、電子商務(wù)網(wǎng)站開(kāi)發(fā)、網(wǎng)站維護(hù)、網(wǎng)站推廣、UX/UI 、HTML5、CSS3、JS / Jquery ...
          四川浚浚科技有限公司
          四川浚浚科技有限公司 (開(kāi)發(fā)設(shè)計(jì)官網(wǎng))TEL : 15308000360 / QQ : 38585404

          您的位置:首頁(yè) > 技術(shù)經(jīng)驗(yàn) > 數(shù)據(jù)庫(kù) > 正文

          MySQL數(shù)據(jù)類(lèi)型和常用字段屬性總結(jié)
          技術(shù)支持服務(wù)電話:15308000360 【7x24提供運(yùn)維服務(wù),解決各類(lèi)系統(tǒng)/軟硬件疑難技術(shù)問(wèn)題】

          這篇文章主要介紹了MySQL數(shù)據(jù)類(lèi)型和常用字段屬性總結(jié),本文總結(jié)了日期和時(shí)間數(shù)據(jù)類(lèi)型、數(shù)值數(shù)據(jù)類(lèi)型、字符串?dāng)?shù)據(jù)類(lèi)型等,需要的朋友可以參考下

          前言

          好比C++中,定義int類(lèi)型需要多少字節(jié),定義double類(lèi)型需要多少字節(jié)一樣,MySQL對(duì)表每個(gè)列中的數(shù)據(jù)也會(huì)實(shí)行嚴(yán)格控制,這是數(shù)據(jù)驅(qū)動(dòng)應(yīng)用程序成功的關(guān)鍵。M前言

          好比C++中,定義int類(lèi)型需要多少字節(jié),定義double類(lèi)型需要多少字節(jié)一樣,MySQL對(duì)表每個(gè)列中的數(shù)據(jù)也會(huì)實(shí)行嚴(yán)格控制,這是數(shù)據(jù)驅(qū)動(dòng)應(yīng)用程序成功的關(guān)鍵。MySQL提供了一組可以賦給表中各個(gè)列的數(shù)據(jù)類(lèi)型,每個(gè)類(lèi)型都強(qiáng)制數(shù)據(jù)滿足為該數(shù)據(jù)類(lèi)型預(yù)先確定的一組規(guī)則,例如大小、類(lèi)型及格式。

          這里先總結(jié)數(shù)據(jù)類(lèi)型。MySQL中的數(shù)據(jù)類(lèi)型大的方面來(lái)分,可以分為:日期和時(shí)間、數(shù)值,以及字符串。下面就分開(kāi)來(lái)進(jìn)行總結(jié)。

          日期和時(shí)間數(shù)據(jù)類(lèi)型

          MySQL數(shù)據(jù)類(lèi)型 含義
          date 3字節(jié),日期,格式:2014-09-18
          time 3字節(jié),時(shí)間,格式:08:42:30
          datetime 8字節(jié),日期時(shí)間,格式:2014-09-18 08:42:30
          timestamp 4字節(jié),自動(dòng)存儲(chǔ)記錄修改的時(shí)間
          year 1字節(jié),年份

          數(shù)值數(shù)據(jù)類(lèi)型

          整型

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

          上面定義的都是有符號(hào)的,當(dāng)然了,也可以加上unsigned關(guān)鍵字,定義成無(wú)符號(hào)的類(lèi)型,那么對(duì)應(yīng)的取值范圍就要翻翻了,比如:

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

          浮點(diǎn)型

          MySQL數(shù)據(jù)類(lèi)型 含義
          float(m, d) 4字節(jié),單精度浮點(diǎn)型,m總個(gè)數(shù),d小數(shù)位
          double(m, d) 8字節(jié),雙精度浮點(diǎn)型,m總個(gè)數(shù),d小數(shù)位
          decimal(m, d) decimal是存儲(chǔ)為字符串的浮點(diǎn)數(shù)

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

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

          所以,在使用浮點(diǎn)型的時(shí)候,還是要注意陷阱的,要以插入數(shù)據(jù)庫(kù)中的實(shí)際結(jié)果為準(zhǔn)。

          字符串?dāng)?shù)據(jù)類(lèi)型

          MySQL數(shù)據(jù)類(lèi)型 含義
          char(n) 固定長(zhǎng)度,最多255個(gè)字符
          varchar(n) 可變長(zhǎng)度,最多65535個(gè)字符
          tinytext 可變長(zhǎng)度,最多255個(gè)字符
          text 可變長(zhǎng)度,最多65535個(gè)字符
          mediumtext 可變長(zhǎng)度,最多2的24次方-1個(gè)字符
          longtext 可變長(zhǎng)度,最多2的32次方-1個(gè)字符

          1.char(n)和varchar(n)中括號(hào)中n代表字符的個(gè)數(shù),并不代表字節(jié)個(gè)數(shù),所以當(dāng)使用了中文的時(shí)候(UTF8)意味著可以插入m個(gè)中文,但是實(shí)際會(huì)占用m*3個(gè)字節(jié)。 2.同時(shí)char和varchar最大的區(qū)別就在于char不管實(shí)際value都會(huì)占用n個(gè)字符的空間,而varchar只會(huì)占用實(shí)際字符應(yīng)該占用的空間+1,并且實(shí)際空間+1<=n。 3.超過(guò)char和varchar的n設(shè)置后,字符串會(huì)被截?cái)唷?4.char的上限為255字節(jié),varchar的上限65535字節(jié),text的上限為65535。 5.char在存儲(chǔ)的時(shí)候會(huì)截?cái)辔膊康目崭瘢瑅archar和text不會(huì)。 6.varchar會(huì)使用1-3個(gè)字節(jié)來(lái)存儲(chǔ)長(zhǎng)度,text不會(huì)。

          其它類(lèi)型

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

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

          數(shù)據(jù)類(lèi)型屬性

          上面大概總結(jié)了MySQL中的數(shù)據(jù)類(lèi)型,當(dāng)然了,上面的總結(jié)肯定是不全面的,如果要非常全面的總結(jié)這些內(nèi)容,好幾篇文章都不夠的。下面就再來(lái)總結(jié)一些常用的屬性。

          1.auto_increment

          auto_increment能為新插入的行賦一個(gè)唯一的整數(shù)標(biāo)識(shí)符。為列賦此屬性將為每個(gè)新插入的行賦值為上一次插入的ID+1。

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

          id smallint not null auto_increment primary key
          

          2.binary

          binary屬性只用于char和varchar值。當(dāng)為列指定了該屬性時(shí),將以區(qū)分大小寫(xiě)的方式排序。與之相反,忽略binary屬性時(shí),將使用不區(qū)分大小寫(xiě)的方式排序。例如:

          hostname char(25) binary not null
          

          3.default

          default屬性確保在沒(méi)有任何值可用的情況下,賦予某個(gè)常量值,這個(gè)值必須是常量,因?yàn)镸ySQL不允許插入函數(shù)或表達(dá)式值。此外,此屬性無(wú)法用于BLOB或TEXT列。如果已經(jīng)為此列指定了NULL屬性,沒(méi)有指定默認(rèn)值時(shí)默認(rèn)值將為NULL,否則默認(rèn)值將依賴于字段的數(shù)據(jù)類(lèi)型。例如:

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

          4.index

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

          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命令在創(chuàng)建表之后增加索引:
          create index lastname on employees (lastname(7));
          

          這一次只索引了名字的前7個(gè)字符,因?yàn)榭赡懿恍枰渌帜竵?lái)區(qū)分不同的名字。因?yàn)槭褂幂^小的索引時(shí)性能更好,所以應(yīng)當(dāng)在實(shí)踐中盡量使用小的索引。

          5.not null

          如果將一個(gè)列定義為not null,將不允許向該列插入null值。建議在重要情況下始終使用not null屬性,因?yàn)樗峁┝艘粋€(gè)基本驗(yàn)證,確保已經(jīng)向查詢傳遞了所有必要的值。

          6.null

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

          7.primary key

          primary key屬性用于確保指定行的唯一性。指定為主鍵的列中,值不能重復(fù),也不能為空。為指定為主鍵的列賦予auto_increment屬性是很常見(jiàn)的,因?yàn)榇肆胁槐嘏c行數(shù)據(jù)有任何關(guān)系,而只是作為一個(gè)唯一標(biāo)識(shí)符。主鍵又分為以下兩種:

          (1)單字段主鍵

          如果輸入到數(shù)據(jù)庫(kù)中的每行都已經(jīng)有不可修改的唯一標(biāo)識(shí)符,一般會(huì)使用單字段主鍵。注意,此主鍵一旦設(shè)置就不能再修改。

          (2)多字段主鍵

          如果記錄中任何一個(gè)字段都不可能保證唯一性,就可以使用多字段主鍵。這時(shí),多個(gè)字段聯(lián)合起來(lái)確保唯一性。如果出現(xiàn)這種情況,指定一個(gè)auto_increment整數(shù)作為主鍵是更好的辦法。

          8.unique

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

          email varchar(45) unique
          

          9.zerofill

          zerofill屬性可用于任何數(shù)值類(lèi)型,用0填充所有剩余字段空間。例如,無(wú)符號(hào)int的默認(rèn)寬度是10;因此,當(dāng)“零填充”的int值為4時(shí),將表示它為0000000004。例如:

          orderid int unsigned zerofill not null
          

          總結(jié)完畢!!!



          上一篇:MySql學(xué)習(xí)心得之存儲(chǔ)過(guò)程
          下一篇:MySQL server has gone away 問(wèn)題的解決方法

          相關(guān)熱詞搜索:mysql
          主站蜘蛛池模板: 波多结衣一区二区三区| 啦啦啦手机完整免费高清观看| 人妻无码一区二区三区四区| 91香蕉视频直播| 特级毛片aaaaaa蜜桃| 国产精品亚洲二区在线播放| 久久国产成人精品国产成人亚洲| 练瑜伽的时候进入| 国产老熟女网站| 久久无码无码久久综合综合| 精品人人妻人人澡人人爽牛牛 | 亚洲欧美日韩网站| 国产真实乱偷人视频| 成人超污免费网站在线看| 亚洲欧美7777| 野花日本中文版免费观看| 夜精品a一区二区三区| 久草热久草视频| 精品xxxxxbbbb欧美中文| 国产精品免费视频网站| 中文字幕你懂的| 第一福利官方导航| 国产精品久久久久久影视| free性欧美另类高清| 欧美18videosex性欧美乱任| 又污又爽又黄的网站| 4hu永久影院在线四虎| 收集最新中文国产中文字幕| 人人爽人人爽人人片a免费| 丁香六月色婷婷| 奶大灬舒服灬太大了一进一出| 亚一亚二乱码专区| 白医生的控制欲| 国产成人tv在线观看| zooslook欧美另类最新| 最新国产你懂的在线网址| 劲爆欧美第1页婷婷| 日本视频网站在线www色| 好男人www社区视频在线| 亚洲AV无码一区二区三区网址| 狍和女人一级毛片免费的|