MySQL 圖文詳細(xì)教程之列分類中的數(shù)值型
發(fā)表時(shí)間:2023-05-29 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]本篇文章主要給大家介紹mysql中列類型之?dāng)?shù)值型的相關(guān)知識(shí)點(diǎn),希望對(duì)需要的朋友有所幫助!推薦參考教程:《mysql教程》列類型(數(shù)據(jù)類型)所謂的列類型,其實(shí)就是指數(shù)據(jù)類型,即對(duì)數(shù)據(jù)進(jìn)行統(tǒng)一的分類,從...
本篇文章主要給大家介紹mysql中列類型之?dāng)?shù)值型的相關(guān)知識(shí)點(diǎn),希望對(duì)需要的朋友有所幫助!
推薦參考教程:《mysql教程》
列類型(數(shù)據(jù)類型)
所謂的列類型,其實(shí)就是指數(shù)據(jù)類型,即對(duì)數(shù)據(jù)進(jìn)行統(tǒng)一的分類,從系統(tǒng)的角度出發(fā)是為了能夠使用統(tǒng)一的方式進(jìn)行管理,更好的利用有限的空間。
在 SQL 中,將數(shù)據(jù)類型分成了三大類,分別為:數(shù)值型、字符串型和日期時(shí)間型。
對(duì)于數(shù)值型數(shù)據(jù),可以進(jìn)一步將其劃分為整數(shù)型和小數(shù)型。
整數(shù)型
在 SQL 中,由于要考慮節(jié)省磁盤空間的問題,因此系統(tǒng)又將整型細(xì)分成五類,分別為:
tinyint
:迷你整型,使用 1 個(gè)字節(jié)存儲(chǔ)數(shù)據(jù)(常用);
smallint
:小整型,使用 2 個(gè)字節(jié)存儲(chǔ)數(shù)據(jù);
mediumint
:中整型,使用 3 個(gè)字節(jié)存儲(chǔ)數(shù)據(jù);
int
:標(biāo)準(zhǔn)整型,使用 4 個(gè)字節(jié)存儲(chǔ)數(shù)據(jù)(常用);
bigint
:大整型,使用 8 個(gè)字節(jié)存儲(chǔ)數(shù)據(jù)。
接下來,輸入如下 SQL 語(yǔ)句進(jìn)行測(cè)試:
-- 創(chuàng)建整型表create table my_int(
int_1 tinyint,
int_2 smallint,
int_3 int,
int_4 bigint
)charset utf8;
如上圖所示,咱們已經(jīng)成功創(chuàng)建my_int
表,再插入數(shù)據(jù):
-- 插入數(shù)據(jù)insert into my_int values (1,2,3,4);insert into my_int values ('a','b','c','d');insert into my_int values (255,2,3,4);
如上圖所示,通過列類型,咱們可以限定插入數(shù)據(jù)的類型以及長(zhǎng)度范圍。
至于為什么在對(duì)int_1
賦值時(shí),報(bào)出超出范圍的錯(cuò)誤,則是因?yàn)樵?SQL 中數(shù)值類型默認(rèn)是有符號(hào)位的,即分正負(fù)。如果需要使用無符號(hào)的數(shù)據(jù),這就需要咱們自己對(duì)數(shù)據(jù)類型進(jìn)行聲明啦,即在聲明數(shù)據(jù)類型時(shí),追加unsigned
關(guān)鍵字。例如:
-- 在 my_int 表中,添加 int_5 字段,設(shè)置其數(shù)據(jù)類型為 tinyint unsignedalter table my_int add int_5 tinyint unsigned;
如上圖所示,添加int_5
字段成功,繼續(xù)插入數(shù)據(jù):
-- 插入數(shù)據(jù)insert into my_int values (1,2,3,4,255);
如上圖所示,當(dāng)咱們將tinyint
限定為unsigned
之后,已經(jīng)可以插入0~255
之間的任何整數(shù)啦!但是,回過頭來,讓咱們仔細(xì)看看下面這張圖:
通過觀察上面這張圖,咱們會(huì)發(fā)現(xiàn):每個(gè)字段的數(shù)據(jù)類型后面都會(huì)跟著一對(duì)括號(hào),并且里面含有數(shù)字。這些數(shù)字啊,其實(shí)并沒有什么特別的含義,只是表示數(shù)據(jù)的顯示寬度。實(shí)際上,咱們可以修改顯示的寬度,但是這種修改并不會(huì)改變數(shù)據(jù)本身的大小。
顯示寬度的意義:在于當(dāng)數(shù)據(jù)不夠顯示寬度的時(shí)候,會(huì)自動(dòng)讓數(shù)據(jù)變成對(duì)應(yīng)的顯示寬度,通常需要搭配一個(gè)前導(dǎo)0
來增加寬度,其不改變數(shù)據(jù)值的大小,即用zerofill
進(jìn)行零填充,并且零填充會(huì)導(dǎo)致數(shù)值自動(dòng)變成無符號(hào)。
下面,執(zhí)行如下 SQL 語(yǔ)句:
-- 在 my_int 表中,添加 int_6 字段,設(shè)置其數(shù)據(jù)類型為 tinyint zerofillalter table my_int add int_6(3) tinyint zerofill;
再插入數(shù)據(jù),進(jìn)行測(cè)試:
-- 插入數(shù)據(jù)insert into my_int values (1,2,3,4,5,6);
如上圖所示,零填充的意義:在于保證數(shù)據(jù)的格式。
小數(shù)型
小數(shù)型,即帶有小數(shù)點(diǎn)或者范圍超出整型的數(shù)值類型。
在 SQL 中,將小數(shù)型細(xì)分為浮點(diǎn)型和定點(diǎn)型兩種,其中:
第 1 種:浮點(diǎn)型
浮點(diǎn)型數(shù)據(jù)是一種精度型數(shù)據(jù),因?yàn)槌鲋付ǚ秶,其?huì)丟失精度,自動(dòng)進(jìn)行四舍五入操作。理論上,浮點(diǎn)型分為兩種精度:
浮點(diǎn)型的使用方式:如果直接用float
,則表示沒有小數(shù)部分;如果用float(M,D)
,其中M
代表總長(zhǎng)度,D
代表小數(shù)部分長(zhǎng)度,M-D
則為整數(shù)部分長(zhǎng)度。
執(zhí)行如下 SQL 語(yǔ)句創(chuàng)建浮點(diǎn)數(shù)表,進(jìn)行測(cè)試:
-- 創(chuàng)建浮點(diǎn)數(shù)表create table my_float(
f1 float,
f2 float(10,2),
f3 float(6,2)
)charset utf8;
在咱們向浮點(diǎn)數(shù)表my_float
插入數(shù)據(jù)的時(shí)候,可以直接插入小數(shù),也可以插入用科學(xué)計(jì)數(shù)法表示的數(shù)據(jù)。此外,插入浮點(diǎn)型數(shù)據(jù)時(shí),整數(shù)部分是不能超出長(zhǎng)度范圍的,但是小數(shù)部分是可以超出長(zhǎng)度范圍的,系統(tǒng)會(huì)自動(dòng)進(jìn)行四舍五入的操作。特別是,如果浮點(diǎn)數(shù)是因?yàn)橄到y(tǒng)進(jìn)位(四舍五入)導(dǎo)致整數(shù)部分超出指定的長(zhǎng)度,那么系統(tǒng)是允許成立的。
-- 插入測(cè)試數(shù)據(jù)insert into my_float values (2.15e4,20.15,9999.99);insert into my_float values (20151120,123456789.99,9999.99);insert into my_float values (5211314,123456.99,99.99999);
如上圖所示,咱們的結(jié)論得到了驗(yàn)證。
第 2 種:定點(diǎn)型
定點(diǎn)型數(shù)據(jù),絕對(duì)的保證整數(shù)部分不會(huì)被四舍五入,也就是說不會(huì)丟失精度,但小數(shù)部分有可能丟失精度,雖然理論上小數(shù)部分也不會(huì)丟失精度。
執(zhí)行如下 SQL 語(yǔ)句創(chuàng)建定點(diǎn)數(shù)表,以浮點(diǎn)數(shù)做對(duì)比,進(jìn)行測(cè)試:
-- 創(chuàng)建定點(diǎn)數(shù)表create table my_decimal(
f1 float(10,2),
d1 decimal(10,2)
)charset utf8;
當(dāng)咱們插入數(shù)據(jù)的時(shí)候,定點(diǎn)數(shù)的整數(shù)部分一定不能超出長(zhǎng)度范圍(進(jìn)位也不可以),小數(shù)部分的長(zhǎng)度則可以隨意超出,沒有限制,系統(tǒng)會(huì)自動(dòng)進(jìn)行四舍五入的操作:
-- 插入測(cè)試數(shù)據(jù)insert into my_decimal values (99999999.99,99999999.99);insert into my_decimal values (123456789.99,2015.1314);insert into my_decimal values (123456.99,2015.1314);
如上圖所示,咱們的結(jié)論同樣得到了驗(yàn)證。
以上就是MySQL 教程之列類型中的數(shù)值型的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
學(xué)習(xí)教程快速掌握從入門到精通的SQL知識(shí)。