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...