日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

數(shù)字型包含4字節(jié)整數(shù)、4字節(jié)和8字節(jié)浮點(diǎn)數(shù)以及固定精度的小數(shù)。

在下面的表中列出了可以使用的數(shù)字型。

表 1. 數(shù)字型

名稱

存儲(chǔ)空間

描述

范圍

BINARY INTEGER

4 bytes

有符號(hào)整數(shù),integer的別名。

-2,147,483,648到+2,147,483,647

DOUBLE PRECISION

8 bytes

可變精度,不精確。

15位小數(shù)精度

INTEGER

4 bytes

整數(shù)的常規(guī)選擇。

-2,147,483,648到+2,147,483,647

NUMBER

Variable

用戶指定的精度,精確。

精度高達(dá)1000位

NUMBER(p [, s ] )

Variable

最大精度p和可選刻度s的精確數(shù)字。

精度高達(dá)1000位

PLS INTEGER

4 bytes

有符號(hào)整數(shù),integer的別名。

-2,147,483,648到+2,147,483,647

REAL

4 bytes

可變精度,不精確。

6位小數(shù)精度

ROWID

8 bytes

帶符號(hào)的8位整數(shù)。

-9223372036854775808到9223372036854775807

SMALLINT

2 bytes

小范圍整數(shù)。

-32768到+32767

BIGINT

8 bytes

大范圍整數(shù)。

-9223372036854775808到+9223372036854775807

DECIMAL

可變長

用戶指定的精度,精確。

小數(shù)點(diǎn)前131072位到小數(shù)點(diǎn)后16383位

NUMERIC

可變長

用戶指定的精度,精確。

小數(shù)點(diǎn)前131072位到小數(shù)點(diǎn)后16383位

SMALLSERIAL

2 bytes

2字節(jié)。

1到32767

SERIAL

4 bytes

自增整數(shù)。

1到2147483647

BIGSERIAL

8 bytes

自增的大范圍整數(shù)。

1到9223372036854775807

在下面的章節(jié)中會(huì)詳細(xì)介紹這些數(shù)據(jù)類型。

整數(shù)類型

類型INTEGER存儲(chǔ)整個(gè)數(shù)值(不帶有小數(shù)部分),數(shù)值區(qū)間為-2,147,483,648到+2,147,483,647。 如果嘗試存儲(chǔ)超出允許范圍的數(shù)值,將會(huì)產(chǎn)生錯(cuò)誤。

一般只有在磁盤空間緊張時(shí)才使用SMALLINT。 當(dāng)INTEGER的取值范圍不足時(shí)才使用BIGINT。

類型ROWID的列保存固定長度的二進(jìn)制數(shù)據(jù),這些數(shù)據(jù)描述了一個(gè)記錄的實(shí)際地址。類型ROWID是一個(gè)無符號(hào)的、4字節(jié)的INTEGER,能夠存儲(chǔ)整個(gè)數(shù)值(不帶有小數(shù)部分),數(shù)值區(qū)間為0 和 4,294,967,295。如果嘗試存儲(chǔ)超出允許范圍的數(shù)值,將會(huì)產(chǎn)生錯(cuò)誤。

帶有任意精度的數(shù)值

NUMBER類型能夠用于存儲(chǔ)對(duì)于精度位數(shù)沒有限制的數(shù)字,并且可以用于執(zhí)行精確計(jì)算。當(dāng)要求高精確度時(shí),推薦使用這種類型來存儲(chǔ)貨幣總量和其他類型的數(shù)量值。但是與下一章節(jié)中介紹的浮點(diǎn)類型相比,對(duì)于NUMBER類型數(shù)值的計(jì)算速度很慢。

下面是我們所使用的術(shù)語:NUMBER類型數(shù)值的范圍是小數(shù)點(diǎn)右邊部分的小數(shù)位數(shù)。NUMBER類型數(shù)值的精度是指整個(gè)數(shù)值包含的所有數(shù)字,也就是小數(shù)點(diǎn)左右兩邊的所有數(shù)字。所以,我們可以說數(shù)值23.5141的精度為6,范圍是4。我們可以認(rèn)為整數(shù)的范圍是0。

NUMBER類型數(shù)值的精度和范圍是可以配置的。通過使用下面所示的語法,可以把列的數(shù)據(jù)類型聲明為NUMBER。

NUMBER(precision, scale)

精度必須為正數(shù),范圍可以是0或正數(shù),我們也可以采用如下方法聲明:

NUMBER(precision)

指定數(shù)值范圍為0。而通過將列指定為不帶任意精度和范圍的NUMBER類型,可以列中存儲(chǔ)任意精度和范圍的數(shù)值,其中精度值可達(dá)到實(shí)際應(yīng)用的上限。這種類型的列將不會(huì)把輸入值強(qiáng)制為轉(zhuǎn)換為任意特定的范圍。如果列的數(shù)據(jù)類型是帶有范圍的NUMBER類型,那么會(huì)強(qiáng)制把輸入值的范圍轉(zhuǎn)換為指定范圍。(SQL標(biāo)準(zhǔn)中要求缺省的范圍值為0,例如:強(qiáng)制指定數(shù)值的精度為整數(shù)的精度,從最方便使用的角度考慮,最好明確地指定精度和范圍)。

如果數(shù)值的精度或者范圍大于列的數(shù)據(jù)類型所聲明的精度和范圍,那么系統(tǒng)將會(huì)試圖對(duì)這個(gè)值進(jìn)行四舍五入。如果不能對(duì)數(shù)值進(jìn)行四舍五入的處理來滿足數(shù)據(jù)類型的限制,則會(huì)產(chǎn)生一個(gè)錯(cuò)誤。

NUMERIC、DECIMAL兩種數(shù)據(jù)類型和NUMBER是等效的。

浮點(diǎn)類型

數(shù)據(jù)類型REAL和 DOUBLE PRECISION屬于非精確,可變精度的數(shù)值類型。實(shí)際上,這些類型通常是對(duì)于二進(jìn)制浮點(diǎn)算術(shù)(分別是單精度和雙精度)的IEEE標(biāo)準(zhǔn)754的具體實(shí)現(xiàn),在一定范圍內(nèi)由特定的處理器,操作系統(tǒng)和編譯器所支持。

非精確的含義是不能將一些數(shù)值精確地轉(zhuǎn)換成內(nèi)部格式,并且這些數(shù)值只能以近似值的形式存儲(chǔ)。

所以在存儲(chǔ)和打印出的這類數(shù)值時(shí)可能有一點(diǎn)差異。對(duì)這些錯(cuò)誤進(jìn)行管理以及這些錯(cuò)誤如何在整個(gè)計(jì)算過程中傳遞是整個(gè)數(shù)學(xué)和計(jì)算機(jī)科學(xué)的分支需要研究的課題,除了以下幾點(diǎn),其余將不做更進(jìn)一步的討論。

如果要求精確存儲(chǔ)和計(jì)算數(shù)值(例如貨幣總量),可以使用NUMBER類型。

如果您想用這些數(shù)據(jù)類型對(duì)重要的數(shù)據(jù)進(jìn)行復(fù)雜計(jì)算,特別是當(dāng)必須依靠在邊界情況(無窮大,下溢)的特定行為時(shí),應(yīng)該仔細(xì)評(píng)估相關(guān)的實(shí)現(xiàn)方法。

比較兩個(gè)浮點(diǎn)類型的值可能不會(huì)得到預(yù)想的結(jié)果。在大多數(shù)平臺(tái)上,REAL類型數(shù)值的范圍是1E-37到1E+37,精度至少是6個(gè)小數(shù)位。DOUBLE PRECISION的范圍通常是1E-307 到1E+308,精度至少是15位。太大或者太小的值都會(huì)引發(fā)錯(cuò)誤。如果輸入數(shù)值的精度太高的話,就會(huì)發(fā)生四舍五入的操作。太小接近于零的數(shù)值無法與零區(qū)分開,將會(huì)產(chǎn)生一個(gè)下溢的錯(cuò)誤。

PolarDB同樣也支持標(biāo)準(zhǔn) SQL語法的FLOAT和FLOAT(P), 這樣可以指定非精確數(shù)值類型。在這里P指定在二進(jìn)制數(shù)字中可接受的最小精度。PolarDB把從FLOAT(1)到FLOAT(24)的數(shù)據(jù)類型當(dāng)作REAL類型,把從FLOAT(25)到FLOAT(53)的數(shù)據(jù)類型當(dāng)作DOUBLE PRECISION類型。超出允許范圍的P值會(huì)引發(fā)一個(gè)錯(cuò)誤。沒有指定精度的浮點(diǎn)數(shù)被當(dāng)成DOUBLE PRECISION類型。

序列號(hào)類型

SMALLSERIAL、SERIAL和BIGSERIAL不是真正的數(shù)字類型,只是為在表中創(chuàng)建唯一標(biāo)識(shí)做的概念上的便利。類似其它一些數(shù)據(jù)庫中AUTO_INCREMENT屬性,可以通過以下語句實(shí)現(xiàn):

CREATE TABLE tablename (
colname SERIAL
);

等價(jià)于以下幾條語句:

CREATE SEQUENCE tablename_colname_seq;
CREATE TABLE tablename (
colname integer NOT NULL DEFAULT nextval('tablename_colname_seq')
);
ALTER SEQUENCE tablename_colname_seq OWNED BY tablename.colname;

因此,我們便創(chuàng)建了一個(gè)整數(shù)字段并且將它的默認(rèn)數(shù)值安排為從一個(gè)序列發(fā)生器讀取。 應(yīng)用了一個(gè)NOT NULL約束以確保NULL不會(huì)被插入。 在大多數(shù)情況下可以附加一個(gè)UNIQUE或PRIMARY KEY約束避免意外地插入重復(fù)的數(shù)值,但這個(gè)不是自動(dòng)的。最后, 將序列發(fā)生器"從屬于"那個(gè)字段,這樣當(dāng)該字段或表被刪除時(shí)也一并刪除它。

說明

因?yàn)镾MALLSERIAL、SERIAL和BIGSERIAL是使用序列實(shí)現(xiàn)的,所以列中的值,即使沒有刪過,也有可能出現(xiàn)不連續(xù)的情況。 即使從未成功將包含序列分配值的行插入表列,也仍會(huì)消耗從序列中分配的值。例如,如果插入事務(wù)回滾,可能會(huì)出現(xiàn)這種情況。

在SERIALl字段中插入序列中的下一個(gè)數(shù)值,需要給SERIAL字段賦予默認(rèn)值。我們可以通過在INSERT語句中把該字段排除在字段列表之外來實(shí)現(xiàn),也可以通過使用DEFAULT關(guān)鍵字來實(shí)現(xiàn)。

類型名SERIALl和SERIALl4是等效的: 兩者都創(chuàng)建INTEGER字段。類型名BIGSERIAL和SERIALl8是等效的,只不過BIGSERIAL會(huì)創(chuàng)建一個(gè)BIGINT字段。 如果在表的生存期中使用的標(biāo)識(shí)數(shù)目可能超過231個(gè), 則應(yīng)該使用BIGSERIAL。類型名SMALLSERIAL和SERIAL2是等效的,只不過SMALLSERIAL會(huì)創(chuàng)建一個(gè)SMALLINT字段。

一個(gè)SERIAL類型創(chuàng)建的序列在所屬的字段被刪除時(shí)會(huì)自動(dòng)刪除。 您可以只刪除序列而不刪除字段,不過這將刪除該字段的默認(rèn)值表達(dá)式。