MySQL數值操作

2021-07-22 03:02:57 字數 3036 閱讀 7265

可以在型別名稱後面的括號中指定顯示寬度,顯示寬度就是select結果的顯示寬度,與範圍無關

顯示寬度只用於顯示,並不能限制取值範圍和占用空間

如:int(3)會占用4個位元組的儲存空間,並且允許的最大值也不會是999,而是 int整型所允許的最大值。
int(5) zerofill表示數值寬度小於5位時在數字前面填滿0;

預設情況是用空格填充,經過試驗發現空格沒有填充,所以如果不加zerofill,其實意義不大。

如不指定則int的預設寬度為int(11);

unsigned:可以用於取消符號位,如果乙個列指定為zerofill,則該列自動新增unsigned屬性。

auto_increment:這個屬性只可以用於整數型別,一般從1開始,沒新增一行自動增加1,如果插入乙個資料的auto_increment值為null,實際插入值為列中當前最大值加1。

乙個表中最多只能有一列具有auto_increment屬性。auto_increment列應定義為not null,並定義為unique或者primary key

建立帶有auto_increment的列的三種方式:

1 - create

table (id int auto_increment not

null

primary

key);

2 - create

table (id int auto_increment not

null,..other column..,primary

key(id));

3 - create

table (id int auto_increment not

null,..other column..,unique(id));

浮點數和定點數都可以用型別名加(m,d)來修飾。

其中m為數字位數(整數字+小數字),小數點後面有d位。即表示保留m位有效數字,其中小數有d位。

float(5,5)

double(5,5)

decimal(5,5)

mysql儲存值時採用了四捨五入,所以float(7,4)中插入999.00009 實際儲存為 999.0001

另外,最好不要指定float和double的精度,而是採用由實際硬體和作業系統決定的預設精度。

decimal則通常要指定精度,因為其預設值是(10,0)。

floatdouble儲存資料超過精度時會進行四捨五入。

decimal儲存超過精度時會報錯。(mysql報異常但是能四捨五入後存入)

bit型別用於存放位字段值。bit(m)可以存放多個二進位制數,m~(1,64),預設為1位;

對於bit型別的字段,直接查詢顯示乙個笑臉。

正確查詢方式:

select bin(bitcolumn),hex(bitcolumn) from tablename;
bin()hex()分別為二進位制操作與十六進製制操作。

bit型別插入時,先將值轉化為二進位制數,然後插入,如果超過位數會則插入失敗。

比如 colunma bit(1) 如果插入值為2 (10)超過限制的1位,則報錯。

日期時間型別

位元組最小值

最大值date

41000-01-01

9999-12-31

datetime

81000-01-01 00:00:00

9999-12-31 23:59:59

timestamp

41970010108001

2023年的某個時刻

time

3-838:59:59

838:59:59

year

11901

2155

這些資料型別的區別如下:

如果儲存時日期超出有效範圍,將所有位以0填充並儲存。

create

table t(time1 timestamp

notnull

default

current_timestamp,

time2 timestamp

notnull

default

'0000-00-00 00:00:00');

default用於設定該列的預設值,在插入為null時會自動設為預設值。

current_timestamp為當前的時間戳。

timestamp的另乙個特性是插入時會轉為本地時區,取出時也會轉為本地時區。

timestamp存入時,如果從後往前讀可以匹配為乙個有效時期,則補全儲存。否則存0值

now()獲取當前時間。

任何標點符號都可以作為日期部分或時間部分的分隔符。

mysql數值範圍

時間資料型別轉換為int處理更快 201204 select date format 2008 08 08 22 23 01 y m d h i s int 20 是最大的 int 30 也是int 20 預設為最大值 1.bit m 位欄位型別,m表示每個值的位數,範圍從1到64,如果m被忽略,預...

MySQL數值函式

1 ceil select ceil 4.01 output 5 ceil 函式用於向上取整 2 floor select floor 4.99 output 4 floor 函式用於向下取整 3 round select round 4.99 output 5 round 函式表示四捨五入 4 t...

mysql數值型別

通過mysql手冊對mysql的數值資料型別進行了乙個回顧,總結如下 mysql支援所有標準sql數值資料型別。這些型別包括嚴格資料型別 integer smallint decimal numeric,以及近似數值資料型別 float real double precision。關鍵字int是in...