日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql @符号_MySQL 数值类型

發布時間:2025/3/15 数据库 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql @符号_MySQL 数值类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊關注,我們共同每天進步一點點!

1 整數類型

   整數類型包含TINYINT、SMALLINT、MEDIUMINT、INT BIGINT等

1 存取范圍

m為其顯示寬度,在為字段設置 zerofill約束條件時有效,否則將不會填充滿整個顯示寬度。

2 可選約束

   unsigned:使用無符號存儲

   zerofill:顯示寬度不夠時使用0進行填充

3 顯示寬度

   使用一切數值類型時,指定其寬度均是為其指定顯示寬度,并非存入的限制寬度。

   以下示例將演示為INT類型設置設置了顯示寬度后,當寬度不夠時將以指定字符進行填充。

mysql>?create?table?temp?(num?int(5)?unsigned?zerofill);??#?創建temp表,顯示寬度為5,有num字段,無符號整型,使用0進行寬度填充
Query?OK,?0?rows?affected?(0.03?sec)

mysql>?insert?into?temp?(num)?values
????->?????????(1),
????->?????????(9999999);
Query?OK,?2?rows?affected?(0.00?sec)
Records:?2??Duplicates:?0??Warnings:?0

mysql>?select?*?from?temp;
+---------+
|?num?????|
+---------+
|???00001?|??#?當顯示寬度不夠時使用0進行填充
|?9999999?|??#?由于指定的寬度是顯示寬度,故該數值也能存入,這與存儲寬度無關
+---------+
2?rows?in?set?(0.00?sec)

4 范圍超出

   當范圍超出默認值時,將會按照最大值或最小值進行存入。

   以下示例將演示TINYINT類型無符號存入-1與256后將會按照0與255進行存儲。

MySQL5.7.30版本中這樣的操作將會拋出異常
但是在MySQL5.6.X版本中這樣的操作是被允許的(非嚴格模式下)

mysql>?create?table?temp(num?tinyint);
mysql>?insert?into?temp(num)?values
????->?(-129),
????->?(128);
mysql>?select?*?from?temp;
+------+
|?temp?|
+------+
|?-128?|?#-129存成了-128
|??127?|?#128存成了127
+------+

2 浮點類型

   浮點類型包括FLOAT、DOUBLE、DECIMAL

1 存取范圍

m為其整數部分顯示個數,n為其小數部分顯示個數。
DECIMAL底層由字符串進行存儲,故精度不會出現偏差,也被稱為定點類型。

2 精度問題

   根據不同的需求,應當使用不同的浮點類型進行存儲,一般來說使用FLOAT足以,但是對于一些精度非常高的數據則應該使用DECIMAL類型進行存儲。

   以下示例將演示使用不同的浮點類型進行值存儲時會發生精度問題。

mysql>?create?table?t1(num?float(255,30));??#?指定顯示寬度
Query?OK,?0?rows?affected?(0.05?sec)

mysql>?create?table?t2(num?double(255,30));?#?指定顯示寬度
Query?OK,?0?rows?affected?(0.03?sec)

mysql>?create?table?t3(num?decimal(65,30));?#?指定顯示寬度
Query?OK,?0?rows?affected?(0.03?sec)

mysql>?insert?into?t1(num)?values(1.11111111111111111);
Query?OK,?1?row?affected?(0.00?sec)

mysql>?insert?into?t2(num)?values(1.11111111111111111);
Query?OK,?1?row?affected?(0.02?sec)

mysql>?insert?into?t3(num)?values(1.11111111111111111);
Query?OK,?1?row?affected?(0.00?sec)

mysql>?select?*?from?t1;??#?點后7位以內
+----------------------------------+
|?num??????????????????????????????|
+----------------------------------+
|?1.111111164093017600000000000000?|
+----------------------------------+
1?row?in?set?(0.00?sec)

mysql>?select?*?from?t2;??#?點后15位以內
+----------------------------------+
|?num??????????????????????????????|
+----------------------------------+
|?1.111111111111111200000000000000?|
+----------------------------------+
1?row?in?set?(0.00?sec)

mysql>?select?*?from?t3;??#?絕對精確
+----------------------------------+
|?num??????????????????????????????|
+----------------------------------+
|?1.111111111111111110000000000000?|
+----------------------------------+
1?row?in?set?(0.00?sec)

3 位類型

   BIT(M)可以用來存放多位二進制數,M范圍從1~64,如果不寫默認為1位。

   注意:對于位字段需要使用函數讀取

   bin()顯示為二進制

   hex()顯示為十六進制

mysql>?create?table?temp(num?bit);??#?創建temp表,num字段為bit類型
Query?OK,?0?rows?affected?(0.03?sec)

mysql>?desc?temp;?#?默認顯示寬度為1
+-------+--------+------+-----+---------+-------+
|?Field?|?Type???|?Null?|?Key?|?Default?|?Extra?|
+-------+--------+------+-----+---------+-------+
|?num???|?bit(1)?|?YES??|?????|?NULL????|???????|
+-------+--------+------+-----+---------+-------+
1?row?in?set?(0.00?sec)

mysql>?insert?into?temp(num)?values(1);??#?插入記錄,1
Query?OK,?1?row?affected?(0.00?sec)

mysql>?select?*?from?temp;??#?直接查看是查看不到的
+------+
|?num??|
+------+
|?????|
+------+
1?row?in?set?(0.00?sec)

mysql>?select?bin(num),hex(num)?from?temp;??#?需要轉換為二進制或十六進制進行查看
+----------+----------+
|?bin(num)?|?hex(num)?|
+----------+----------+
|?1????????|?1????????|
+----------+----------+
1?row?in?set?(0.00?sec)

mysql>?alter?table?temp?modify?num?bit(5);??#?修改num字段的顯示寬度為5
Query?OK,?1?row?affected?(0.06?sec)
Records:?1??Duplicates:?0??Warnings:?0

mysql>?insert?into?temp?values(8);??#?插入記錄,8
Query?OK,?1?row?affected?(0.02?sec)

mysql>?select?bin(num),hex(num)?from?temp;?#?顯示的是不同的進制
+----------+----------+
|?bin(num)?|?hex(num)?|
+----------+----------+
|?1????????|?1????????|
|?1000?????|?8????????|
+----------+----------+
2?rows?in?set?(0.00?sec)
原文地址:https://www.cnblogs.com/Yunya-Cnblogs/p/13585109.html

喜歡請關注,有用請轉發~

升職、加薪、無漏測-點“在看”

總結

以上是生活随笔為你收集整理的mysql @符号_MySQL 数值类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。