mysql綜合學習四 列型別學習

2021-09-29 07:45:54 字數 3268 閱讀 6946

mysql三大列型別:數值型、字元型、日期型

1.1、數值型

整型tinyint、smallint、mediumint、int、bigint(m) unsigned zerofill

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

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

下面是具體的數字分析

tinyint   1個位元組   8個位     unsigned(無符號): 0 - 2^8-1 , 0-255 ; 有符號: -2^7 ----> +2^7-1

smallint  unsigned(無符號): 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,沒有任何意義.

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

1.2、小數型

float(m,d),decimal(m,d)

m叫"精度" ---->代表"總位數",而d是"標度",代表小數字.(小數右邊的位數)

浮點數占多大的空間呢

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

如果m<=24, 點4個位元組,否則佔8位元組

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

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

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

空間上的區別:

float(m,d), m<=24, 4個位元組, 24

decimal () ,變長位元組.

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

2、字串型

char(m)

varchar(m)

text

文字型別

2.1、char 定長型別

char(m)、m代表寬度,0<=m<=255之間

例如:char(10),則能輸入10個字元

2.2、varchar 變長型別

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

型別 型別 寬度 可存字實存字元(i<=m) 實佔空間 利用率

char m m i m i/m <= 100% varchar m m i i字元+(1-2)位元組 i/(i+1-2) < 100%

0000000000

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

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

char(m)如何佔據m個字元寬度?

答: 如果實際儲存內容不足m個,則後面加空格補齊.

取出來的時候, 再把後面的空格去掉.(所以,如果內容最後有空格,將會被清除).

速度上: 定長速度快些

注意: char(m),varchar(m)限制的是字元,不是位元組. 即 char(2) charset utf8, 能存2個utf8字元. 比如'中國'char與varchar型的選擇原則:

1:空間利用效率, 四字成語表, char(4), 個人簡介,微博140字, varchar(140) 2:速度 使用者名稱: char

char 與 varchar相關實驗

text : 文字型別,可以存比較大的文字段,搜尋速度稍慢. 因此,如果不是特別大的內容,建議用char,varchar來代替. text 不用加預設值 (加了也沒用).

blob,是二進位制型別,用來儲存影象,音訊等二進位制資訊. 意義: 2進製,0-255都有可能出現.blob在於防止因為字符集的問題,導致資訊丟失. 比如:一張中有0xff位元組, 這個在ascii字符集認為非法,在入庫的時候,被過濾了.

3、日期時間型別

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

時間戳:

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

一般存註冊時間,商品發布時間等,並不是用datetime儲存,而是用時間戳. 因為datetime雖然直觀,但計算不便.

python學習筆記四(列表)

列表 同構 所有的資料是相同 異構 所有的資料型別不同 建立列表 1.建立乙個普通列表 1,2,3 2.建立混合列表 1,2,3,hehe 1,2,3 3.建立空列表 4.利用工廠函式建立 list 建立空列表 list iterable 從可迭代物件的元素中初始化乙個新的列表 可迭代物件 列表的長...

Python學習手札(四)列表 元組

python是一種通用程式語言,我們用它來執行機器學習。簡單資料型別 列表就是個有序集合,沒有固定大小。元素1,元素2,元素3,元素n 中括號將所有元素括在一起,逗號將每個元素分開。可以直接建立乙個普通列表,也可以通過range 函式建立 用推導式建立。x a b c d g print x a b...

python型別學習

核心筆記 布林值 下列物件的布林值是false。標準型別的內建函式 cmp repr str type 標準型別的分類 一句話概括標準型別 基本內建資料物件原始型別 1.儲存模型 儲存模型 分類python型別 標量 原子模型 數值,字串 容器型別 列表,元祖,字典 2.更新模型 更新模型 分類py...