存儲數據類型
❶ 存儲器的類型
根據存儲材料的性能及使用方法的不同,存儲器有幾種不同的分類方法。1、按存儲介質分類:半導體存儲器:用半導體器件組成的存儲器。磁表面存儲器:用磁性材料做成的存儲器。
下面我們就來了解一下存儲器的相關知識。
存儲器大體分為兩大類,一類是掉電後存儲信息就會丟失,另一類是掉電後存儲信息依然保留,前者專業術語稱之為「易失性存儲器」,後者稱之為「非易失性存儲器」。
1 RAM
易失性存儲器的代表就是RAM(隨機存儲器),RAM又分SRAM(靜態隨機存儲器)和DRAM(動態隨機存儲器)。
SRAM
SRAM保存數據是靠晶體管鎖存的,SRAM的工藝復雜,生產成本高,但SRAM速度較快,所以一般被用作Cashe,作為CPU和內存之間通信的橋梁,例如處理器中的一級緩存L1 Cashe, 二級緩存L2 Cashe,由於工藝特點,SRAM的集成度不是很高,所以一般都做不大,所以緩存一般也都比較小。
DRAM
DRAM(動態隨機存儲器)保存數據靠電容充電來維持,DRAM的應用比SRAM更普遍,電腦裡面用的內存條就是DRAM,隨著技術的發展DRAM又發展為SDRAM(同步動態隨機存儲器)DDR SDRAM(雙倍速率同步動態隨機存儲器),SDRAM只在時鍾的上升沿表示一個數據,而DDR SDRAM能在上升沿和下降沿都表示一個數據。
DDR又發展為DDR2,DDR3,DDR4,在此基礎上為了適應移動設備低功耗的要求,又發展出LPDDR(Low Power Double Data Rate SDRAM),對應DDR技術的發展分別又有了LPDDR2, LPDDR3, LPDDR4。
目前手機中運行內存應用最多的就是 LPDDR3和LPDDR4,主流配置為3G或4G容量,如果達到6G或以上,就屬於高端產品。
2 ROM
ROM(Read Only Memory)在以前就指的是只讀存儲器,這種存儲器只能讀取它裡面的數據無法向裡面寫數據。所以這種存儲器就是廠家造好了寫入數據,後面不能再次修改,常見的應用就是電腦里的BIOS。
後來,隨著技術的發展,ROM也可以寫數據,但是名字保留了下來。
ROM中比較常見的是EPROM和EEPROM。
EPROM
EPROM(Easerable Programable ROM)是一種具有可擦除功能,擦除後即可進行再編程的ROM內存,寫入前必須先把裡面的內容用紫外線照射IC上的透明視窗的方式來清除掉。這一類晶元比較容易識別,其封裝中包含有「石英玻璃窗」,一個編程後的EPROM晶元的「玻璃窗」一般使用黑色不幹膠紙蓋住, 以防止遭到紫外線照射。
EPROM (Easerable Programable ROM)
EPROM存儲器就可以多次擦除然後多次寫入了。但是要在特定環境紫外線下擦除,所以這種存儲器也不方便寫入。
EEPROM
EEPROM(Eelectrically Easerable Programable ROM),電可擦除ROM,現在使用的比較多,因為只要有電就可擦除數據,再重新寫入數據,在使用的時候可頻繁地反復編程。
FLASH
FLASH ROM也是一種可以反復寫入和讀取的存儲器,也叫快閃記憶體,FLASH是EEPROM的變種,與EEPROM不同的是,EEPROM能在位元組水平上進行刪除和重寫而不是整個晶元擦寫,而FLASH的大部分晶元需要塊擦除。和EEPROM相比,FLASH的存儲容量更大。
FLASH目前應用非常廣泛,U盤、CF卡、SM卡、SD/MMC卡、記憶棒、XD卡、MS卡、TF卡等等都屬於FLASH,SSD固態硬碟也屬於FLASH。
NOR FLAHS & NAND FLASH
Flash又分為Nor Flash和Nand Flash。
Intel於1988年首先開發出Nor Flash 技術,徹底改變了原先由EPROM和EEPROM一統天下的局面;隨後,1989年,東芝公司發表了Nand Flash 結構,強調降低每比特的成本,有更高的性能,並且像磁碟一樣可以通過介面輕松升級。
Nor Flash與Nand Flash不同,Nor Flash更像內存,有獨立的地址線和數據線,但價格比較貴,容量比較小;而Nand Flash更像硬碟,地址線和數據線是共用的I/O線,類似硬碟的所有信息都通過一條硬碟線傳送一樣,而且Nand Flash與Nor Flash相比,成本要低一些,而容量大得多。
如果快閃記憶體只是用來存儲少量的代碼,這時Nor Flash更適合一些。而Nand Flash則是大量數據存儲的理想解決方案。
因此,Nor Flash型快閃記憶體比較適合頻繁隨機讀寫的場合,通常用於存儲程序代碼並直接在快閃記憶體內運行,Nand Flash型快閃記憶體主要用來存儲資料,我們常用的快閃記憶體產品,如U盤、存儲卡都是用Nand Flash型快閃記憶體。
在Nor Flash上運行代碼不需要任何的軟體支持,在Nand Flash上進行同樣操作時,通常需要驅動程序。
目前手機中的機身內存容量都比較大,主流配置已經有32G~128G存儲空間,用的通常就是Nand Flash,另外手機的外置擴展存儲卡也是Nand Flash。
❷ mysql 存儲金額類型,用什麼數據類型比較可靠,一般企業數據用什麼數據類型
「數字類」,就是指 DECIMAL 和 NUMERIC,它們是同一種類型。它嚴格的說不是一種數字類型,因為他們實際上是將數字以字元串形式保存的;他的值的每一位 (包括小數點) 佔一個位元組的存儲空間,因此這種類型耗費空間比較大。但是它的一個突出的優點是小數的位數固定,在運算中不會「失真」,所以比較適合用於「價格」、「金額」這樣對精度要求不高但准確度要求非常高的欄位。
❸ 數據結構的存儲方式有哪幾種
數據結構的存儲方式有順序存儲方法、鏈接存儲方法、索引存儲方法和散列存儲方法這四種。
1、順序存儲方式:順序存儲方式就是在一塊連續的存儲區域一個接著一個的存放數據,把邏輯上相連的結點存儲在物理位置上相鄰的存儲單元里,結點間的邏輯關系由存儲單元的鄰接掛安息來體現。順序存儲方式也稱為順序存儲結構,一般採用數組或者結構數組來描述。
2、鏈接存儲方法:它比較靈活,其不要求邏輯上相鄰的結點在物理位置上相鄰,結點間的邏輯關系由附加的引用欄位表示。一個結點的引用欄位往往指導下一個結點的存放位置。鏈接存儲方式也稱為鏈接式存儲結構,一般在原數據項中增加應用類型來表示結點之間的位置關系。
3、索引存儲方法:除建立存儲結點信息外,還建立附加的索引表來標識結點的地址。它細分為兩類:稠密索引:每個結點在索引表中都有一個索引項,索引項的地址指示結點所在的的存儲位置;稀疏索引:一組結點在索引表中只對應一個索引項,索引項的地址指示一組結點的起始存儲位置。
4、散列存儲方法:就是根據結點的關鍵字直接計算出該結點的存儲地址。
(3)存儲數據類型擴展閱讀
順序存儲和鏈接存儲的基本原理
在順序存儲中,每個存儲空間含有所存元素本身的信息,元素之間的邏輯關系是通過數組下標位置簡單計算出來的線性表的順序存儲,若一個元素存儲在對應數組中的下標位置為i,則它的前驅元素在對應數組中的下標位置為i-1,它的後繼元素在對應數組中的下標位置為i+1。
在鏈式存儲結構中,存儲結點不僅含有所存元素本身的信息,還含有元素之間邏輯關系的信息。數據的鏈式存儲結構可用鏈接表來表示。其中data表示值域,用來存儲節點的數值部分。Pl,p2,…,Pill(1n≥1)均為指針域,每個指針域為其對應的後繼元素或前驅元素所在結點的存儲位置。
在數據的順序存儲中,由於每個元素的存儲位置都可以通過簡單計算得到,所以訪問元素的時間都相同;而在數據的鏈接存儲中,由於每個元素的存儲位置保存在它的前驅或後繼結點中,所以只有當訪問到其前驅結點或後繼結點後才能夠按指針訪問到,訪問任一元素的時間與該元素結點在鏈式存儲結構中的位置有關。
❹ 計算機可存儲的常見的數據類型有那些舉例說明。
1. 字元串數據類型
char
此數據類型可存儲1~8000個定長字元串,字元串長度在創建時指定;如未指定,默認為char(1)。每個字元佔用1byte存儲空間。
nchar
此數據類型可存儲1~4000個定長Unicode字元串,字元串長度在創建時指定;如未指定,默認為nchar(1)。每個字元佔用2bytes存儲空間。
varchar
此數據類型可存儲最大值為8000個字元的可變長字元串。可變長字元串的最大長度在創建時指定,如varchar(50),每個字元佔用1byte存儲空間。
nvarchar
此數據類型可存儲最大值為4000個字元可變長Unicode字元串。可變長Unicode字元串的最大長度在創建時指定,如nvarchar(50),每個字元佔用2bytes存儲空間。
text
此數據類型可存儲最大值為2147483647個字元的變長文本,並且無需指定其初始值,每個字元佔用1byte存儲空間,一般用來存儲大段的文章。text數據類型實際上是一個Large Object數據類型,默認情況下,此類型的數據不是存儲在數據行內,而是存儲於獨立的Large Object數據頁上。另外,text數據類型不能做為函數、存儲過程或觸發器中的參數來用。
ntext
同text數據類型,只不過存儲的是最大值為1073741823個字元的Unicode變長文本,每個字元佔用1byte存儲空間。
說明:無論使用哪種字元串數據類型,字元串值必須放在引號內,推薦使用單引號。
2. 數值數據類型
bit
此數據類型存儲值為0或1的二進制欄位。佔用1byte存儲空間。
tinyint
此數據類型存儲0~255的整數,佔用1byte存儲空間。
smallint
此數據類型存儲-32768~32767的整數,佔用2bytes存儲空間。
int
此數據類型存儲-2147483648~2147483647的整數,佔用4bytes存儲空間。
bigint
此數據類型存儲-9223372036854775808~9223372036854775807的整數,佔用8bytes存儲空間。
decimal/numeric
這兩個數據類型功能相同,均為存儲精度可變的浮點值。但推薦採用decimal,因其存儲的數據「更有說明性」。此種數據類型由兩個值來確定decimal(p,s),p為精度,s為標量,如decimal(3,2),其中數值2為小數的位數,那麼decimal(3,2)可用來存儲如1.28這樣的浮點數。此種數據類型佔用的存儲空間取決於精度值p。p為1~9,佔用5bytes存儲空間;p為10~19,佔用9bytes存儲空間;p為20~28,佔用13bytes存儲空間;p為29~38,佔用17bytes存儲空間。
❺ 存儲的數據類型
計算機處理數據的單位叫word,我們一般說的32位64位計算機就是指word。為了提高處理效率,數據盡量不要或少跨word存儲。這就需要數據的存儲地址是數據長度的整數倍,和類型長度一樣,對齊的單位一般是2的冪。基本類型對齊單位是其類型長度,組合類型(數組、結構、聯合)的對齊單位是其成員的最大對齊單位。由於默認對齊的存在,組合類型的成員之間可能有一些空隙,sizeof的結果可能不是簡單的累加了。但要注意,組合類型的成員總是盡量向低地址靠齊,所以組合類型的開頭是不會有空隙的。
❻ sql server 可以存儲的數據類型有哪些
varchar類型、int類型,nvarchar()類型,datetime類型,bigint類型,binary類型,bit類型,datetimeoffset類型,image類型,text類型,text類型
❼ sql資料庫中常用的數據類型有什麼
一、整數數據類型:整數數據類型是最常用的數據類型之一。
1、INT(INTEGER)
INT (或INTEGER)數據類型存儲從-2的31次方 (-2 ,147 ,483 ,648) 到2的31次方-1 (2 ,147 ,483,647) 之間的所有正負整數。每個INT 類型的數據按4 個位元組存儲,其中1 位表示整數值的正負號,其它31 位表示整數值的長度和大小。
2、SMALLINT
SMALLINT 數據類型存儲從-2的15次方( -32, 768) 到2的15次方-1( 32 ,767 )之間的所有正負整數。每個SMALLINT 類型的數據佔用2 個位元組的存儲空間,其中1 位表示整數值的正負號,其它15 位表示整數值的長度和大小。
二、浮點數據類型:浮點數據類型用於存儲十進制小數。浮點數值的數據在SQL Server 中採用上舍入(Round up 或稱為只入不舍)方式進行存儲。
1、REAL數據類型
REAL數據類型可精確到第7 位小數,其范圍為從-3.40E -38 到3.40E +38。 每個REAL類型的數據佔用4 個位元組的存儲空間。
2、FLOAT
FLOAT數據類型可精確到第15 位小數,其范圍為從-1.79E -308 到1.79E +308。 每個FLOAT 類型的數據佔用8 個位元組的存儲空間。 FLOAT數據類型可寫為FLOAT[ n ]的形式。n 指定FLOAT 數據的精度。n 為1到15 之間的整數值。
當n 取1 到7 時,實際上是定義了一個REAL 類型的數據,系統用4 個位元組存儲它;當n 取8 到15 時,系統認為其是FLOAT 類型,用8 個位元組存儲它。
三、二進制數據類型
1、BINARY
BINARY 數據類型用於存儲二進制數據。其定義形式為BINARY( n), n 表示數據的長度,取值為1 到8000 。在使用時必須指定BINARY 類型數據的大小,至少應為1 個位元組。BINARY 類型數據佔用n+4 個位元組的存儲空間。
在輸入數據時必須在數據前加上字元「0X」 作為二進制標識,如:要輸入「abc 」則應輸入「0xabc 」。若輸入的數據過長將會截掉其超出部分。若輸入的數據位數為奇數,則會在起始符號「0X 」後添加一個0,如上述的「0xabc 」會被系統自動變為「0x0abc」。
2、VARBINARY
VARBINARY數據類型的定義形式為VARBINARY(n)。 它與BINARY 類型相似,n 的取值也為1 到8000, 若輸入的數據過長,將會截掉其超出部分。
不同的是VARBINARY數據類型具有變動長度的特性,因為VARBINARY數據類型的存儲長度為實際數值長度+4個位元組。當BINARY數據類型允許NULL 值時,將被視為VARBINARY數據類型。
四、邏輯數據類型
1、BIT:BIT數據類型佔用1 個位元組的存儲空間,其值為0 或1 。如果輸入0 或1 以外的值,將被視為1。 BIT 類型不能定義為NULL 值(所謂NULL 值是指空值或無意義的值)。
五、字元數據類型:字元數據類型是使用最多的數據類型。它可以用來存儲各種字母、數字元號、特殊符號。一般情況下,使用字元類型數據時須在其前後加上單引號』或雙引號」 。
1、CHAR
CHAR 數據類型的定義形式為CHAR[ (n) ]。 以CHAR 類型存儲的每個字元和符號佔一個位元組的存儲空間。n 表示所有字元所佔的存儲空間,n 的取值為1 到8000, 即可容納8000 個ANSI 字元。
若不指定n 值,則系統默認值為1。 若輸入數據的字元數小於n,則系統自動在其後添加空格來填滿設定好的空間。若輸入的數據過長,將會截掉其超出部分。
(7)存儲數據類型擴展閱讀:
SQL包括了所有對資料庫的操作,主要是由4個部分組成:
1、數據定義:這一部分又稱為「SQL DDL」,定義資料庫的邏輯結構,包括定義資料庫、基本表、視圖和索引4部分。
2、數據操縱:這一部分又稱為「SQL DML」,其中包括數據查詢和數據更新兩大類操作,其中數據更新又包括插入、刪除和更新三種操作。
3、數據控制:對用戶訪問數據的控制有基本表和視圖的授權、完整性規則的描述,事務控制語句等。
4、嵌入式SQL語言的使用規定:規定SQL語句在宿主語言的程序中使用的規則。
❽ MySQL里存儲圖片的是什麼數據類型
背景
MySQL 一直以來都有 TEXT、BLOB 等類型用來存儲圖片、視頻等大對象信息。比如一張圖片,隨便一張都 5M 以上。視頻也是,隨便一部視頻就是 2G 以上。
假設用 MySQL 來存放電影視頻等信息,一部是 2G,那麼存儲 1000 部就是 2TB,2TB 也就是 1000 條記錄而已,但是對資料庫性能來說,不僅僅是看記錄數量,更主要的還得看佔用磁碟空間大小。空間大了,所有以前的經驗啥的都失效了。
所以一般來說存放這類信息,也就是存儲他們的存放路徑,至於文件本身存放在哪裡,那這就不是資料庫考慮的范疇了。資料庫只關心怎麼來的快,怎麼來的小。
舉例
雖然不推薦 MySQL 這樣做,但是也得知道 MySQL 該怎麼做才行,做到心裡有數。比如下面一張微信圖片,大概 5M 的樣子。
root@ytt:/var/lib/mysql-files# ls -sihl 微信圖片_20190711095019.jpg274501 5.4M -rw-r--r-- 1 root root 5.4M Jul 11 07:17 微信圖片_20190711095019.jpg
拷貝 100 份這樣的圖片來測試
root@ytt:/var/lib/mysql-files# for i in `seq 1 100`; do cp 微信圖片_20190711095019.jpg "$i".jpg;done;
root@ytt:/var/lib/mysql-files# ls
100.jpg 17.jpg 25.jpg 33.jpg 41.jpg 4.jpg 58.jpg 66.jpg 74.jpg 82.jpg 90.jpg 99.jpg f8.tsv
10.jpg 18.jpg 26.jpg 34.jpg 42.jpg 50.jpg 59.jpg 67.jpg 75.jpg 83.jpg 91.jpg 9.jpg 微信圖片_20190711095019.jpg
1111.jpg 19.jpg 27.jpg 35.jpg 43.jpg 51.jpg 5.jpg 68.jpg 76.jpg 84.jpg 92.jpg f1.tsv
11.jpg 1.jpg 28.jpg 36.jpg 44.jpg 52.jpg 60.jpg 69.jpg 77.jpg 85.jpg 93.jpg f2.tsv
12.jpg 20.jpg 29.jpg 37.jpg 45.jpg 53.jpg 61.jpg 6.jpg 78.jpg 86.jpg 94.jpg f3.tsv
13.jpg 21.jpg 2.jpg 38.jpg 46.jpg 54.jpg 62.jpg 70.jpg 79.jpg 87.jpg 95.jpg f4.tsv
14.jpg 22.jpg 30.jpg 39.jpg 47.jpg 55.jpg 63.jpg 71.jpg 7.jpg 88.jpg 96.jpg f5.tsv
15.jpg 23.jpg 31.jpg 3.jpg 48.jpg 56.jpg 64.jpg 72.jpg 80.jpg 89.jpg 97.jpg f6.tsv
16.jpg 24.jpg 32.jpg 40.jpg 49.jpg 57.jpg 65.jpg 73.jpg 81.jpg 8.jpg 98.jpg f7.tsv
mysql> show create table tt_image1G
*************************** 1. row ***************************
Table: tt_image1
Create Table: CREATE TABLE `tt_image1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`image_file` longblob,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
mysql> show create table tt_image2G
*************************** 1. row ***************************
Table: tt_image2
Create Table: CREATE TABLE `tt_image2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`image_file` longtext,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
mysql> show create table tt_image3G
*************************** 1. row ***************************
Table: tt_image3
Create Table: CREATE TABLE `tt_image3` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`image_file` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
tt_image1
root@ytt:/var/lib/mysql-files# for i in `seq 1 100`;
do mysql -S /var/run/mysqld/mysqld.sock -e "insert into ytt.tt_image1(image_file)
values (load_file('/var/lib/mysql-files/$i.jpg'))";done;
tt_image2
root@ytt:/var/lib/mysql-files# for i in `seq 1 100`;
do mysql -S /var/run/mysqld/mysqld.sock -e "insert into ytt.tt_image2(image_file)
values (hex(load_file('/var/lib/mysql-files/$i.jpg')))";done;
tt_image3
root@ytt:/var/lib/mysql-files# aa='begin;';for i in `seq 1 100`;
do aa=$aa"insert into ytt.tt_image3(image_file) values
('/var/lib/mysql-files/$i.jpg');";
done;aa=$aa'commit;';mysql -S /var/run/mysqld/mysqld.sock -e "`echo $aa`";
- mysql> select 'tt_image1' as name ,count(*) from tt_image1 union allselect 'tt_image2',count(*) from tt_image2 union all select 'tt_image3', count(*) from tt_image3;+-----------+----------+| name | count(*) |+-----------+----------+| tt_image1 | 100 || tt_image2 | 100 || tt_image3 | 100 |+-----------+----------+3 rows in set (0.00 sec)
- root@ytt:/var/lib/mysql/ytt# ls -silhS tt_image*274603 1.1G -rw-r----- 1 mysql mysql 1.1G Jul 11 07:27 tt_image2.ibd274602 545M -rw-r----- 1 mysql mysql 544M Jul 11 07:26 tt_image1.ibd274605 80K -rw-r----- 1 mysql mysql 112K Jul 11 07:27 tt_image3.ibd
- mysql> select * from tt_image3;+----+----------------------------+| id | image_file |+----+----------------------------+| 1 | /var/lib/mysql-files/1.jpg |+----+----------------------------+...100 rows in set (0.00 sec)
- mysql> DELIMITER $$mysql> USE `ytt`$$mysql> DROP PROCEDURE IF EXISTS `sp_get_image`$$mysql> CREATE DEFINER=`ytt`@`localhost` PROCEDURE `sp_get_image`()mysql> BEGIN DECLARE i,cnt INT DEFAULT 0; SELECT COUNT(*) FROM tt_image1 WHERE 1 INTO cnt; WHILE i < cnt DO SET @stmt = CONCAT('select image_file from tt_image1 limit ',i,',1 into mpfile ''/var/lib/mysql-files/image',i,'.jpg'''); PREPARE s1 FROM @stmt; EXECUTE s1; DROP PREPARE s1; SET i = i + 1; END WHILE; END$$mysql> DELIMITER ;mysql> call sp_get_image;
佔用磁碟空間大(這樣會帶來各種各樣的功能與性能問題,比如備份,寫入,讀取操作等)
使用不易
還是推薦用文件路徑來代替實際的文件內容存放
我們建三張表,分別用 LONGBLOB、LONGTEXT 和 VARCHAR 來存儲這些圖片信息
我們來給三張表插入 100 張圖片(插入前,建議把 max_allowed_packet 設置到最大)
檢查下三張表記錄數
看下文件大小,可以看到實際大小排名,LONGTEXT 欄位存儲的最大,LONGBLOB 欄位縮小到一半,最小的是存儲圖片路徑的表 tt_image3。所以這里從存儲空間來看,存放路徑最占優勢。
那麼怎麼把圖片取出來呢?
tt_image3 肯定是最容易的
tt_image1 直接導出來二進制文件即可,下面我寫了個存儲過程,導出所有圖片。
tt_image2 類似,把 select 語句里 image_file 變為 unhex(image_file) 即可。
總結
這里我舉了個用 MySQL 來存放圖片的例子,總的來說有以下三點:
❾ 資料庫中數據類型有哪些呢
數據類型 類型 描 述 bit 整型 bit 數據類型是整型,其值只能是0、1或空值。這種數據類型用於存儲只有兩種可能值的數據,如Yes 或No、True 或Fa lse 、On 或Off int 整型 int 數據類型可以存儲從- 231(-2147483648)到231 (2147483 647)之間的整數。存儲到資料庫的幾乎所有數值型的數據都可以用這種數據類型。這種數據類型在資料庫里佔用4個位元組 smallint 整型 smallint 數據類型可以存儲從- 215(-32768)到215(32767)之間的整數。這種數據類型對存儲一些常限定在特定范圍內的數值型數據非常有用。這種數據類型在資料庫里佔用2 位元組空間 tinyint 整型 tinyint 數據類型能存儲從0到255 之間的整數。它在你只打算存儲有限數目的數值時很有用。 這種數據類型在資料庫中佔用1 個位元組 numeric精確數值型 numeric數據類型與decimal 型相同 decimal 精確數值型 decimal 數據類型能用來存儲從-1038-1到1038-1的固定精度和范圍的數值型數據。使用這種數據類型時,必須指定范圍和精度。 范圍是小數點左右所能存儲的數字的總位數。精度是小數點右邊存儲的數字的位數 money 貨幣型 money 數據類型用來表示錢和貨幣值。這種數據類型能存儲從-9220億到9220 億之間的數據,精確到貨幣單位的萬分之一 smallmoney 貨幣型 smallmoney 數據類型用來表示錢和貨幣值。這種數據類型能存儲從-214748.3648 到214748.3647 之間的數據,精確到貨幣單位的萬分之一 float 近似數值型 float 數據類型是一種近似數值類型,供浮點數使用。說浮點數是近似的,是因為在其范圍內不是所有的數都能精確表示。浮點數可以是從-1.79E+308到1.79E+308 之間的任意數 real 近似數值型 real 數據類型像浮點數一樣,是近似數值類型。它可以表示數值在-3.40E+38到3.40E+38之間的浮點數 datetime 日期時間型 datetime數據類型用來表示日期和時間。這種數據類型存儲從1753年1月1日到9999年12月3 1日間所有的日期和時間數據, 精確到三百分之一秒或3.33毫秒 Smalldatetime 日期時間型 smalldatetime 數據類型用來表示從1900年1月1日到2079年6月6日間的日期和時間,精確到一分鍾 cursor 特殊數據型 cursor 數據類型是一種特殊的數據類型,它包含一個對游標的引用。這種數據類型用在存儲過程中,而且創建表時不能用 timestamp 特殊數據型 timestamp 數據類型是一種特殊的數據類型,用來創建一個資料庫范圍內的唯一數碼。 一個表中只能有一個timestamp列。每次插入或修改一行時,timestamp列的值都會改變。盡管它的名字中有「time」, 但timestamp列不是人們可識別的日期。在一個資料庫里,timestamp值是唯一的 Uniqueidentifier 特殊數據型 Uniqueidentifier數據類型用來存儲一個全局唯一標識符,即GUID。GUID確實是全局唯一的。這個數幾乎沒有機會在另一個系統中被重建。可以使用NEWID 函數或轉換一個字元串為唯一標識符來初始化具有唯一標識符的列 char 字元型 char數據類型用來存儲指定長度的定長非統一編碼型的數據。當定義一列為此類型時,你必須指定列長。當你總能知道要存儲的數據的長度時,此數據類型很有用。例如,當你按郵政編碼加4個字元格式來存儲數據時,你知道總要用到10個字元。此數據類型的列寬最大為8000 個字元 varchar 字元型 varchar數據類型,同char類型一樣,用來存儲非統一編碼型字元數據。與char 型不一樣,此數據類型為變長。當定義一列為該數據類型時,你要指定該列的最大長度。 它與char數據類型最大的區別是,存儲的長度不是列長,而是數據的長度 text 字元型 text 數據類型用來存儲大量的非統一編碼型字元數據。這種數據類型最多可以有231-1或20億個字元 nchar 統一編碼字元型 nchar 數據類型用來存儲定長統一編碼字元型數據。統一編碼用雙位元組結構來存儲每個字元,而不是用單位元組(普通文本中的情況)。它允許大量的擴展字元。此數據類型能存儲4000種字元,使用的位元組空間上增加了一倍 nvarchar 統一編碼字元型 nvarchar 數據類型用作變長的統一編碼字元型數據。此數據類型能存儲4000種字元,使用的位元組空間增加了一倍 ntext 統一編碼字元型 ntext 數據類型用來存儲大量的統一編碼字元型數據。這種數據類型能存儲230 -1或將近10億個字元,且使用的位元組空間增加了一倍 binary 二進制數據類型 binary數據類型用來存儲可達8000 位元組長的定長的二進制數據。當輸入表的內容接近相同的長度時,你應該使用這種數據類型 varbinary 二進制數據類型 varbinary 數據類型用來存儲可達8000 位元組長的變長的二進制數據。當輸入表的內容大小可變時,你應該使用這種數據類型 image 二進制數據類型 image 數據類型用來存儲變長的二進制數據,最大可達231-1或大約20億位元組
❿ 最常用的數值數據類型有哪些
一、 整數數據類型:整數數據類型是最常用的數據類型之一。
1、INT (INTEGER)
INT (或INTEGER)數據類型存儲從-2的31次方 (-2 ,147 ,483 ,648) 到2的31次方-1 (2 ,147 ,483,647) 之間的所有正負整數。每個INT 類型的數據按4 個位元組存儲,其中1 位表示整數值的正負號,其它31 位表示整數值的長度和大小。
2、SMALLINT
SMALLINT 數據類型存儲從-2的15次方( -32, 768) 到2的15次方-1( 32 ,767 )之間的所有正負整數。每個SMALLINT 類型的數據佔用2 個位元組的存儲空間,其中1 位表示整數值的正負號,其它15 位表示整數值的長度和大小。
二、 浮點數據類型:浮點數據類型用於存儲十進制小數。浮點數值的數據在SQL Server 中採用上舍入(Round up 或稱為只入不舍)方式進行存儲。
1、REAL 數據類型
REAL數據類型可精確到第7 位小數,其范圍為從-3.40E -38 到3.40E +38。 每個REAL類型的數據佔用4 個位元組的存儲空間。
2、FLOAT
FLOAT數據類型可精確到第15 位小數,其范圍為從-1.79E -308 到1.79E +308。 每個FLOAT 類型的數據佔用8 個位元組的存儲空間。 FLOAT數據類型可寫為FLOAT[ n ]的形式。n 指定FLOAT 數據的精度。n 為1到15 之間的整數值。
當n 取1 到7 時,實際上是定義了一個REAL 類型的數據,系統用4 個位元組存儲它;當n 取8 到15 時,系統認為其是FLOAT 類型,用8 個位元組存儲它。
三、 二進制數據類型
1、BINARY
BINARY 數據類型用於存儲二進制數據。其定義形式為BINARY( n), n 表示數據的長度,取值為1 到8000 。在使用時必須指定BINARY 類型數據的大小,至少應為1 個位元組。BINARY 類型數據佔用n+4 個位元組的存儲空間。
在輸入數據時必須在數據前加上字元「0X」 作為二進制標識,如:要輸入「abc 」則應輸入「0xabc 」。若輸入的數據過長將會截掉其超出部分。若輸入的數據位數為奇數,則會在起始符號「0X 」後添加一個0,如上述的「0xabc 」會被系統自動變為「0x0abc」。
2、VARBINARY
VARBINARY數據類型的定義形式為VARBINARY(n)。 它與BINARY 類型相似,n 的取值也為1 到8000, 若輸入的數據過長,將會截掉其超出部分。
不同的是VARBINARY數據類型具有變動長度的特性,因為VARBINARY數據類型的存儲長度為實際數值長度+4個位元組。當BINARY數據類型允許NULL 值時,將被視為VARBINARY數據類型。
四、 邏輯數據類型
BIT: BIT數據類型佔用1 個位元組的存儲空間,其值為0 或1 。如果輸入0 或1 以外的值,將被視為1。 BIT 類型不能定義為NULL 值(所謂NULL 值是指空值或無意義的值)。
五、 字元數據類型:字元數據類型是使用最多的數據類型。它可以用來存儲各種字母、數字元號、特殊符號。一般情況下,使用字元類型數據時須在其前後加上單引號』或雙引號」 。
CHAR 數據類型的定義形式為CHAR[ (n) ]。 以CHAR 類型存儲的每個字元和符號佔一個位元組的存儲空間。n 表示所有字元所佔的存儲空間,n 的取值為1 到8000, 即可容納8000 個ANSI 字元。
若不指定n 值,則系統默認值為1。 若輸入數據的字元數小於n,則系統自動在其後添加空格來填滿設定好的空間。若輸入的數據過長,將會截掉其超出部分。