mysql基礎之基礎資料型別 (Elementary Data Type)

來源:互聯網
上載者:User

標籤:style   blog   http   color   ar   sp   strong   資料   div   

原文: mysql基礎之基礎資料型別 (Elementary Data Type)


列類型學習

mysql三大列類型

整型

 Tinyint/ smallint/ mediumint/int/ bigint(M) unsigned zerofill

字串型 

Char(M)

Varchar(M)

Text 文本類型

 

日期時間類型

Date 日期

Time 時間

Datetime 時間時間類型

Year 年類型


整形:

整型系列所佔位元組與儲存範圍的關係.

定性: 占位元組越多,儲存範圍越大.

: 是具體的數字分析

 

Tinyint 1個位元組 8個位  0 - 2^8-1  ,  0-255

                -2^7 ----> +2^7-1

 

 

分析:

Smallint 2個位元組 , 16位  0----2^16-1 = 65535

                -2^15 ---> +2^15-1, -32768 -> 32767

 

一般而言,設某類型 N位元組

N位元組 , 8N位.

0 ----> 2^8N-1

 

-2^(8N-1)  ---> +2^(8N-1) -1; 

 

對於int型 : 占的位元組越多,儲存的範圍也越大.


整型系統的選擇性參數 : XXint(M)  unsigned zerofill

例: age tinyint(4) unsigned ,或者  stunum smallint(6) zerofill;

Unsigned: 代表此列為無符號類型, 會影響到列的儲存範圍. (範圍從0開始)

(不加unsinged, 則該列預設是有符號類型,範圍從負數開始)

 

 

 

Zerofill: 代表0填充, 即: 如果該數字不足參數M位, 則自動補0, 補夠M位.

1: 如果沒有zerofill屬性, 單獨的參數M,沒有任何意義.

2:如果設定某列為zerofill,則該列已經預設為 unsigned,無符號類型.



小數型

 

Float(M,D),decimal(M,D)

  M叫"精度" ---->代表"總位元",而D是"標度",代表小數位.(小數右邊的位元)

 

 

浮點數佔多大的空間呢

答: float 能存10^38 ,10^-38

如果M<=24, 點4個位元組,否則占8位元組

 

用來表示資料中的小數,除了float---浮點.

還有一種叫定點decimal,定點是把整數部分, 和小數部分,分開儲存的.

比float精確,他的長度是變化的.

 

 

 

空間上的區別:

Float(M,D), M<=24, 4個位元組, 24 <M <=53, 8個位元組

Decimal () ,變長位元組.

 

區別: decimal比float精度更高, 適合儲存貨幣等要求精確的數字,

見下例:




字串性:

Mysql 字串類型

Char 定長類型

Char(M)  , M 代表寬度, 0<=M<=255之間

例:Char(10)  ,則能輸入10個字元.

 

Varchar 變長類型

Varchar(M), M代表寬度, 0<=M<=65535(以ascii字元為例,utf822000左右)

0000000000

00\0\0\0\0\0 (char型,如果不夠M個字元,內部用空格補齊,取出時再把右側空格刪掉)  

注:這意味著,如果右側本身有空格,將會丟失.

通過concat函數可以驗證!

M 代表字元長度,和是否是漢字和字母無關。

Blob,是二進位類型,用來儲存映像,音頻等二進位資訊.

意義: 2進位,0-255都有可能出現.

Blob在於防止因為字元集的問題,導致資訊丟失.

比如:一張圖片中有0xFF位元組, 這個在ascii字元集認為非法,在入庫的時候,被過濾了.

enum選擇一個,set選擇多個


日期時間類型

Year 年(1位元組)    95/1995,  [1901-2155],

在insert時,可以簡寫年的後2位,但是不推薦這樣.

[00-69] +2000

[70-99] + 1900,   

即: 填2位,表示 1970 - 2069

 

Date 日期  1998-12-31

範圍: 1000/01/01 ,9999/12/31

 

Time 時間  13:56:23

範圍: -838:59:59 -->838:59:59


datetime 時期時間  1998-12-31 13:56:23

範圍: 1000/01//01 00:00:00  ---> 9999:12:31 23:59:59

 

timestamp

 

時間戳記: 

是1970-01-01 00:00:00 到當前的秒數. 

一般存註冊時間,商品發布時間等,並不是用datetime儲存,而是用時間戳記.

因為datetime雖然直觀,但計算不便.



mysql基礎之基礎資料型別 (Elementary Data Type)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.