女人被狂躁到高潮视频免费无遮挡,内射人妻骚骚骚,免费人成小说在线观看网站,九九影院午夜理论片少妇,免费av永久免费网址

當(dāng)前位置:首頁 > > 充電吧
[導(dǎo)讀]大多數(shù)的數(shù)據(jù)庫引擎(到現(xiàn)在據(jù)我們所知的除了sqlite的每個(gè)sql數(shù)據(jù)庫引擎)都使用靜態(tài)的、剛性的類型,使用靜態(tài)類型,數(shù)據(jù)的類型就由它的容器決定,這個(gè)容器是這個(gè)指被存放的特定列。Sqlite使用一個(gè)更

大多數(shù)的數(shù)據(jù)庫引擎(到現(xiàn)在據(jù)我們所知的除了sqlite的每個(gè)sql數(shù)據(jù)庫引擎)都使用靜態(tài)的、剛性的類型,使用靜態(tài)類型,數(shù)據(jù)的類型就由它的容器決定,這個(gè)容器是這個(gè)指被存放的特定列。

Sqlite使用一個(gè)更一般的動(dòng)態(tài)類型系統(tǒng),sqlite中,值的數(shù)據(jù)類型跟值本身相關(guān),而不是與它的容器相關(guān)。Sqlite的動(dòng)態(tài)類型系統(tǒng)和其他數(shù)據(jù)庫的更為一般的靜態(tài)類型系統(tǒng)相兼容,但同時(shí),sqlite中的動(dòng)態(tài)類型允許它能做到一些傳統(tǒng)剛性類型數(shù)據(jù)庫所不可能做到的事。

?

1.??存儲(chǔ)類和數(shù)據(jù)類型

每個(gè)存放在sqlite數(shù)據(jù)庫中(或者由這個(gè)數(shù)據(jù)庫引擎操作)的值都有下面中的一個(gè)存儲(chǔ)類:

l??NULL,值是NULL

l??INTEGER,值是有符號整形,根據(jù)值的大小以1,2,3,4,6或8字節(jié)存放

l??REAL,值是浮點(diǎn)型值,以8字節(jié)IEEE浮點(diǎn)數(shù)存放

l??TEXT,值是文本字符串,使用數(shù)據(jù)庫編碼(UTF-8,UTF-16BE或者UTF-16LE)存放

l??BLOB,只是一個(gè)數(shù)據(jù)塊,完全按照輸入存放(即沒有準(zhǔn)換)

從上可以看出存儲(chǔ)類比數(shù)據(jù)類型更一般化。比如INTEGER存儲(chǔ)類,包括6中不同長度的不同整形數(shù)據(jù)類型,這在磁盤上造成了差異。但是只要INTEGER值被從磁盤讀出進(jìn)入到內(nèi)存進(jìn)行處理,它們被轉(zhuǎn)換成最一般的數(shù)據(jù)類型(8-字節(jié)有符號整形)。

Sqlite v3數(shù)據(jù)庫中的任何列,除了整形主鍵列,可以用于存儲(chǔ)任何一個(gè)存儲(chǔ)列的值。sql語句中的中所有值,不管它們是嵌入在sql文本中或者是作為參數(shù)綁定到一個(gè)預(yù)編譯的sql語句,它們的存儲(chǔ)類型都是未定的。在下面描述的情況中,數(shù)據(jù)庫引擎會(huì)在查詢執(zhí)行過程中在數(shù)值(numeric)存儲(chǔ)類型(INTEGER和REAL)和TEXT之間轉(zhuǎn)換值。

1.1布爾類型

Sqlite沒有單獨(dú)的布爾存儲(chǔ)類型,它使用INTEGER作為存儲(chǔ)類型,0為false,1為true

?

1.2 Date和Time Datatype

Sqlite沒有另外為存儲(chǔ)日期和時(shí)間設(shè)定一個(gè)存儲(chǔ)類集,內(nèi)置的sqlite日期和時(shí)間函數(shù)能夠?qū)⑷掌诤蜁r(shí)間以TEXT,REAL或INTEGER形式存放

l??TEXT?作為IS08601字符串("YYYY-MM-DD HH:MM:SS.SSS")

l??REAL?從格林威治時(shí)間11月24日,4174 B.C中午以來的天數(shù)

l??INTEGER?從?1970-01-01 00:00:00 UTC以來的秒數(shù)

程序可以任意選擇這幾個(gè)存儲(chǔ)類型去存儲(chǔ)日期和時(shí)間,并且能夠使用內(nèi)置的日期和時(shí)間函數(shù)在這些格式間自由轉(zhuǎn)換

?

2.0?類型近似

?

為了使sqlite和其他數(shù)據(jù)庫間的兼容性最大化,sqlite支持列上“類型近似”的觀點(diǎn),列的類型近似指的是存儲(chǔ)在列上數(shù)據(jù)的推薦類型。這里必須記住一點(diǎn),這個(gè)類型是被推薦,而不是必須的。任何列仍然能存儲(chǔ)任意類型的數(shù)據(jù)。只是一些列,給予選擇的話,將會(huì)相比于其他的一些類型優(yōu)選選擇一些存儲(chǔ)類型,這個(gè)列優(yōu)先選擇的存儲(chǔ)類型被稱為它的“近似”。

每個(gè)sqlite3數(shù)據(jù)庫中的列都被賦予下面類型近似中的一種:

l??TEXT

l??NUMERIC

l??INTEGER

l??REAL

l??NONE

具有TEXT近似的列可以用NULL,TEXT或者BLOB類型存儲(chǔ)數(shù)據(jù)。如果數(shù)值數(shù)據(jù)被插入到具有TEXT近似的列,在被存儲(chǔ)前被轉(zhuǎn)換為文本形式

一個(gè)有NUMERIC近似的列可以使用1中的所有5中存儲(chǔ)類來存儲(chǔ)數(shù)據(jù)。當(dāng)文本數(shù)據(jù)被存放到NUMERIC近似的列中,這個(gè)文本的存儲(chǔ)類被轉(zhuǎn)換到INTEGER或REAL(根據(jù)優(yōu)先級順序),如果這個(gè)轉(zhuǎn)換是無損的話。對于TEXT和REAL存儲(chǔ)類間的轉(zhuǎn)換,如果數(shù)據(jù)的前15位的被保留的話sqlite就認(rèn)為這個(gè)轉(zhuǎn)換是無損的、可反轉(zhuǎn)的。如果TEXT到INTEGER或REAL的轉(zhuǎn)換不可避免的會(huì)造成損失,那么數(shù)據(jù)將使用TEXT存儲(chǔ)類存儲(chǔ)。不會(huì)企圖去轉(zhuǎn)換NULL或BLOB值。

一個(gè)字符串可能看起來像浮點(diǎn)數(shù)據(jù),有小數(shù)點(diǎn)或指數(shù)符號,但是只要這個(gè)數(shù)據(jù)可以使用整形存放,NUMERIC近似就會(huì)將它轉(zhuǎn)換到整形。比如,字符串?'3.0e+5'存放到一個(gè)具有NUMERIC近似的列中,被存為300000,而不是浮點(diǎn)型值300000.0。

具有INTEGER近似的列和具有NUMERIC近似的列表現(xiàn)相同。它們之間的差別僅處于轉(zhuǎn)換描述上。

具有REAL近似的列和具有NUMERIC近似的列一樣,除了它將整形數(shù)據(jù)轉(zhuǎn)換成浮點(diǎn)型形式。

具有NONE近似的列不會(huì)優(yōu)先選擇一個(gè)存儲(chǔ)列,也不會(huì)強(qiáng)制將數(shù)據(jù)從一個(gè)存儲(chǔ)類轉(zhuǎn)換到另外一個(gè)類。

?

2.1?列近似的決定因素

列的近似由這個(gè)列的聲明類型所決定,根據(jù)下面的順序的規(guī)則:

上面規(guī)則額順序?qū)τ跊Q定列的近似很重要。一個(gè)列的聲明類型為”CHARINT”的話同時(shí)會(huì)匹配規(guī)則

?

2.2?近似名稱例子

?????????下面這個(gè)表顯示了多少來自更傳統(tǒng)的SQL操作的普通數(shù)據(jù)類型名稱,使用上一節(jié)中的5個(gè)規(guī)則,被轉(zhuǎn)換到近似類型。這個(gè)表只顯示了sqlite能夠接受的數(shù)據(jù)類名稱的一個(gè)子集。注意到跟隨類型名的圓括號內(nèi)的數(shù)值參數(shù)(如:”VARCHAR(255)”)被sqlite忽略—sqlite不在字符串、BLOBS或者數(shù)值的長度上強(qiáng)加任何長度限制(除了一個(gè)全局的SQLITE_MAX_LENGTH限制)。

來自create table語句或者強(qiáng)轉(zhuǎn)語句的范例類型名

產(chǎn)生的近似

用于決定近似的規(guī)則

INT
INTEGER
TINYINT
SMALLINT
MEDIUMINT
BIGINT
UNSIGNED BIG INT
INT2
INT8

INTEGER

1

CHARACTER(20)
VARCHAR(255)
VARYING CHARACTER(255)
NCHAR(55)
NATIVE CHARACTER(70)
NVARCHAR(100)
TEXT
CLOB

TEXT

2

BLOB
no datatype specified

NONE

3

REAL
DOUBLE
DOUBLE PRECISION
FLOAT

REAL

4

NUMERIC
DECIMAL(10,5)
BOOLEAN
DATE
DATETIME

NUMERIC

5

注意到聲明類型為”FLOATING POINT”將被賦予INTEGER近似,而不是REAL近似,因?yàn)樵凇盤OINT”中的”INT”。聲明類型為”STRING”的將被賦予NUMERIC,而不是TEXT(因?yàn)樯鲜霰碇卸x的類型中不存在STRING這一類型,它被歸于到規(guī)則

(從上面可以看出,sqlite3只是從聲明類型字符串中去查找它知道的聲明類型,比如”XINT”將被賦予INTEGER近似因?yàn)檫@個(gè)字符串里面有”INT”,所以這里并不需要一個(gè)單獨(dú)的正確的聲明類型,而是只要聲明類型字符串里面包含了sqlite所知道的聲明類型即可)

?

2.3?列近似操作例子

CREATE TABLE t1(

????t??TEXT,?????-- text affinity by rule 2

????nu NUMERIC,??-- numeric affinity by rule 5

????i??INTEGER,??-- integer affinity by rule 1

????r??REAL,?????-- real affinity by rule 4

????no BLOB??????-- no affinity by rule 3

);?//這里根據(jù)聲明類型確定了列的類型近似

?

INSERT INTO t1 VALUES('500.0', '500.0', '500.0', '500.0', '500.0');

SELECT typeof(t), typeof(nu), typeof(i), typeof(r), typeof(no) FROM t1;

//結(jié)果:text|integer|integer|real|text

DELETE FROM t1;

INSERT INTO t1 VALUES(500.0, 500.0, 500.0, 500.0, 500.0);

SELECT typeof(t), typeof(nu), typeof(i), typeof(r), typeof(no) FROM t1;

//結(jié)果:text|integer|integer|real|real

DELETE FROM t1;

INSERT INTO t1 VALUES(500, 500, 500, 500, 500);

SELECT typeof(t), typeof(nu), typeof(i), typeof(r), typeof(no) FROM t1;

//結(jié)果:text|integer|integer|real|integer

(這里的第四個(gè)值,對應(yīng)的列是REAL近似的,傳輸?shù)闹嫡蔚?,但是根?jù)REAL近似的規(guī)則它會(huì)將它轉(zhuǎn)換為real型數(shù)據(jù))

//?數(shù)據(jù)塊(BLOB)不管是什么列近似都一直存為BLOB類型

DELETE FROM t1;

INSERT INTO t1 VALUES(x'0500', x'0500', x'0500', x'0500', x'0500');

SELECT typeof(t), typeof(nu), typeof(i), typeof(r), typeof(no) FROM t1;

//結(jié)果:blob|blob|blob|blob|blob

?

// NULLs也不受列近似影響

DELETE FROM t1;

INSERT INTO t1 VALUES(NULL,NULL,NULL,NULL,NULL);

SELECT typeof(t), typeof(nu), typeof(i), typeof(r), typeof(no) FROM t1;

//結(jié)果:null|null|null|null|null

?

?

3.0?比較表達(dá)式

?????????Sqlite v3有一系列有用的比較操作符,包括?"=", "==", "<", "

?

3.1?排序

比較操作的結(jié)果基于操作數(shù)的存儲(chǔ)類型,根據(jù)下面的規(guī)則:

l??存儲(chǔ)類型為NULL的值被認(rèn)為小于其他任何的值(包括另一個(gè)存儲(chǔ)類型為NULL的值)

l??一個(gè)INTEGER或REAL值小于任何TEXT或BLOB值。當(dāng)一個(gè)INTEGER或REAL值與另外一個(gè)INTEGER或REAL值比較的話,就執(zhí)行數(shù)值比較

l??TEXT值小于BLOB值。當(dāng)兩個(gè)TEXT值比較的時(shí)候,就根據(jù)序列的比較來決定結(jié)果

l??當(dāng)兩個(gè)BLOB值比較的時(shí)候,使用memcmp來決定結(jié)果

?

3.2?比較操作數(shù)的近似(Affinity)

?????????Sqlite可能在執(zhí)行一個(gè)比較之前會(huì)在INTEGER,REAL或TEXT之間轉(zhuǎn)換比較值。是否在比較操作之前發(fā)生轉(zhuǎn)換基于操作數(shù)的近似(類型)。操作數(shù)近似(類型)由下面的規(guī)則決定:

l??對一個(gè)列的簡單引用的表達(dá)式與這個(gè)列有相同的affinity,注意如果X和Y.Z是列名,那么+X和+Y.Z均被認(rèn)為是用于決定affinity的表達(dá)式

l??一個(gè)”CAST(expr as type)”形式的表達(dá)式與用聲明類型為”type”的列有相同的affinity

l??其他的情況,一個(gè)表達(dá)式為NONE affinity

?

3.3?在比較前的類型轉(zhuǎn)換

?????????只有在轉(zhuǎn)換是無損、可逆轉(zhuǎn)的時(shí)候“應(yīng)用近似”才意味著將操作數(shù)轉(zhuǎn)換到一個(gè)特定的存儲(chǔ)類。近似在比較之前被應(yīng)用到比較的操作數(shù),遵循下面的規(guī)則(根據(jù)先后順序):

l??如果一個(gè)操作數(shù)有INTEGER,REAL或NUMERIC近似,另一個(gè)操作數(shù)有TEXT或NONE近似,那么NUMERIC近似被應(yīng)用到另一個(gè)操作數(shù)

l??如果一個(gè)操作數(shù)有TEXT近似,另一個(gè)有NONE近似,那么TEXT近似被應(yīng)用到另一個(gè)操作數(shù)

l??其他的情況,不應(yīng)用近似,兩個(gè)操作數(shù)按本來的樣子比較

表達(dá)式"a BETWEEN b AND c"表示兩個(gè)單獨(dú)的二值比較”?a >= b AND a <= c”,即使在兩個(gè)比較中不同的近似被應(yīng)用到’a’。

?

3.4?比較舉例

CREATE TABLE t1(

????a TEXT,??????-- text affinity

????b NUMERIC,???-- numeric affinity

????c BLOB,??????-- no affinity

????d????????????-- no affinity

);

?

INSERT INTO t1 VALUES('500', '500', '500', 500);

SELECT typeof(a), typeof(b), typeof(c), typeof(d) FROM t1;

text|integer|text|integer

?

-- Because column "a" has text affinity, numeric values?on the

-- right-hand +side of the comparisons are converted to text before

-- the comparison occurs.

SELECT a < 40,???a < 60,???a < 600 FROM t1;

0|1|1

?

-- Text affinity is applied to the right-hand operands but since

-- they are already TEXT this is a no-op; no conversions occur.

SELECT a < '40', a < '60', a < '600' FROM t1;

0|1|1

?

-- Column "b" has numeric affinity and so numeric affinity is applied

-- to the operands?on the right.??Since the operands are already numeric,

-- the application of affinity is a no-op; no conversions occur.??All

-- values are compared numerically.

SELECT b < 40,???b < 60,???b < 600 FROM t1;

0|0|1

?

-- Numeric affinity is applied to operands?on the right, converting them

-- from text to integers.??Then a numeric comparison occurs.

SELECT b < '40', b < '60', b < '600' FROM t1;

0|0|1

?

-- No affinity conversions occur.??Right-hand side values all have

-- storage class INTEGER which are always less than the TEXT values

-- on the left.

SELECT c < 40,???c < 60,???c < 600 FROM t1;

0|0|0

?

-- No affinity conversions occur.??Values are compared as TEXT.

SELECT c < '40', c < '60', c < '600' FROM t1;

0|1|1

?

-- No affinity conversions occur.??Right-hand side values all have

-- storage class INTEGER which compare numerically with the INTEGER

-- values on the left.

SELECT d < 40,???d < 60,???d < 600 FROM t1;

0|0|1

?

--?No affinity conversions occur.??INTEGER values on the left are

-- always less than TEXT values on the right.

SELECT d < '40', d < '60', d < '600' FROM t1;

1|1|1

?

從這里可以看出,假如可以使用3.1中的規(guī)則進(jìn)行比較的話,就不需要進(jìn)行類型轉(zhuǎn)換,否則的話就要進(jìn)行類型轉(zhuǎn)換

?

4.0?操作符

所有的數(shù)學(xué)操作符(+, -, *, /, %, <

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

在數(shù)字電路設(shè)計(jì)和驗(yàn)證領(lǐng)域,Verilog作為一種廣泛使用的硬件描述語言(HDL),其數(shù)據(jù)類型系統(tǒng)豐富多樣,為設(shè)計(jì)者提供了強(qiáng)大的表達(dá)能力和靈活性。掌握Verilog的數(shù)據(jù)類型,對于編寫高效、可維護(hù)的硬件描述代碼至關(guān)重要。本...

關(guān)鍵字: Verilog 數(shù)據(jù)類型 數(shù)字電路

單片機(jī)內(nèi)部有很多的特殊功能寄存器,每個(gè)寄存器在單片機(jī)內(nèi)部都分配有唯一的地址,一般我們會(huì)根據(jù)寄存器功能的不同給寄存器賦予各自的名稱,當(dāng)我們需要在程序中操作這些特殊功能寄存器時(shí),必須要在程序的最前面將這些名稱加以聲明,聲明的...

關(guān)鍵字: C51 數(shù)據(jù)類型 擴(kuò)充定義

數(shù)據(jù)元(Data Element),也稱為數(shù)據(jù)元素,是用一組屬性描述其定義、標(biāo)識、表示和允許值的數(shù)據(jù)單元,在一定語境下,通常用于構(gòu)建一個(gè)語義正確、獨(dú)立且無歧義的特定概念語義的信息單元。數(shù)據(jù)元可以理解為數(shù)據(jù)的基本單元,將若...

關(guān)鍵字: C51 數(shù)據(jù)類型

Perl是一種弱類型語言,所以變量不需要指定類型,Perl解釋器會(huì)根據(jù)上下文自動(dòng)選擇匹配類型。Perl有三個(gè)基本的數(shù)據(jù)類型:標(biāo)量、數(shù)組、哈希。以下是這三種數(shù)據(jù)類型的說明:序號類型和描述1標(biāo)量標(biāo)量是Perl語言中最簡單的一...

關(guān)鍵字: 數(shù)據(jù)類型

  醫(yī)療解決方案目的的臨界性是免除干擾影響的重要因素。雖然無線局域網(wǎng)絡(luò)、藍(lán)牙低功耗技術(shù)等無線接口本身可用于較大規(guī)模的網(wǎng)絡(luò)運(yùn)作,而且該項(xiàng)低功耗技術(shù)能改善原本藍(lán)牙技術(shù)所采用的多項(xiàng)組件,然而,裝置操作環(huán)境中

關(guān)鍵字: Android 數(shù)據(jù)庫 游戲開發(fā) sqlite

隨著大數(shù)據(jù)基礎(chǔ)技術(shù)的逐漸完善,大數(shù)據(jù)發(fā)展進(jìn)入應(yīng)用階段,但是由于發(fā)展時(shí)間晚以及數(shù)字化基礎(chǔ)相對薄弱,我國大數(shù)據(jù)產(chǎn)業(yè)尚處于初級階段。面對如此龐大激增的數(shù)據(jù)量,常規(guī)軟件無法在一定時(shí)間內(nèi)實(shí)現(xiàn)數(shù)據(jù)的捕捉、管

關(guān)鍵字: 大數(shù)據(jù) 數(shù)據(jù)處理 數(shù)字化 數(shù)據(jù)類型

北京時(shí)間5月6日消息,一項(xiàng)新的研究分析了今年228個(gè)國家或地區(qū)1GB移動(dòng)數(shù)據(jù)的費(fèi)用,印度憑借極度低廉的費(fèi)用再度穩(wěn)坐榜單第一,而中國(內(nèi)地)的排名從2019年的第165名飆升至第12名,1GB移動(dòng)數(shù)據(jù)的

關(guān)鍵字: GB 移動(dòng)數(shù)據(jù) 數(shù)據(jù)類型

北京時(shí)間5月6日消息,一項(xiàng)新的研究分析了今年228個(gè)國家或地區(qū)1GB移動(dòng)數(shù)據(jù)的費(fèi)用,印度憑借極度低廉的費(fèi)用再度穩(wěn)坐榜單第一,而中國的排名從2019年的第165名飆升至第12名,1GB移動(dòng)數(shù)據(jù)的平均費(fèi)用

關(guān)鍵字: 移動(dòng)數(shù)據(jù) GB 數(shù)據(jù)類型

2019年12月11日,普華有策發(fā)布《大數(shù)據(jù)行業(yè)概況與發(fā)展特征》。 1、行業(yè)概況 (1)大數(shù)據(jù)的定義 大數(shù)據(jù)是一個(gè)伴隨社會(huì)信息化而誕生,以海量數(shù)據(jù)積累為基礎(chǔ),囊括無數(shù)條“

關(guān)鍵字: 大數(shù)據(jù) 大數(shù)據(jù)技術(shù) 回歸分析 數(shù)據(jù)類型

模擬量輸入/輸出量程轉(zhuǎn)換的概念 實(shí)際工程中,我們要面對很多工程量,如壓力、溫度、流量、物位等,他們要使用各種類型傳感器進(jìn)行測量,傳感器再將測量值通過輸出標(biāo)準(zhǔn)電壓、電流、溫度或電阻信號供

關(guān)鍵字: 模擬 數(shù)據(jù)類型 西門子PLC 輸入輸出
關(guān)閉