中的數(shù)據(jù)類型概念?這個(gè)問(wèn)題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見(jiàn)到的。希望通過(guò)這個(gè)問(wèn)題能讓你收獲頗深。下面是小編給大家?guī)?lái)的參考內(nèi)容,讓我們一起來(lái)看看吧!
創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)蘆淞,10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):18980820575
一、數(shù)據(jù)是什么?
數(shù)據(jù)是一個(gè)信息集合,以某種數(shù)據(jù)類型保存在數(shù)據(jù)庫(kù)里。數(shù)據(jù)包括姓名、數(shù)字、貨幣、文本、圖像、小數(shù)、計(jì)算、統(tǒng)計(jì)等,幾乎涵蓋能夠想象到的任何東西。數(shù)據(jù)客戶保存為大寫、小寫或大小寫混合,數(shù)據(jù)可以被操作或修改,大多數(shù)數(shù)據(jù)在其生存周期內(nèi)不會(huì)保持不變。
數(shù)據(jù)類型用于指定列所包含數(shù)據(jù)的規(guī)則,它決定了數(shù)據(jù)保存在列里的方式,包括分配給列的寬度,以及值是否可以是字母、數(shù)字、日期和時(shí)間等。任何數(shù)據(jù)或數(shù)據(jù)的組合都有對(duì)應(yīng)的數(shù)據(jù)類型,這些數(shù)據(jù)類型用于存儲(chǔ)像字母、數(shù)字、日期和時(shí)間、圖像、二進(jìn)制數(shù)據(jù)等。更詳細(xì)地說(shuō),數(shù)據(jù)可以包括姓名、描述、數(shù)字、計(jì)算、圖像、圖像描述、文檔等。
數(shù)據(jù)是數(shù)據(jù)庫(kù)的意義所在,必須受到保護(hù)。數(shù)據(jù)的保護(hù)著就是數(shù)據(jù)庫(kù)管理員(DBA),但是每個(gè)數(shù)據(jù)庫(kù)用戶也有責(zé)任采取必要手段來(lái)保護(hù)數(shù)據(jù)。
二、基本數(shù)據(jù)類型
數(shù)據(jù)類型是數(shù)據(jù)本身的特征,其特性被設(shè)置到表里的字段。舉例來(lái)說(shuō),我們可以指定某個(gè)字段必須包含數(shù)字值,不允許輸入由數(shù)字或字母組成的字符串;我們也不希望在保存貨幣數(shù)值的字段里輸入字母。為數(shù)據(jù)庫(kù)里每個(gè)字段定義數(shù)據(jù)類型可以大幅減少數(shù)據(jù)庫(kù)里由于錯(cuò)誤而產(chǎn)生的錯(cuò)誤數(shù)據(jù)。字段定義(數(shù)據(jù)類型定義)是一種數(shù)據(jù)校驗(yàn)方式,通知了每個(gè)字段里可以輸入的數(shù)據(jù)。
1.定長(zhǎng)字符串。
定長(zhǎng)字符串通常具有相同的長(zhǎng)度,是使用定長(zhǎng)數(shù)據(jù)類型保存的。下面是Sql定長(zhǎng)字符串的標(biāo)準(zhǔn):
CHARACTER(n)
n是一個(gè)數(shù)字,定義了字段里能夠保存的最多字符數(shù)量。
有些Sql實(shí)現(xiàn)使用CHAR數(shù)據(jù)類型來(lái)保存定長(zhǎng)數(shù)據(jù)。字母可以保存到這種數(shù)據(jù)類型里。
在定長(zhǎng)數(shù)據(jù)類型里,通常使用空格來(lái)補(bǔ)充數(shù)量不足的字符。如果字符長(zhǎng)度是10,而輸入的數(shù)據(jù)只有5位,那么剩余5位就會(huì)被記錄為空格。填充空格確保了字段里每個(gè)值都具有相同的長(zhǎng)度。
PS:不要使用定長(zhǎng)數(shù)據(jù)類型來(lái)保存長(zhǎng)度不定的數(shù)據(jù),比如姓名,如果不恰當(dāng)?shù)厥褂枚ㄩL(zhǎng)數(shù)據(jù)類型,可能會(huì)導(dǎo)致浪費(fèi)可用空間,以及影響對(duì)不同的數(shù)據(jù)進(jìn)行精確比較。應(yīng)該使用變長(zhǎng)數(shù)據(jù)類型來(lái)保存長(zhǎng)度不定的字符串,從而節(jié)省數(shù)據(jù)庫(kù)空間。
2.變長(zhǎng)字符串。
Sql支持變長(zhǎng)字符串,也就是長(zhǎng)度不固定的字符串。下面是Sql變長(zhǎng)字符串的標(biāo)準(zhǔn):
CHARACTER VARYING(n)
n是一個(gè)數(shù)字,表示字段里能夠保存的最多字符數(shù)量。
常見(jiàn)的變長(zhǎng)字符串?dāng)?shù)據(jù)類型有VARCHAR、VARINARY和VARCHAR2。VARCHAR是ANSI標(biāo)準(zhǔn),Microsoft Sql Server和MySQL也使用它;VARINARY和VARCHAR2都是由Oracle使用的。定義為字符的字段里可以保存數(shù)字和字母,這意味著數(shù)據(jù)中可能包含數(shù)字字符。VARBINARY類似于VARCHAR和VARCHAR2,只是它包含的是長(zhǎng)度不定的字節(jié)。這種數(shù)據(jù)類型通常被用來(lái)保存數(shù)字式數(shù)據(jù),例如圖像文件。
定長(zhǎng)數(shù)據(jù)類型利用空格來(lái)填充字段里的空白,但變長(zhǎng)字符串不這樣做。舉例來(lái)說(shuō),如果某個(gè)變長(zhǎng)字段的長(zhǎng)度定義為10,而輸入的字符串長(zhǎng)度為5,那么這個(gè)值的總長(zhǎng)度也就是5,這時(shí)并不會(huì)使用空格來(lái)填充字段里的空白。
3.大對(duì)象類型。
有些變長(zhǎng)數(shù)據(jù)類型需要保存更長(zhǎng)的數(shù)據(jù),超過(guò)了一般情況下為VARCHAR字段所保留的長(zhǎng)度,比如現(xiàn)在常見(jiàn)的BLOB和TEXT數(shù)據(jù)類型。這些數(shù)據(jù)類型專門用于保存大數(shù)據(jù)集的。BLOB是二進(jìn)制大對(duì)象,它的數(shù)據(jù)是很長(zhǎng)的二進(jìn)制字符串。BLOB適合在數(shù)據(jù)庫(kù)里存儲(chǔ)二進(jìn)制媒體文件,比如圖像和MP3.
TEXT數(shù)據(jù)類型是一種長(zhǎng)字符串類型,可以被看作一個(gè)大VARCHAR字段,通常用于在數(shù)據(jù)庫(kù)里保存大字符集,比如博客站點(diǎn)的HTML輸入。在數(shù)據(jù)庫(kù)里保存這種類型的數(shù)據(jù)可以實(shí)現(xiàn)站點(diǎn)的動(dòng)態(tài)更新。
4.數(shù)值類型。
數(shù)值被保存在定義為某種數(shù)值類型的字段里,一般包括NUMBER、INTERGER、REAL/DECIMAL等。
蝦米是Sql數(shù)值的標(biāo)準(zhǔn):
(1).BIT(n);
(2).BIT VARYING(n);
(3).DECIMAL(p,s);
(4).INTEGER;
(5).SMALLINT;
(6).SIGINT;
(7).FLOAT(p,s);
(8).DOUBLE PRECISION(P,S);
(9).REAL(S);
P 表示字段的最大長(zhǎng)度。s 表示小數(shù)點(diǎn)后面的位數(shù)。
Sql實(shí)現(xiàn)中一個(gè)通用的數(shù)值類型是NUMERIC,它符合ANSI標(biāo)準(zhǔn)。數(shù)值可以是0、正數(shù)、定點(diǎn)數(shù)和浮點(diǎn)數(shù)。下面是使用NUMERIC的一個(gè)范例:
NUMERIC(s),這個(gè)命令把字段能夠接受的最大值限制為99 999.在本書范例所涉及的數(shù)據(jù)庫(kù)實(shí)現(xiàn)總,NUMERIC都是以DECIMAL類型實(shí)現(xiàn)的。
5.小數(shù)類型。
小數(shù)類型是數(shù)值的總體長(zhǎng)度。舉例來(lái)說(shuō),在數(shù)值定義ZDECIMZAL(4,2)里,有效位數(shù)是4,也就是說(shuō)數(shù)值總位數(shù)是4.標(biāo)度是小數(shù)點(diǎn)后面的位數(shù),在前例中是2。如果實(shí)際數(shù)值的小數(shù)位數(shù)超過(guò)了定義的位數(shù),數(shù)值就會(huì)被四舍五入,比如34.33寫入到定義為DECIMAL(3,1)的字段時(shí),會(huì)被四舍五入34.3。
如果數(shù)值按照如下方式被定義,其最大值就是99.99:
DECIMAL(4,2)
有效位是4,表示數(shù)值的總體長(zhǎng)度是4;標(biāo)度是2,表示小數(shù)點(diǎn)后面保留2位。小數(shù)點(diǎn)本身并不算作一個(gè)字符。
定義為DECIMAL(4,2)的字段允許輸入的數(shù)組包括:
(1).12
(2).12.4
(3).12.44
(4).12.449
最后一個(gè)值12.449在保存到字段時(shí)會(huì)四舍五入為12.45。在這種定義,任何12.45~12.499之間的數(shù)值會(huì)被四舍五入為12.45。
6.整數(shù)。
整數(shù)是不包含小數(shù)點(diǎn)的數(shù)值(包括正數(shù)和負(fù)數(shù))。
下面是一些有效的整數(shù):
(1).1;
(2).0;
(3).-1;
(4).99;
(5).-99;
(6).199;
7.浮點(diǎn)數(shù)。
浮點(diǎn)數(shù)是有效位數(shù)和標(biāo)度都可變并且沒(méi)有限制的小數(shù)數(shù)值,任何有效位數(shù)和標(biāo)度都是可以的。數(shù)據(jù)類型REAL代表單精度浮點(diǎn)數(shù)值,而DOUBLE PRECISION表示雙精度浮點(diǎn)數(shù)值。單精度浮點(diǎn)數(shù)值的有效位數(shù)為1~21(包含),雙精度浮點(diǎn)數(shù)值的有效位數(shù)為22~53(包含)。下面是一些FLOAT數(shù)據(jù)類型的范例:
(1).FLOAT;
(2).FLOAT(15);
(3).FLOAT(50);
8.日期和時(shí)間類型。
日期和時(shí)間數(shù)據(jù)類型很顯然是用于保存日期和時(shí)間信息的。標(biāo)準(zhǔn)Sql支持DATETIME數(shù)據(jù)類型,它包含以下類型:
(1).DATE;
(2).TIME;
(3).DATETIME;
(4).TIMESTAMP;
DATETIME數(shù)據(jù)類型的元素包括:
(1).YEAR;
(2).MONTH;
(3).DAY;
(4).HOUR;
(5).SECOND;
ps:SECOND元素還可以再分解為幾分之一秒,其范圍是00.000~61.999,但并不是所有Sql實(shí)現(xiàn)都支持這個(gè)范圍。多出來(lái)的1.999秒是用于實(shí)現(xiàn)閏秒的。
每種Sql實(shí)現(xiàn)可能都是具有自定義的數(shù)據(jù)類型來(lái)保存日期和時(shí)間。前面介紹的數(shù)據(jù)類型和元素是每個(gè)Sql廠商都應(yīng)該遵守的標(biāo)準(zhǔn),但大多數(shù)實(shí)現(xiàn)都具有自己的數(shù)據(jù)類型來(lái)保存日期值,其形式與實(shí)際存儲(chǔ)方式有所不同。
日期數(shù)據(jù)一般不指定長(zhǎng)度。稍后我們會(huì)更詳細(xì)地介紹日期類型,包括日期信息在某些實(shí)現(xiàn)里的保存方式、如何使用轉(zhuǎn)換函數(shù)操作日期和時(shí)間,并且用范例展示在實(shí)際工作中如何使用日期和時(shí)間。
9.直義字符串。
直義字符串就是一系列字符,比如姓名或電話號(hào)碼,這是有用戶或者程序明確指定的。直義字符串包含的數(shù)據(jù)與前面介紹的數(shù)據(jù)類型具有一樣的屬性,但字符串的值是已知的。列本身的值通常是不能確定的,因?yàn)槊恳涣型ǔ0俗侄卧谌坑涗浝锏牟煌怠?/p>
實(shí)際上并不需要把字段指定為直義字符串?dāng)?shù)據(jù)類型,而是指定字符串。直義字符串的范例如下所示:
(1).'Hello';
(2).45000;
(3).'45000';
(4).3.14;
(5).'November 1 ,1997';
字符型的字符串由單引號(hào)包圍,數(shù)值45000沒(méi)有單引號(hào)包圍,而第二個(gè)45000用雙引號(hào)包圍了。一般來(lái)說(shuō),字符型字符串需要使用單引號(hào),而數(shù)值型不需要。
將一個(gè)數(shù)據(jù)類型成數(shù)值類型的過(guò)程過(guò)程術(shù)語(yǔ)隱式轉(zhuǎn)換。在這個(gè)過(guò)程中,數(shù)據(jù)庫(kù)會(huì)自動(dòng)判斷應(yīng)該使用哪種數(shù)據(jù)類型。所以,如果一個(gè)數(shù)據(jù)沒(méi)有使用單引號(hào)包圍起來(lái),那么Sql程序就會(huì)將其認(rèn)定為數(shù)值類型。因此,必須要特別留意數(shù)據(jù)的形式。否則,存儲(chǔ)結(jié)果可能會(huì)出現(xiàn)偏差,或者報(bào)錯(cuò)。稍后將介紹如何在數(shù)據(jù)庫(kù)查詢里使用直義字符串。
10.NULL數(shù)據(jù)類型。
NULL值表示沒(méi)有值。NULL值在Sql里有廣泛的應(yīng)用,包括表的創(chuàng)建、查詢的搜索條件,甚至是在直義字符串。
在使用NULL數(shù)據(jù)類型時(shí),需要明確表示相應(yīng)字段不是必須要輸入數(shù)據(jù)的。如果某個(gè)字段必須包含數(shù)據(jù),就把它設(shè)置為NOT NULL,只要字段有可能不包含數(shù)據(jù),最好就把它設(shè)置為NULL。
11.布爾值。
布爾值的取值范圍是TRUE、FlASE和NULL,用于進(jìn)行數(shù)據(jù)比較。舉例來(lái)說(shuō),在查詢中設(shè)置條件時(shí),每個(gè)條件都會(huì)被求值,得到TRUE、FLASE或NULL。如果查詢中所有條件的值都是TRUE,數(shù)據(jù)就會(huì)被返回;如果某個(gè)條件的值是FLASE或NULL,數(shù)據(jù)就不會(huì)返回。比如下面這個(gè)范例:
WHERE NAME =‘SMITH’
這可能是查詢里的一個(gè)條件,目標(biāo)表里每行數(shù)據(jù)都是根據(jù)這個(gè)條件進(jìn)行求值。如果表里某行的NAME字段值是SMITH,條件的值就是TRUE,相應(yīng)的記錄就會(huì)被返回。
大多數(shù)數(shù)據(jù)庫(kù)實(shí)現(xiàn)并沒(méi)有一個(gè)嚴(yán)格意義上的BOOLEAN類型,而是代之以各自不同的實(shí)現(xiàn)方法。MySql用于BOOLEAN類型,但實(shí)質(zhì)上與其現(xiàn)有的TINYINT類型相同。Oracle傾向于讓用戶使用一個(gè)CHAR(1)值來(lái)代替布爾值,而Sql Server則使用BIT來(lái)代替。
12.自定義類型。
自定義類型是由用戶定義的類型,它允許用戶根據(jù)已有的數(shù)據(jù)類型來(lái)定制自己的數(shù)據(jù)類型,從而滿足數(shù)據(jù)存儲(chǔ)的需要。自定義類型極大的豐富了數(shù)據(jù)存儲(chǔ)的可能性,使開(kāi)發(fā)人員在數(shù)據(jù)庫(kù)程序開(kāi)發(fā)過(guò)程中具有更大的靈活性。語(yǔ)句CREATE TYPE用于創(chuàng)建自定義類型。
舉例來(lái)說(shuō),在MySql和Oracle中,可以像下面這樣創(chuàng)建一個(gè)類型:
CREATE TYPE PERSON ASOBJECT
(NAME VARCHER (30),
SSN VARCHAR(9);
)
然后可以像下面這樣引用自定義類型:
CREATE TABLE EMP_PAY
(EMPLOYEE PERSON,
SALARY DECIMAL(10,2),
HIRE_DATE DATE);
表EMP_PAY第一列EMPLOYEE的類型是PERSON,這正是在前面創(chuàng)建的自定義類型。
13.域。
域是能夠被使用的有效數(shù)據(jù)類型的集合。域與數(shù)據(jù)相關(guān)聯(lián),從而只接受特定的數(shù)據(jù)。在域創(chuàng)建之后,我們可以向域添加約束。約束與數(shù)據(jù)類型共同發(fā)揮作用,從而進(jìn)一步限制字段能夠接受的數(shù)據(jù)。域的使用類似于自定義類型。
像下面這樣就可以創(chuàng)建域:
CREATE DOMAIN MONEY_D AS NUMBER(0,2);
像下面這樣為域添加約束:
ALTER DOMAIN MONEy_D
ADD CONSTRAINT MONEY_CON
CHECK(VALUE>5);
然后像下面這樣引用域:
CREATE TABLE EMP_PAY
(EMP_ID NUMBER(9),
EMP_NAME VARCHER2(30),
PAY_RATE MONEY_D);
三、小結(jié)
Sql具有多種數(shù)據(jù)類型,對(duì)于使用過(guò)其他編程語(yǔ)言的人來(lái)說(shuō),這些都不算陌生。數(shù)據(jù)類型允許不同類型的數(shù)據(jù)保存到數(shù)據(jù)庫(kù),比如單個(gè)字符、小數(shù)、日期和時(shí)間。無(wú)論是使用像c這樣的第三代編程語(yǔ)言,還是使用關(guān)系型數(shù)據(jù)庫(kù)實(shí)現(xiàn)Sql編碼,數(shù)據(jù)類型的概念都是一樣的。當(dāng)然,不同實(shí)現(xiàn)中數(shù)據(jù)類型的名稱坑你有所不同,但其工作方式基本上是一樣的。另外,關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)并不是一定要實(shí)現(xiàn),ANSI標(biāo)準(zhǔn)里規(guī)定的全部數(shù)據(jù)類型才會(huì)被認(rèn)為是與ANSI兼容的,因此最好查看具體的文檔來(lái)了解尅使用的數(shù)據(jù)類型。
在考慮數(shù)據(jù)類型、長(zhǎng)度、標(biāo)度和精度時(shí),一定要仔細(xì)地進(jìn)行短期和長(zhǎng)遠(yuǎn)的規(guī)劃。另外,公司制度和希望用戶以什么方式訪問(wèn)數(shù)據(jù)也是要考慮的因素。開(kāi)發(fā)人員應(yīng)該了解數(shù)據(jù)的本質(zhì)。以及數(shù)據(jù)在數(shù)據(jù)庫(kù)里是如何相互關(guān)聯(lián)的,從而使用恰當(dāng)?shù)臄?shù)據(jù)類型。
感謝各位的閱讀!看完上述內(nèi)容,你們對(duì)中的數(shù)據(jù)類型概念大概了解了嗎?希望文章內(nèi)容對(duì)大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
分享文章:中的數(shù)據(jù)類型概念
文章路徑:http://muchs.cn/article44/joodee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、靜態(tài)網(wǎng)站、Google、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站策劃、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)