Mysql數(shù)據(jù)類型,校對集操作_第1頁
Mysql數(shù)據(jù)類型,校對集操作_第2頁
Mysql數(shù)據(jù)類型,校對集操作_第3頁
Mysql數(shù)據(jù)類型,校對集操作_第4頁
Mysql數(shù)據(jù)類型,校對集操作_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、校對集,collate校對集指的是字符之間的比較關(guān)系!如:a B c 三個(gè)字母如何排序?在 ASCII 碼下的排序?yàn)椋築 a c在mysql命令客戶端下,使用 order by 對結(jié)果排序,看結(jié)果:順序?yàn)?a-B-c 忽略了大小寫!但是這種順序可以被校對集改變:利用 show collation; 語句,可以查看所有的校對集校對集,依賴于字符集校對集:指的是,在某個(gè)字符集下,字符的排序關(guān)系應(yīng)該是什么,稱之為校對集!再創(chuàng)建一個(gè)utf8_bin校對集表,再對 a,B,c 進(jìn)行排序: create table collate_2 (c varchar(10) charset=utf8 co

2、llate=utf8_bin;再插入同樣的三個(gè)字母:insert into collate_2 values('a'),('B'),('c');排序結(jié)果如下:典型的后綴:_bin :二進(jìn)制編碼層面直接比較_ci :忽略大小寫比較(大小寫不敏感)_cs:大小寫第三比較MYSQL數(shù)據(jù)類型(列類型,字段類型)三大類:數(shù)值,字符串,日期時(shí)間數(shù)值整數(shù)型類型字節(jié)最小值(有符號/無符號)最大值(有符號/無符號)tinyint1-128/0127/255smallint2-32768/032767/65535mediumint3-8388608/08388607

3、/16777215int/intege4-2147483648/02147483647/4294967295bigint8-9223372036854775808/09223372036854775807/18446744073709551615如何選擇:通過業(yè)務(wù)邏輯判斷!常見的是 int , tinyint !mysql的整型,有php整型不具備的概念:1:無符號,只能表示整數(shù)或0。那么最大的整數(shù)會很大    默認(rèn)是有符號!可通過整型的 unsigned 選項(xiàng), int unsigned 設(shè)置整型無符號2:顯示寬度   &

4、#160;顯示寬度不決定整數(shù)的范圍,而決定在顯示出該數(shù)之后,如果寬度不夠,則采用前導(dǎo)零補(bǔ)齊。此時(shí)需要 zerofill 來設(shè)置如:create table type_int_3 (num int unsigned zerofill);insert into type_int_3 values (0);insert into type_int_3 values (1000);insert into type_int_3 values (1000000);可見,無符號,默認(rèn)的寬度是10,因此全都使用0來補(bǔ)齊可以設(shè)置整型的顯示寬度! int(M) 即可! M 最大為 255!M的值不決定范圍,只決定

5、顯示寬度!create table type_int_4 (num int(30) unsigned zerofill);insert into type_int_4 values (0);insert into type_int_4 values (1000);insert into type_int_4 values (1000000);注意:如果走出了寬度范圍,則直接顯示!額外的,mysql中,沒有布爾型!但存在 Boolean 這個(gè)關(guān)鍵字,表示 tinyint(1)典型的,0表示假,1表示真    小數(shù)類型類型存儲空間(字節(jié))最小值(理論)最大值

6、(理論)FLOAT4-3.402823466E+383.402823466E+38DOUBLE8-1.7976931348623157E+3081.7976931348623157E+308DECIMAL變長,大致是每9個(gè)數(shù)字,采用4個(gè)字節(jié)存儲。整數(shù)和分?jǐn)?shù)分開計(jì)算M,最大是65D,最大是30默認(rèn)是10,2-(65個(gè)9)(+65個(gè)9)單精度、雙精度默認(rèn)的有效位數(shù):在定義浮點(diǎn)數(shù)時(shí),典型的需要指明其有效位數(shù),和小數(shù)位數(shù)float(M,D);double(M,D);M:所有的有效位數(shù)D:其中的小數(shù)位數(shù)以上兩個(gè)值,決定一個(gè)浮點(diǎn)數(shù)的有效范圍!典型的浮點(diǎn)數(shù):float(10,2);注意:浮點(diǎn)數(shù)是近似值,不是

7、精確值!如果一個(gè)數(shù),很大,接近最大值,可能會出錯(cuò)一旦出現(xiàn)精確數(shù)據(jù)(小數(shù))需要保存,則要用到定點(diǎn)數(shù)。定點(diǎn)數(shù):小數(shù)點(diǎn)是固定的!decimal,與定義浮點(diǎn)數(shù)一樣,也有有效位數(shù)與小數(shù)位數(shù)的概念:decimal(M,D);不是數(shù)的形式存儲,類似于字符串的形式存儲!注意:關(guān)于小數(shù)1:支持科學(xué)計(jì)數(shù)法2:同樣支持 unsigned,無符號3:同樣支持 zerofill 字符串類型類型最大長度備注char255Char(M),M字符數(shù)varchar65535,但需要1-2個(gè)保存信息,同時(shí)由于記錄的限制,因此最大為65532編碼不同字符數(shù)不同:Gbk<=32767Utf8<=

8、21845tinyText,text,mediumText,longTextL + n。L為最大長度28+1, 216+2, 224+3, 232+4定義時(shí),通常不用指定長度,可以自己計(jì)算。enum1、2。枚舉選項(xiàng)量(65535)內(nèi)部存儲是整型表示。字段值只能是某一個(gè)set1、2、3、4、8。元素?cái)?shù)量:64binary,varbinary,blobBinary(char),varbinary(varchar),blob(text) 做類比二進(jìn)制數(shù)據(jù)(字節(jié)而非字符)char,最基本(定長)的字符串類型用于保存,長度固定的內(nèi)容!速度快,但是保存變長數(shù)據(jù)會浪費(fèi)空間varchar,可變長度的字符串用于

9、保存長度可變的數(shù)據(jù)保存變長數(shù)據(jù)時(shí),節(jié)省空間,處理起來麻煩些char(L); varchar(L)L,表示每個(gè)數(shù)據(jù)的最大長度。單位是字符數(shù)(不是字節(jié)數(shù))。L的值不多大都可以,有最大值:    1:mysql一條記錄最大值不能超過65535(255*255)個(gè)字節(jié)(字段的長度加起來,不能超過這個(gè)值)    2:長度單位是字符數(shù),與編碼是相關(guān)的         utf8編碼下一個(gè)字符占3個(gè)字節(jié)    &

10、#160;    gbk編碼下一個(gè)字符占2個(gè)字節(jié)采用單字節(jié)編碼測試下:Latin1;測試發(fā)現(xiàn),只有一個(gè)字段,而且是單字節(jié)字符集,還是不能是65535,原因是:為什么是65532呢,少了3個(gè)字節(jié):    3:由于 varchar 是變長,需要記錄下真實(shí)的數(shù)據(jù)到底有多長!每個(gè)VARCHAR類型的數(shù)據(jù)還需要額外的1個(gè)或2個(gè)字節(jié)保存真實(shí)數(shù)據(jù)的長度?。ㄈQ于真實(shí)數(shù)據(jù)的長度)     4:整條記錄還需要一個(gè)字節(jié)來保存哪些字段為 null 但是在使用時(shí),varchar如果超過25

11、5就選擇 text 來保存!text,文本,不限長度的字符串該字段,不需要指明長度,而且也不會算入到記錄的總長度內(nèi)!選擇:定長:char變長較短:255個(gè)字符之內(nèi),使用varchar變長較長:使用text枚舉,enum,單選需要在定義枚舉類型時(shí),列出哪些是可能的!在處理時(shí),類似字符串型進(jìn)行操作!意義在于:1:限定值的可能性2:速度快,比普通的字符串速度快    原因是枚舉型是利用整數(shù)進(jìn)行管理的,采用2個(gè)字節(jié)進(jìn)行管理每個(gè)值,都是一個(gè)整數(shù)標(biāo)識,從第一個(gè)選項(xiàng)開始為1,逐一遞增!管理是整數(shù)的形式,速度比普通字符串快!2個(gè)字節(jié),0-65535,因此有 65532

12、個(gè)選項(xiàng)可以使用!集合,set,復(fù)選類似于 enum 枚舉,定義時(shí),也需要指定其已有值!與字符串相比,優(yōu)勢是:1:也是采用整數(shù)進(jìn)行管理的!采用位運(yùn)算,從第一位開始為1,逐一乘22:每個(gè)集合類型8個(gè)字節(jié),64位,因此可以表示64個(gè)元素注意:站在mysql的角度,盡量多用枚舉和集合!          但是站在php操作的角度,盡量少用?。嫒菪圆睿┤掌跁r(shí)間類型datetime,日期時(shí)間。用于保存大范圍的日期時(shí)間!        &

13、#160;        在處理時(shí)使用字符串形式進(jìn)行管理create table type_datetime_1 (now datetime);insert into type_datetime_1 values ('1234-12-25 12:32:06');timestamp,時(shí)間戳常用的典型時(shí)間 ,從1970-1-1開始。占用空間少,而且是以整型的形式管理,但是以字符串形式展示create table type_timestamp_1 (now timestamp);insert into type_t

14、imestamp_1 values ('2008-8-8 20:08:08');date,日期如果只記錄日期,不記錄時(shí)間采用 date !year,年在保存年份的時(shí)候。采用一個(gè)字節(jié)保存!因此只能表示 1901-2155 年time,時(shí)間除表示時(shí)刻的概念還可以表示時(shí)間跨度!時(shí)間段的概念!create table type_time_1 (len time);insert into type_time_1 values ('16:17:20');insert into type_time_1 values ('3 16:17:20');總結(jié):1:除了 time ,表示都是時(shí)間點(diǎn)的概念!time 還表示時(shí)間跨度!2:年份的表示&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論