20141230 mysql數實值型別和列屬性一

來源:互聯網
上載者:User

標籤:基礎知識   預設   display   比較   原因   注意   填充   磁碟空間   左右   

回顧

資料庫基礎知識,關係型資料庫(行/記錄,列/欄位,SQL)

基本SQL操作:庫操作,表操作(欄位)和資料操作

字元集

校對集

1. 什麼是校對集?

校對集就是指在同樣的字元集下的資料按照什麼樣的方式進行比較,比較的規範的集合就叫校對集。

校對集分類

_bin:二進位比較,區分大小寫

_ci:case insensitive,大小寫不敏感,不區分大小寫

_cs:case sensitive,大小寫敏感,區分大小寫

查看資料庫所支援的校對集有哪些

show collation;

一共有197種校對集

校對集的實現:在建立資料表(庫)的時候指定校對集:collate = 校對集

插入資料

校對集的使用:在需要對資料進行比較的時候會自動的啟用

對資料進行排序的時候一定會用到校對集。

文法:在where條件之後,使用order by 要排序的欄位 [asc|desc]

asc:升序,是預設的

desc:降序

雖然中文也可以比較,但是沒有比較的意義,gbk支援中文比較,utf8不支援,gbk比較的並不是中文本身,只能比拼音。

結論:一張表的校對集應該在建立表的時候就指定,而不能在表已經存在的情況下(資料)再去嘗試修改校對集,修改無效。

亂碼問題解決

出現亂碼的原因:兩個資料存在的字元集不一致。

理想的解決方案:三碼合一

儲存引擎

mysql提供了很多的儲存引擎可以選擇,但是常用的是myisam和InnoDB,因為這兩個免費。

全部儲存引擎

5.5以前的儲存引擎預設的是myisam,5.5之後都是InnoDB了。

甲骨文收購sun之後得到mysql就不再對myisam儲存引擎進行支援人員,把所有團隊都用來支援InnoDB

InnoDB和myisam區別

1. 檔案的儲存形式不一樣

2. myisam的批量插入和查詢效率高,而InnoDB的修改和刪除效率高

3. 事務安全只有InnoDB支援,myisam不支援

4. InnoDB支援外鍵,myisam不支援

欄位(列)類型

1. 什麼是欄位類型?

所謂的欄位類型指的是當前欄位所能儲存的資料的類型

SQL語言是一種強型別語言,所以必須在表建立的時候,給欄位指定對應的資料類型,而且在資料存放區的時候,只能儲存的指定的資料類型。

資料類型分類

在SQL中,資料類型同樣分為三類:數值型,字串型,日期時間型

數值型:整型,小數型(浮點型和定點型)

字串型:定長,不定長,文本,集合,枚舉

日期時間型:時間日期,日期,時間,年,時間戳記

s

數值型 整型

存放整數的資料類型。生活中有不同的需求來使用不同範圍內的整型,而SQL就需要根據不同的需求來設定不同的整型(分配不同記憶體)來記錄,提高空間的利用率。

整型分為以下五種

tinyint:迷你整型,1一個位元組儲存,最多256個資料

smallint:小整型,2個位元組儲存,最多65536個資料

mediumint:中整型,3個位元組儲存

int:標準整型,4個位元組儲存

bigint:大整型,8個位元組儲存

建立整形表

插入資料

在SQL中,數值資料預設的都是有符號的,所以有正負之分,應該將資料一分為二

類型

位元組

最小值(有符號/無符號)

最大值(有符號/無符號)

TINYINT

1

-128/0

127/255

SMALLINT

2

-32768/0

32767/65535

MEDIUMINT

3

-8388608/0

8388607/16777215

INT/INTEGE

4

-2147483648/0

2147483647

/4294967295

BIGINT

8

-9223372036854775808/0

9223372036854775807/18446744073709551615

無符號

文法:在資料類型之後,使用unsigned關鍵字

查看資料結構

要做到不改變原來數值大小的情況下,只能在資料的左邊進行0填充

預設的系統不會自動的使用0填充,需要根據指令進行0填充,zerofill

文法:資料類型之後 zerofill

效果

顯示寬度注意事項

小數型

浮點型:有可能丟失精度的小數型

float:單精確度浮點型,7個精確值左右

double:雙精確度浮點型,15位左右

浮點型使用文法

欄位 float/float(M,D)

M表示整個長度,D表示小數部分的長度

建立表

插入資料

浮點數資料查詢:系統會自動丟失精度之後的所有資料,四捨五入

浮點數的應用:如果資料量特別大但是對精度要求不高的資料才會使用浮點型。

定點型

在指定範圍內不會丟失精度的小數。

文法:decimal(M,D),M總長度,D小數部分長度

定點型應用

字串類型

字串類型分為:定長字串,變長字串,文本字串,集合字串和枚舉類型

定長字串

定長指的是磁碟所分配的空間是固定長度的儲存空間,但是裡面儲存的資料可以沒有空間長。

定長:char

文法:欄位名 char(L),L表示可以儲存的字元長度,定長的L長度最大值是255

變長字串

變長指的是磁碟會根據實際儲存的內容來進行磁碟空間的分配。

變長:varchar

文法:欄位名 varchar(L),L表示可以儲存的字元長度,L的最大值理論上是65535,因為varchar是變長,所以真實儲存的資料的長度不可得知,所以任何變長資料都需要開闢額外的1或2個位元組來儲存資料的長度。

定長與變長對比:utf8

字串

Char(4)

Varchar(4)

Char實際位元組長度

Varchar實際位元組長度

A

A

A

4 * 3(utf8) = 12

1 * 3(utf8) + 1 = 4

ABCD

ABCD

ABCD

4 * 3(utf8) = 12

4 * 3(utf8) + 1 = 13

         
         

定長和變長的應用

1. 長度固定的較小的字串使用定長,手機號,身份證,md5加密等

2. 長度不固定的較小的字串使用變長,姓名,籍貫,家庭住址等

3. 如果字串長度較長(通常超過255個字元)使用檔案字串

定長與變長的優劣

1. 定長:浪費空間,但是讀取效率高

2. 變長:節省空間的,但是效率降低

在wamp中,mysql使用的精簡模式,不是使用strict 模式來約束資料,但是獨立安裝的mysql使用的strict 模式。

區別

1. 錯誤處理方式不一樣:精簡模式下,如果出現錯誤,系統會嘗試去減少錯誤代價(資料太長進行截取),在strict 模式下,直接報錯。

2. 對於Null 字元串的處理不一樣:主鍵自增長的時候

文本字串

文本字串分為兩種:字元型文本,二進位文本

文本字串:text

二進位字串:blob

圖片或者檔案等都可以進行儲存,但是不建議直接儲存,而是儲存對應的檔案的位置(路徑)

一般認為超過255個字元的資料都使用文本字串來進行儲存。

20141230 mysql數實值型別和列屬性一

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.