基於mysq欄位選擇的詳解

2022-10-04 11:42:10 字數 1793 閱讀 9922

mysql支援很多字段型別,包括數值型別、日期/時間型別和字串(字元)型別;在使用時需要考慮到儲存空間,儲存效率;

幾種列型別描述使用了下述慣例:

m表示最大顯示寬度。最大有效顯示寬度是255。

d時間型別:datetime(8bytes),timestamp(4bytes)

字元型別:

varchar(m),l+1個位元組,其中l&lwww.cppcns.comt;= m且0 <=m<= 65535,不宜把m設定得過大,因為在記憶體中會計算實際長度,這個計算時需要消耗資源的;

char(m)m個位元組,0 <= m<= 255

binary(m),m個字程式設計客棧節,0 <= m <= 255

varbinary(m),l+1個位元組,其中l <= m且0<= m <= 255

enum('value1','value2',...),1或2個位元組,取決於列舉值的個數(最多65,535個值),調整比較複雜,需要先drop在create;在列舉值小於255時,佔1個位元組,大於255時佔2個位元組;

set('value1','value2',...)1、2、3、4或者8個位元組,取決於set成員的數目(最多64個成員),1-8佔1個位元組,9-16佔2個位元組,17-24佔3個位元組,25-32佔4個位元組,33-64佔8個位元組;

整型型別:

tinyint(8),乙個位元組

smallint(16),2個位元組

mediumint(24),3個位元組

int(32),4個位元組

bigint(64),8個位元組

實型型別:

float(4bytes)

float(m,d)  單精度浮點型,精確到小數點後面6位,雙精度double(m,d)精確到小數點後面13位;

float 記憶體如何儲存

型別程式設計客棧

儲存位數

總位數

偏移值數符(s)

階碼(e)

尾數(m)

(offset)

短實數(float)

1 8

23 32

127長實數(double)

1 11

52 64

1023

float怎麼儲存

n (10) = 123.456,

換算成二進位制表示:

n (2) = 1111011. 01110100101111001

= 1. 11101101110100101111001(...) * 2^6

那麼 e = 127 + 6 = 133(10) = 10000101(2)

m = 111 0110 1110 1001 0111 1001 (省略了最高數字位1, 共23bit)

組合起來就是:

s   &nwww.cppcns.combsp;     e                       m

0        10000101     111 0110 1110 1001 0111 1001

整型型別:

decimal(m,d)佔m+2個位元組,小數點和符號需要

各自佔乙個位元組;

decimal 可能的最大取值範圍與double 一樣

,但是其有效的取值範圍由m 和d 的值決定,存程式設計客棧蓄

的方式是字串;

decimal(m,d)佔m+2個位元組,小數點和符號需要各自佔乙個位元組;

decimal 可能的最大取值範圍與double 一樣,但是其有效的取值範圍由m 和d 的值決定,存蓄的方式是字串;

本文標題: 基於mysq欄位選擇的詳解

本文位址:

sqlite的字段型別選擇

下文來自 char varchar text和nchar nvarchar ntext的區別 1 char。char儲存定長資料很方便,char欄位上的索引效率級高,比如定義char 10 那麼不論你儲存的資料是否達到了10個位元組,都要占去10個位元組的空間,不足的自動用空格填充。2 varcha...

字段型別與合理的選擇字段型別

本篇部落格稍微有點長,它實際上包括兩個內容 一是mysql欄位型別的介紹,二是在mysql建表過程中是如何正確選擇這些字段型別 mysql 的數值資料型別可以大致劃分為兩個類別,乙個是整數,另乙個是浮點數或小數。許多不同的子型別對這些類別中的每乙個都是可用的,每個子型別支援不同大小的資料,並且 my...

字段型別與合理的選擇字段型別

mysql 的數值資料型別可以大致劃分為兩個類別,乙個是整數,另乙個是浮點數或小數。許多不同的子型別對這些類別中的每乙個都是可用的,每個子型別支援不同大小的資料,並且 mysql 允許我們指定數值字段中的值是否有正負之分 unsigned 或者用零填補 zerofill mysql 以乙個可選的顯示...