下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、mysql數(shù)據(jù)類型與sqlyog中屬性值的含義MySQl數(shù)據(jù)庫(kù)的表是一個(gè)二維表,由一個(gè)或多個(gè)數(shù)據(jù)列構(gòu)成。每個(gè)數(shù)據(jù)列都有它的特定類型,該類型決定了 MySQl如何看待該列數(shù)據(jù),我們可以把整型數(shù)值存放到字符類型的列中,MySQL那么會(huì)把它看成字符串來處理。MySQL中的列類型有三種:數(shù)值類、字符串類和日期/時(shí)間類。從大類來看列類型和數(shù)值類型一樣,都是只有三種。但每種列類型都還可細(xì)分。下面對(duì)各種列類型進(jìn)行詳細(xì)介紹。數(shù)值類的數(shù)據(jù)列類型數(shù)值型的列類型包括整型和浮點(diǎn)型兩大類。TINYINT: 1字節(jié) 非常小的正整數(shù),帶符號(hào):-128127,不帶符號(hào):0255 SMALLINT 2 字節(jié) 小整數(shù),帶符號(hào):-
2、3276832767 ,不帶符號(hào):065535 MEDIUMINT 3字節(jié) 中等大小的整數(shù),帶符號(hào):-83886088388607,不帶符號(hào):016777215 INT: 4字節(jié) 標(biāo)準(zhǔn)整數(shù),帶符號(hào):-21474836482147483647,不帶符號(hào):04294967295 BIGINT : 81!L字節(jié) 大整數(shù),帶符號(hào):-0807,不帶符號(hào):0615 FLOAT 4字節(jié) 單精度浮點(diǎn)數(shù),最小非零值:+-1.175494351E-38,最大非零值:+-3.402823466E+38 DOUBLE 8 字節(jié) 雙精度浮點(diǎn)數(shù),最小非零值:+-2.72021E-308,最大非零值:+-1.23157E+
3、308 DECIMAL M+2字節(jié)以字符串形式表示的浮點(diǎn)數(shù),它的取值圍可變,由M和D的值決定。整型數(shù)據(jù)列類型MySQ有五種整型數(shù)據(jù)列類型,即TINYINT, SMALLINT MEDIUMINT INT和BIGINT。它們之間的區(qū)別是取值圍不同,存儲(chǔ)空間也各不相同。在整型數(shù)據(jù)列后加上 UNSIGNED!性可以禁止負(fù)數(shù),取值從 0開始。聲明整型數(shù)據(jù)列時(shí),我們可以為它指定個(gè)顯示寬度M(1255),如INT(5),指定顯示寬度為 5個(gè)字符,如果沒有給它指定顯示寬度,MySQL會(huì)為它指定一個(gè)默認(rèn)值。顯示寬度只用于顯示,并不能限制取值圍和占用空間,女如: INT(3)會(huì)占用4個(gè)字節(jié)的存儲(chǔ)空間,并且允許的
4、最大值也不會(huì)是999,而是INT整型所允許的最大值。例如如果int的值為10 int (10)顯示結(jié)果為0000000010int (3)顯示結(jié)果為010就是顯示的長(zhǎng)度不一樣而已 都是占用四個(gè)字節(jié)的空間浮點(diǎn)型數(shù)據(jù)列類型MySQL有三種浮點(diǎn)型數(shù)據(jù)列類型,分別是:FLOAT DOUBLED DECIMAL 浮點(diǎn)類數(shù)據(jù)類型有一個(gè)最大可表示值和一個(gè)最小非零可表示值,最小非零可表示值決定了該類型的精確度。版之后,F(xiàn)LOAT和DOUBLED可以指定UNSIGNE囑性。當(dāng)指定該屬性時(shí),取值圍不平移到正數(shù)區(qū)間,而只是簡(jiǎn)單地把浮點(diǎn)類型的負(fù)數(shù)部份去掉。浮點(diǎn)類型也有 M(1255)和D(130,且不能大于 M-2)
5、。分別表示顯示寬度和小數(shù)位數(shù)。M和D在FLOAT和DOUBLE是可選的,默認(rèn),當(dāng) MySQL版本大于時(shí),F(xiàn)LOAT和DOUBLE類型將被保存為硬件所支持的最大精度。DECIMAL的M和D值在后可選,默認(rèn)D值為0,M值為10。如何選擇數(shù)值類數(shù)據(jù)列類型?為了節(jié)省存儲(chǔ)空間和提高數(shù)據(jù)庫(kù)處理效率,我們應(yīng)根據(jù)應(yīng)用數(shù)據(jù)的取值圍來選擇一個(gè)最適合的數(shù)據(jù)列類型。如果把一個(gè)超出數(shù)據(jù)列取值圍的數(shù)存入該列,那么MySQL就會(huì)截短該值,如:我們把99999存入SMALLINT(3)數(shù)據(jù)列里,因?yàn)?SMALLINT(3)的取值圍是-3276832767,所以 就會(huì)被截短成32767存儲(chǔ)。顯示寬度3不會(huì)影響數(shù)值的存儲(chǔ)。 只影
6、響顯示。 對(duì)于浮點(diǎn)數(shù)據(jù) 列,存入的數(shù)值會(huì)被該列定義的小數(shù)位進(jìn)行四舍五入。如把一個(gè)1.234存入FLOAT(6.1)數(shù)據(jù)列中,結(jié)果是1.2。 DECIMAL與 FLOAT和 DOUBLE勺區(qū)別是:DECIMAL類型的值是以字符 串的形式被儲(chǔ)存起來的,它的小數(shù)位數(shù)是固定的。它的優(yōu)點(diǎn)是,不會(huì)象FLOAT和DOUBLED型數(shù)據(jù)列那樣進(jìn)行四舍五入而產(chǎn)生誤差,所以很適合用于財(cái)務(wù)計(jì)算;而它的缺點(diǎn)是:由于它的存儲(chǔ)格式不同,CPU不能對(duì)它進(jìn)行直接運(yùn)算,從而影響運(yùn)算效率。DECIMAL(M D)總共要占用M+2個(gè)字節(jié)。數(shù)值類數(shù)據(jù)列的屬性ZEROFILL屬性適用于所有數(shù)值類數(shù)據(jù)列類型,作用是,如果數(shù)值的寬度小于定義
7、的顯示寬度,那么在數(shù)值前填充0。UNSIGNED!性不允許數(shù)據(jù)列出現(xiàn)負(fù)數(shù)。AUTO_INCREMEN屬性可生成獨(dú)一無二的數(shù)字序列。只對(duì)整數(shù)類的數(shù)據(jù)列有效。NULL和NOT NULL屬性設(shè)置數(shù)據(jù)列是否可為空。DEFAUL矚性可為數(shù)據(jù)列指定XT默認(rèn)值。/字符串類數(shù)據(jù)列類型 字符串可以用來表示任何一種值,所以它是最根本的類型之一。我們可以用字符串類型來存儲(chǔ)圖象或聲音之類的二進(jìn)制數(shù)據(jù),也可存儲(chǔ)用gzip壓縮的數(shù)據(jù)。下表介紹了各種字符串類型:CHAR(M) M字節(jié) M字節(jié) VARCHAR(M) M字節(jié)L+1字節(jié) TINYBLODTINYTEXT 2A8-1 字節(jié) L+1 字節(jié) BLOB TEXT 2A1
8、6-1 字節(jié) L+2 MEDIUMBLQBMEDIUMTE:2A24-1 字節(jié) L+3 LONGBLOBLONGTEXT 2人32-1 字節(jié) L+4 ENUM('value1','value2',.J65535 個(gè)成員 1 或 2 字節(jié) SET('value1','value2',.J 64個(gè)成員 1,2,3,4 或 8 字節(jié) L+1、L+2是表示數(shù)據(jù)列是可變長(zhǎng)度的,它占用的空間會(huì)根據(jù)數(shù)據(jù)行的增減面那么改變。數(shù)據(jù)行的總長(zhǎng)度取決于存放在這些數(shù)據(jù)列里的數(shù)據(jù)值的長(zhǎng)度。L+1或L+2里多出來的字節(jié)是用來保存數(shù)據(jù)值的長(zhǎng)度的。在對(duì)長(zhǎng)度可變的數(shù)
9、據(jù)進(jìn)行處理時(shí),MySQl要把數(shù)據(jù)容和數(shù)據(jù)長(zhǎng)度都保存起來。如果把超出字符串最大長(zhǎng)度的數(shù)據(jù)放到字符類數(shù)據(jù)列中,MySQL會(huì)自動(dòng)進(jìn)行截短處理。ENUM和 SET類型的數(shù)據(jù)列定義里有一個(gè)列表,列表里的兀素就是該數(shù)據(jù)列的合法取值。如果試圖把一個(gè)沒有在列表里的值放到數(shù)據(jù)列里,它會(huì)被轉(zhuǎn)換為空字符串(“)。字符串類型的值被保存為一組連續(xù)的字節(jié)序列,并會(huì)根據(jù)它們?nèi)菁{的是二進(jìn)制字符串還是非二進(jìn)制字符而被區(qū)別對(duì)待為字節(jié)或者字符:二進(jìn)制字符串被視為一個(gè)連續(xù)的字節(jié)序列,與字符集無關(guān)。MySQL把 BLOB數(shù)據(jù)列和帶 BINARY屬性的CHAR和VARCHA數(shù)據(jù)列里的數(shù)據(jù)當(dāng)作二進(jìn)制值。非二進(jìn)制字符串被視為一個(gè)連續(xù)排列的字
10、符序列。與字符集有關(guān)。MySQL把 TEXT列與不帶BINARY屬性的CHAR和 VARCHA數(shù)據(jù)列里的數(shù)據(jù)當(dāng)作二進(jìn)制值對(duì)待。 在MySQL4.1以后的版本中,不同的數(shù)據(jù)列可以使用不同的字符集。在MySQL4.1版本以前,MySQL用效勞器的字符集作為默認(rèn)字符集。非二進(jìn)制字符串,即我們通常所說的字符串,是按字符在字符集中先后次序進(jìn)行比擬和排序的。而二進(jìn)制字符串因?yàn)榕c字符集無關(guān),所以不以字符順序排序,而是以字節(jié)的二進(jìn)制值作為比擬和排序的依據(jù)。下面介紹兩種字符串的比擬方式:二進(jìn)制字符串的比擬方式是一個(gè)字節(jié)一個(gè)字節(jié)進(jìn)行的,比擬的依據(jù)是兩個(gè)字節(jié)的二進(jìn)制值。也就是說它是區(qū)分大小寫的,因?yàn)橥粋€(gè)字母的大小
11、寫的數(shù)值編碼是不一樣的。非二進(jìn)制字符串的比擬方式是一個(gè)字符一個(gè)字符進(jìn)行的,比擬的依據(jù)是兩個(gè)字符在字符集中的先后順序。在大多數(shù)字符集中,冋一個(gè)字母的大小寫往往有著相冋的先后順序,所以它不區(qū)分大小寫。二進(jìn)制字符串與字符集無關(guān),所以無論按字符計(jì)算還是按字節(jié)計(jì)算,二進(jìn)制字符串的長(zhǎng)度都是一樣的。所以VARCHAR(20并不表示它最多能容納 20個(gè)字符,而是表示它最多只能容納可以用20個(gè)字節(jié)表示出來的字符。對(duì)于單字節(jié)字符集,每個(gè)字符只占用一個(gè)字節(jié),所以這兩者的長(zhǎng)度是一樣的,但對(duì)于多字節(jié)字符集, 它能容納的字符個(gè)數(shù)肯定少于20個(gè)。CHAR和VARCHAR CHAF和VARCHA是最常用的兩種字符串類型,它們
12、之間的區(qū)別是:CHAR是固定長(zhǎng)度的,每個(gè)值占用相冋的字節(jié),不夠的位數(shù)MySQL會(huì)在它的右邊用空格字符補(bǔ)足。VARCHA是一種可變長(zhǎng)度的類型,每個(gè)值占用其剛好的字節(jié)數(shù)再加上一個(gè)用來記錄其長(zhǎng)度的字節(jié)即L+1字節(jié)。CHAR(O)和VARCHAR(0都是合法的。VARCHAR(O)是從版開始的。它們的作用是作為占位符或用來表示各種on/off開關(guān)值。女口何選擇CHAR和 VARCHA,這里給出兩個(gè)原那么:如果數(shù)據(jù)都有相同的長(zhǎng)度,選用VARCHAR會(huì)多占用空間,因?yàn)橛幸晃挥脕泶鎯?chǔ)其長(zhǎng)度。如果數(shù)據(jù)長(zhǎng)短不一,選用VARCHA能節(jié)省存儲(chǔ) 空間。而CHAF不管字符長(zhǎng)短都需占用相同的空間,即使是空值也不例外。如果
13、長(zhǎng)度出入不大,而且是使用 MylSAM或ISAM類型的表,那么用 CHAR會(huì)比 VARCHA好,因?yàn)?MylSAM和 ISAM類型的表對(duì)處理固定長(zhǎng)度的行的效率高。在一個(gè)數(shù)據(jù)表里,只要有一個(gè)數(shù)據(jù)列的長(zhǎng)度是可變的,那么所有數(shù)據(jù)列的長(zhǎng)度將是可變的。MySQL會(huì)進(jìn)行自動(dòng)地轉(zhuǎn)換。一個(gè)例外,CHAR長(zhǎng)度小于4的不會(huì)進(jìn)行自動(dòng)轉(zhuǎn)換,因?yàn)镸ySQL會(huì)認(rèn)為這樣做沒必要,節(jié)省不了多少空間。反 而MySQl會(huì)把大量長(zhǎng)度小的 VARCHA轉(zhuǎn)換成CHAR以減少空間占用量。BLOB和TEXT BLOB是二進(jìn)制字符串,TEXT是非二進(jìn)制字符串。兩者都可存放大容量的信息。有關(guān)BLOB和TEX'TT索引的建立:BDB表類
14、型和 以上版本的 MylSAM表類型允許在 BLOB和TEX'數(shù)據(jù)列上建立索引。ISAM、HEAP和InnoDB表不支持大對(duì)象列的索引。使用BLOB和 TEX'T應(yīng)注意的問題:由于這兩個(gè)列類型所存儲(chǔ)的數(shù)據(jù)量大,所以刪除和修改操作容易在數(shù)據(jù)表里產(chǎn)生大量的碎片,需定期運(yùn)行OPTIMIZE TABLE以減少碎片和提高性能。如果使用的值非常巨大,就需對(duì)效勞器進(jìn)行相應(yīng)的優(yōu)化調(diào)整,增加max_allowed_packet參數(shù)的值。對(duì)那MM些可會(huì)用到變些巨大數(shù)據(jù)的客戶程序,也需加大它們的數(shù)據(jù)包大小。ENUM和SET ENU和SET都是比擬特殊的字符串?dāng)?shù)據(jù)列類型,它們的取值圍是一個(gè)預(yù)先定義好的
15、列表。ENU或SET數(shù)據(jù)列的取值只能從這個(gè)列表中進(jìn)行選擇。ENUM和 SET的主要區(qū)別是:ENUM只能取單值,它的數(shù)據(jù)列表是一個(gè)枚舉集合。它的合法取值列表最多允許有 65535個(gè)成員。例如:ENUM("N","Y")表示,該數(shù)據(jù)列的取值要么是 "Y",要么就是"N"。SET可取多值。它的合法取值列表最多允許有 64個(gè)成員??兆址彩且粋€(gè)合法的SET值。ENUM和 SET的值是以字符串形式出現(xiàn)的,但在部,MySQL以數(shù)值的形式存儲(chǔ)它們。ENUM勺合法取值列表中的字符串被按聲明定義的順序被編號(hào),從1開始。SET的編號(hào)
16、不是按順序進(jìn)行編號(hào)的,SE'T中每一個(gè)合法取值都對(duì)應(yīng)著 SET值里的一個(gè)位。第一個(gè)合法取值對(duì)應(yīng) 0位,第二個(gè)合法取值對(duì)應(yīng)1位,以此類推,如果數(shù)值形式的SET值等于0,那么說明它是一個(gè)空字符串,如果某個(gè)合法的取值出現(xiàn)在 SET數(shù)據(jù)列里,與之對(duì)應(yīng)的位就會(huì)被置位;如果某個(gè)合法的取值沒有出現(xiàn)在SET數(shù)據(jù)列里,與之對(duì)應(yīng)的位就會(huì)被清零。正因?yàn)镾ET值與位有這樣的對(duì)應(yīng)關(guān)系,所以SET數(shù)據(jù)列的多個(gè)合法取值才能冋時(shí)出現(xiàn)并構(gòu)成SET值。字符串類型數(shù)據(jù)列的字符集屬性 在MySQL 4.1以前的版本,字符串?dāng)?shù)據(jù)列的字符集由效勞器的字符決定,MySQL 4.1版以后的版本可對(duì)每個(gè)字符串?dāng)?shù)據(jù)列指定不冋的字符串。如
17、果按默認(rèn)方式設(shè)置,可按數(shù)據(jù)列、數(shù)據(jù)表、數(shù)據(jù)庫(kù)、效勞器的順序關(guān)聯(lián)字符串的字符集,直到找一個(gè)明確定義的字符集。/日期,時(shí)間型數(shù)據(jù)列類型 DATE 1000-01-019999-12-313 字節(jié)(MySQL3.23 版以前是 4 字節(jié) )0000-00-00 TIME -838:59:59838:59:593 字節(jié) 00:00:00 DATETIME 1000-01-0100:00:009999-12-31 23:59:59 8字節(jié) 0000-00-00 00:00:00TIMESTAMP 0002037年的!LIEIE某個(gè)時(shí)刻 4 字節(jié) 000 YEARYEAR(4): 19012155 YEA
18、R(2): 19702069 1 字節(jié) 0000 MySC總是把日期和日期里的年份放在最前面,按年月日的順序顯示。DATE TIME、DATATIM數(shù)據(jù)列類型DATE TIME和DATATIME類型分別存放日期值、時(shí)間值、日期和時(shí)間值的組合。它們的格式分別是“ CCYY-MM-DD、 “hh:mm:ss、 “CCYYMMDDhh:mm:ss。DATATIM里的時(shí)間值和 TIME值是有區(qū)別的,DATATIME1的時(shí)間值代表的是幾點(diǎn)幾分,TIME值代表的是所花費(fèi)的時(shí)間。當(dāng)向TIME數(shù)據(jù)列插值時(shí),需用時(shí)間的完整寫法,如12分30秒要寫成“00:12:30 。TIMESTAMPS據(jù)列類型TIMESTAMPS據(jù)列的格式是 CCYYMMDDhhmms取值圍從000開始,即1970年1月1號(hào),最大到2037年。它的特點(diǎn)是能把
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版塔吊租賃與驗(yàn)收及付款合同3篇
- 二零二五版科技公司股份交易與反壟斷合規(guī)合同3篇
- 二零二五年度共享辦公空間租賃與服務(wù)合同2篇
- 二零二五年度咖啡廳高品質(zhì)咖啡豆供應(yīng)合同3篇
- 2025年度個(gè)人向科技公司借款合同2篇
- 二零二五年度商業(yè)街區(qū)臨時(shí)攤位租賃及管理服務(wù)合同2篇
- 2025年度“銷售合同”英文翻譯與海外市場(chǎng)品牌推廣合作框架3篇
- 2025年度木地板施工安全與質(zhì)量責(zé)任合同4篇
- KTV員工勞動(dòng)合同范本
- 2025年度煤礦井巷工程應(yīng)急救援預(yù)案編制合同
- 2023-2024學(xué)年度人教版一年級(jí)語文上冊(cè)寒假作業(yè)
- 人教版語文1-6年級(jí)古詩(shī)詞
- 上學(xué)期高二期末語文試卷(含答案)
- GB/T 18488-2024電動(dòng)汽車用驅(qū)動(dòng)電機(jī)系統(tǒng)
- 投資固定分紅協(xié)議
- 高二物理題庫(kù)及答案
- 職業(yè)發(fā)展展示園林
- 七年級(jí)下冊(cè)英語單詞默寫表直接打印
- 2024版醫(yī)療安全不良事件培訓(xùn)講稿
- 中學(xué)英語教學(xué)設(shè)計(jì)PPT完整全套教學(xué)課件
- 移動(dòng)商務(wù)內(nèi)容運(yùn)營(yíng)(吳洪貴)項(xiàng)目五 運(yùn)營(yíng)效果監(jiān)測(cè)
評(píng)論
0/150
提交評(píng)論