SQL Server常用數(shù)據(jù)類型
我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、樺南ssl等。為超過千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的樺南網(wǎng)站制作公司
數(shù)據(jù)類型是數(shù)據(jù)的一種屬性,是數(shù)據(jù)所表示信息的類型。下面是我為大家搜索整理了關(guān)于SQLServer常用數(shù)據(jù)類型,歡迎參考閱讀,希望對大家有所幫助。
SQLServer2000提供了比較多的數(shù)據(jù)類型供用戶使用,包括字符型數(shù)據(jù)類型、數(shù)值型數(shù)據(jù)類型、貨幣型數(shù)據(jù)類型、日期/時(shí)間型數(shù)據(jù)類型等。
一、字符型數(shù)據(jù)類型
字符型數(shù)據(jù)類型是使用最多的數(shù)據(jù)類型。它可以用來存儲(chǔ)各種字母、數(shù)字符號(hào)、特殊符號(hào)。在使用字符類型數(shù)據(jù)時(shí),必須為其加上單引號(hào)。若將數(shù)值數(shù)據(jù)包括在單引號(hào)中,將被視為字符類型數(shù)據(jù)。一般來說,字符型數(shù)據(jù)類型有兩種基本形式:
(一)CHAR定長字符型數(shù)據(jù)類型
CHAR數(shù)據(jù)類型的定義形式為CHAR(n),n為長度,n的取值范圍為1-8000,共占n個(gè)字節(jié)。若存儲(chǔ)的字符串長度小于n,則系統(tǒng)自動(dòng)使用空格填補(bǔ)剩余的位置。若存儲(chǔ)的字符串長度大于n,那么在執(zhí)行插入記錄語句時(shí)將導(dǎo)致執(zhí)行錯(cuò)誤。
(二)VARCHAR變長字符型數(shù)據(jù)類型
VARCHAR數(shù)據(jù)類型的定義形式為VARCHAR(n),最大長度為n,n的取值范圍為1-8000。VARCHAR數(shù)據(jù)類型的存儲(chǔ)長度為實(shí)際字符串的長度,若存儲(chǔ)的字符串長度小于n,系統(tǒng)不會(huì)使用空格填補(bǔ)剩余的位置。VARCHAR數(shù)據(jù)類型通常用于存放長度變化較大的字符串,這樣可以節(jié)約大量的存儲(chǔ)空間。但是使用varn)數(shù)據(jù)類型的缺點(diǎn)是,這種變長的存儲(chǔ)方法使得用戶無法確切地估計(jì)存儲(chǔ)數(shù)據(jù)所使用的空間大小。
二、數(shù)值型數(shù)據(jù)類型
數(shù)值型數(shù)據(jù)類型包括整型數(shù)據(jù)類型、數(shù)字?jǐn)?shù)據(jù)類型和浮點(diǎn)數(shù)據(jù)類型三種。
(一)整型數(shù)據(jù)類型
整型數(shù)據(jù)類型只存儲(chǔ)整數(shù)。整型數(shù)據(jù)類型包括以下四種:
bigint數(shù)據(jù)類型
bigint數(shù)據(jù)類型占8個(gè)字節(jié),共64位,能夠存儲(chǔ)-263~263-1之間的所有正負(fù)整數(shù)。在64位中,63位用來存儲(chǔ)數(shù)值,1位用來存儲(chǔ)數(shù)值的正負(fù)。
int數(shù)據(jù)類型
int數(shù)據(jù)類型占4個(gè)字節(jié),共32位,能夠存儲(chǔ)-231~231-1之間的所有正負(fù)整數(shù)。在32位中,31位用來存儲(chǔ)數(shù)值,1位用來存儲(chǔ)數(shù)值的正負(fù)。
smallint數(shù)據(jù)類型
smallint數(shù)據(jù)類型占2個(gè)字節(jié),共16位,能夠存儲(chǔ)-215~215-1之間的所有正負(fù)整數(shù)。在16位中,15位用來存儲(chǔ)數(shù)值,1位用來存儲(chǔ)數(shù)值的正負(fù)。
(二)數(shù)字?jǐn)?shù)據(jù)類型
數(shù)字?jǐn)?shù)據(jù)類型包括decimal數(shù)據(jù)類型和numeric數(shù)據(jù)類型兩種,numeric數(shù)據(jù)類型與decimal數(shù)據(jù)類型完全相同。decimal數(shù)據(jù)類型可以提供小數(shù)所需要的實(shí)際存儲(chǔ)空間,decimal數(shù)據(jù)類型最多可存儲(chǔ)38位數(shù)字。
decimal數(shù)據(jù)類型的定義形式為decimal(p,s)。
其中:
p:為指定精度或?qū)ο竽軌蚩刂频臄?shù)字個(gè)數(shù)。
s:為指定可放到小數(shù)點(diǎn)右邊的小數(shù)位數(shù)或數(shù)字個(gè)數(shù)。
p和s必須遵守以下規(guī)則:0=s=p=38。
(三)浮點(diǎn)數(shù)據(jù)類型
浮點(diǎn)數(shù)據(jù)類型包括float數(shù)據(jù)類型和real數(shù)據(jù)類型,這兩種數(shù)據(jù)類型被稱為近似數(shù)據(jù)類型。
real數(shù)據(jù)類型
real數(shù)據(jù)類型占4個(gè)字節(jié),共32位,能夠存儲(chǔ)-3.40E+38~3.40E+38之間所有的浮點(diǎn)數(shù)。
float數(shù)據(jù)類型
float數(shù)據(jù)類型占8個(gè)字節(jié),共64位,能夠存儲(chǔ)-1.79E+308~1.79E+308之間所有的浮點(diǎn)數(shù)。float數(shù)據(jù)類型可精確到第15位小數(shù)。float數(shù)據(jù)類型可以定義為float(n),n為數(shù)據(jù)的精度。若n取1到7時(shí),實(shí)際上是定義了一個(gè)real類型的數(shù)據(jù),系統(tǒng)將分配4個(gè)字節(jié)的.空間存儲(chǔ)數(shù)據(jù);若n取8到15時(shí),系統(tǒng)認(rèn)為其是float類型,將分配8個(gè)字節(jié)的空間存儲(chǔ)數(shù)據(jù)。
三、貨幣型數(shù)據(jù)類型
貨幣型數(shù)據(jù)類型用于存儲(chǔ)貨幣值。在SQLServer2000中提供兩種貨幣型數(shù)據(jù)類型:money數(shù)據(jù)類型和smallmoney數(shù)據(jù)類型。
(一)money數(shù)據(jù)類型
money數(shù)據(jù)類型使用8個(gè)字節(jié)存儲(chǔ)數(shù)據(jù),由兩部分組成,前面4個(gè)字節(jié)表示貨幣值的整數(shù)部分,后面4個(gè)字節(jié)表示貨幣值的小數(shù)部分。
(二)smallmoney數(shù)據(jù)類型
smallmoney數(shù)據(jù)類型類似于money類型,使用4個(gè)字節(jié)存儲(chǔ)數(shù)據(jù),前面2個(gè)字節(jié)表示貨幣值的整數(shù)部分,后面2個(gè)字節(jié)表示貨幣值的小數(shù)部分。
四、日期/時(shí)間型數(shù)據(jù)類型
日期/時(shí)間型數(shù)據(jù)類型用于存儲(chǔ)日期和時(shí)間的結(jié)合體。
(一)datetime數(shù)據(jù)類型
datetime數(shù)據(jù)類型可以存儲(chǔ)從公元1753年1月1日零時(shí)起到公元9999年12月31日23時(shí)59分59秒之間的所有日期和時(shí)間,其精確度可達(dá)三百分之一秒。datetime數(shù)據(jù)類型占用8個(gè)字節(jié)的存儲(chǔ)空間。
(二)smalldatetime數(shù)據(jù)類型
smalldatetime數(shù)據(jù)類型與datetime數(shù)據(jù)類型相似,但其日期時(shí)間范圍較小,可以存儲(chǔ)從1900年1月1日到2079年6月6日,精度可以達(dá)到分鐘。smalldatetime數(shù)據(jù)類型占用4個(gè)字節(jié)的存儲(chǔ)空間。
SQL Server vNext on Linux安裝
今天微軟正式發(fā)布上SQL Server 2016 SP1,根據(jù)以往的SP1定律,可以在生產(chǎn)環(huán)境上使用了。打了SP1的標(biāo)準(zhǔn)版將具有企業(yè)版幾乎所有的的功能。只有RAM 超過128GB或者超過24核心或者超過4路的環(huán)境才必須要安裝企業(yè)版。
還有一個(gè)重要的發(fā)布:SQL Server vNext on Linux。也是本文介紹安裝的版本。長話短說,開始安裝。
這個(gè)版本的SQL Server,官方支持的平臺(tái)是Red Hat Enterpise 7.2 或者Ubuntu 16.04。但是我手上暫時(shí)沒有Red Hat,就用CentOS 7.2試試。我是以root身份安裝的。
1. 安裝
#下載庫配置文件curl /etc/yum.repos.d/mssql-server.repo#安裝sudo yum install -y mssql-server
2. 運(yùn)行配置文件
#運(yùn)行SQL Server的配置文件進(jìn)行配置。#這個(gè)過程會(huì)要你同意License條款,設(shè)置SA密碼,設(shè)置SQL Server服務(wù)開機(jī)啟動(dòng)/opt/mssql/bin/sqlservr-setup
3. 檢查服務(wù)狀態(tài)
#檢查SQL Server的服務(wù)狀態(tài)systemctl status mssql-server
4. 修改防火墻
#修改防火墻,允許1433端口systemctl start firewalldfirewall-cmd --zone=public --add-port=1433/tcp --permanentfirewall-cmd --reload
5. 安裝SQL工具,包括sqlcmd和bcp
#下載源的庫配置文件curl /etc/yum.repos.d/msprod.repo#安裝toolsyum install mssql-tools
6. 連接測試
# 使用sqlcmd的本地連接。直接在-P參數(shù)后填密碼或者回車后輸入密碼。sqlcmd -S . -U SA -p
發(fā)現(xiàn)sqlcmd的使用方式和windows下是一樣的。返回內(nèi)容最后有一個(gè)根據(jù)當(dāng)前查詢的耗時(shí)預(yù)估的每秒事務(wù)處量。
然后建個(gè)庫,建個(gè)表試試。
遠(yuǎn)程連接。從windows使用sqlcmd,用外網(wǎng)IP連接
使用SSMS連接,我使用是SQL 2014安裝時(shí)自帶SSMS,可能會(huì)有一些不支持問題??梢钥吹紸gent沒啟動(dòng)的,實(shí)際上是這個(gè)版本沒有Agent。
有意思的是,使用SSMS可以創(chuàng)建庫,卻不能創(chuàng)建表。從錯(cuò)誤信息來看,似乎是不支持圖形界面創(chuàng)建表。
總結(jié):
嘗鮮性地測試一下,有機(jī)會(huì)還會(huì)測試更多功能。目前不支持Agent,復(fù)制和大部分BI功能組件。
很多人對SQL Server On Linux是有所期待。如果它在Linux上的表現(xiàn)與之在以往Windows上的表現(xiàn)一樣優(yōu)秀的話,我相信會(huì)有更多人會(huì)使用它的。
SQL Server On Linux的更多文檔內(nèi)容:SQL Server on Linux Documentation
;
數(shù)據(jù)庫備份可以分為4個(gè)備份類型。
l 全備份:創(chuàng)建備份完成時(shí)數(shù)據(jù)庫內(nèi)存在的數(shù)據(jù)的副本。
l 差異備份:只記錄自上次數(shù)據(jù)庫備份后發(fā)生更改的數(shù)據(jù)。差異數(shù)據(jù)庫備份比數(shù)據(jù)庫備份小,而且備份速度快,因此可以更經(jīng)常地備份,經(jīng)常備份將減少丟失數(shù)據(jù)的危險(xiǎn)。
l 日志備份:是自上次備份事務(wù)日志后對數(shù)據(jù)庫執(zhí)行的所有事務(wù)的一系列記錄??梢允褂檬聞?wù)日志備份將數(shù)據(jù)庫恢復(fù)到特定的即時(shí)點(diǎn)(如輸入多余數(shù)據(jù)前的那一點(diǎn))或恢復(fù)到故障點(diǎn)。
l 文件組備份:可以備份和還原數(shù)據(jù)庫中的個(gè)別文件??梢灾贿€原已損壞的文件,而不用還原數(shù)據(jù)庫的其余部分,從而加快了恢復(fù)速度。
不同的備份類型適用的范圍也不同。全備份,可以只用一步操作完成數(shù)據(jù)的全部備份,但執(zhí)行時(shí)間比較長。差異備份和日志備份,都不能獨(dú)立作為一個(gè)備份集來使用,需要進(jìn)行一次全備份。文件備份必須與事務(wù)日志備份一起使用,所以文件備份只適用于完全恢復(fù)模型和大容量日志記錄恢復(fù)模型。
每一種備份類型都有不足之處,要針對需要選擇備份類型,或者使用幾種備份方式的配合來完成數(shù)據(jù)庫的備份。
經(jīng)常使用備份方式組合有以下幾種:
l 全備份+差異備份:以一周為周期,星期日進(jìn)行全備份,星期一到星期六每天進(jìn)行差異備份。
l 全備份+日志備份:以一周為周期,星期日進(jìn)行全備份,星期一到星期六每天進(jìn)行日志備份。
l 文件組備份+日志備份:備份周期取決于數(shù)據(jù)庫的大小和能力,每周期分別進(jìn)行一部分?jǐn)?shù)據(jù)文件備份,每天進(jìn)行日志備份。
bit 整型 bit 數(shù)據(jù)類型是整型,其值只能是0、1或空值。這種數(shù)據(jù)類型用于存儲(chǔ)只有兩種可能值的數(shù)據(jù),如Yes 或No、True 或Fa lse 、On 或Off
int 整型 int 數(shù)據(jù)類型可以存儲(chǔ)從- 231(-2147483648)到231 (2147483 647)之間的整數(shù)。存儲(chǔ)到數(shù)據(jù)庫的幾乎所有數(shù)值型的數(shù)據(jù)都可以用這種數(shù)據(jù)類型。這種數(shù)據(jù)類型在數(shù)據(jù)庫里占用4個(gè)字節(jié)
smallint 整型 smallint 數(shù)據(jù)類型可以存儲(chǔ)從- 215(-32768)到215(32767)之間的整數(shù)。這種數(shù)據(jù)類型對存儲(chǔ)一些常限定在特定范圍內(nèi)的數(shù)值型數(shù)據(jù)非常有用。這種數(shù)據(jù)類型在數(shù)據(jù)庫里占用2 字節(jié)空間
tinyint 整型 tinyint 數(shù)據(jù)類型能存儲(chǔ)從0到255 之間的整數(shù)。它在你只打算存儲(chǔ)有限數(shù)目的數(shù)值時(shí)很有用。 這種數(shù)據(jù)類型在數(shù)據(jù)庫中占用1 個(gè)字節(jié)
numeric 精確數(shù)值型 numeric數(shù)據(jù)類型與decimal 型相同
decimal 精確數(shù)值型 decimal 數(shù)據(jù)類型能用來存儲(chǔ)從-1038-1到1038-1的固定精度和范圍的數(shù)值型數(shù)據(jù)。使用這種數(shù)據(jù)類型時(shí),必須指定范圍和精度。 范圍是小數(shù)點(diǎn)左右所能存儲(chǔ)的數(shù)字的總位數(shù)。精度是小數(shù)點(diǎn)右邊存儲(chǔ)的數(shù)字的位數(shù)
money 貨幣型 money 數(shù)據(jù)類型用來表示錢和貨幣值。這種數(shù)據(jù)類型能存儲(chǔ)從-9220億到9220 億之間的數(shù)據(jù),精確到貨幣單位的萬分之一
smallmoney 貨幣型 smallmoney 數(shù)據(jù)類型用來表示錢和貨幣值。這種數(shù)據(jù)類型能存儲(chǔ)從-214748.3648 到214748.3647 之間的數(shù)據(jù),精確到貨幣單位的萬分之一
float 近似數(shù)值型 float 數(shù)據(jù)類型是一種近似數(shù)值類型,供浮點(diǎn)數(shù)使用。說浮點(diǎn)數(shù)是近似的,是因?yàn)樵谄浞秶鷥?nèi)不是所有的數(shù)都能精確表示。浮點(diǎn)數(shù)可以是從-1.79E+308到1.79E+308 之間的任意數(shù)
real 近似數(shù)值型 real 數(shù)據(jù)類型像浮點(diǎn)數(shù)一樣,是近似數(shù)值類型。它可以表示數(shù)值在-3.40E+38到3.40E+38之間的浮點(diǎn)數(shù)
datetime 日期時(shí)間型 datetime數(shù)據(jù)類型用來表示日期和時(shí)間。這種數(shù)據(jù)類型存儲(chǔ)從1753年1月1日到9999年12月3 1日間所有的日期和時(shí)間數(shù)據(jù), 精確到三百分之一秒或3.33毫秒
Smalldatetime 日期時(shí)間型 smalldatetime 數(shù)據(jù)類型用來表示從1900年1月1日到2079年6月6日間的日期和時(shí)間,精確到一分鐘
cursor 特殊數(shù)據(jù)型 cursor 數(shù)據(jù)類型是一種特殊的數(shù)據(jù)類型,它包含一個(gè)對游標(biāo)的引用。這種數(shù)據(jù)類型用在存儲(chǔ)過程中,而且創(chuàng)建表時(shí)不能用
timestamp 特殊數(shù)據(jù)型 timestamp 數(shù)據(jù)類型是一種特殊的數(shù)據(jù)類型,用來創(chuàng)建一個(gè)數(shù)據(jù)庫范圍內(nèi)的唯一數(shù)碼。 一個(gè)表中只能有一個(gè)timestamp列。每次插入或修改一行時(shí),
timestamp列的值都會(huì)改變。盡管它的名字中有“time”, 但timestamp列不是人們可識(shí)別的日期。在一個(gè)數(shù)據(jù)庫里,timestamp值是唯一的
Uniqueidentifier 特殊數(shù)據(jù)型 Uniqueidentifier數(shù)據(jù)類型用來存儲(chǔ)一個(gè)全局唯一標(biāo)識(shí)符,即GUID。GUID確實(shí)是全局唯一的。這個(gè)數(shù)幾乎沒有機(jī)會(huì)在另一個(gè)系統(tǒng)中被重建??梢允褂肗EWID 函數(shù)或轉(zhuǎn)換一個(gè)字符串為唯一標(biāo)識(shí)符來初始化具有唯一標(biāo)識(shí)符的列
char 字符型 char數(shù)據(jù)類型用來存儲(chǔ)指定長度的定長非統(tǒng)一編碼型的數(shù)據(jù)。當(dāng)定義一列為此類型時(shí),你必須指定列長。當(dāng)你總能知道要存儲(chǔ)的數(shù)據(jù)的長度時(shí),此數(shù)據(jù)類型很有用。例如,當(dāng)你按郵政編碼加4個(gè)字符格式來存儲(chǔ)數(shù)據(jù)時(shí),你知道總要用到10個(gè)字符。此數(shù)據(jù)類型的列寬最大為8000 個(gè)字符
varchar 字符型 varchar數(shù)據(jù)類型,同char類型一樣,用來存儲(chǔ)非統(tǒng)一編碼型字符數(shù)據(jù)。與char 型不一樣,此數(shù)據(jù)類型為變長。當(dāng)定義一列為該數(shù)據(jù)類型時(shí),你要指定該列的最大長度。 它與char數(shù)據(jù)類型最大的區(qū)別是,存儲(chǔ)的長度不是列長,而是數(shù)據(jù)的長度
text 字符型 text 數(shù)據(jù)類型用來存儲(chǔ)大量的非統(tǒng)一編碼型字符數(shù)據(jù)。這種數(shù)據(jù)類型最多可以有231-1或20億個(gè)字符
nchar 統(tǒng)一編碼字符型 nchar 數(shù)據(jù)類型用來存儲(chǔ)定長統(tǒng)一編碼字符型數(shù)據(jù)。統(tǒng)一編碼用雙字節(jié)結(jié)構(gòu)來存儲(chǔ)每個(gè)字符,而不是用單字節(jié)(普通文本中的情況)。它允許大量的擴(kuò)展字符。此數(shù)據(jù)類型能存儲(chǔ)4000種字符,使用的字節(jié)空間上增加了一倍
nvarchar 統(tǒng)一編碼字符型 nvarchar 數(shù)據(jù)類型用作變長的統(tǒng)一編碼字符型數(shù)據(jù)。此數(shù)據(jù)類型能存儲(chǔ)4000種字符,使用的字節(jié)空間增加了一倍
ntext 統(tǒng)一編碼字符型 ntext 數(shù)據(jù)類型用來存儲(chǔ)大量的統(tǒng)一編碼字符型數(shù)據(jù)。這種數(shù)據(jù)類型能存儲(chǔ)230 -1或?qū)⒔?0億個(gè)字符,且使用的字節(jié)空間增加了一倍
binary 二進(jìn)制數(shù)據(jù)類型 binary數(shù)據(jù)類型用來存儲(chǔ)可達(dá)8000 字節(jié)長的定長的二進(jìn)制數(shù)據(jù)。當(dāng)輸入表的內(nèi)容接近相同的長度時(shí),你應(yīng)該使用這種數(shù)據(jù)類型
varbinary 二進(jìn)制數(shù)據(jù)類型 varbinary 數(shù)據(jù)類型用來存儲(chǔ)可達(dá)8000 字節(jié)長的變長的二進(jìn)制數(shù)據(jù)。當(dāng)輸入表的內(nèi)容大小可變時(shí),你應(yīng)該使用這種數(shù)據(jù)類型
image 二進(jìn)制數(shù)據(jù)類型 image 數(shù)據(jù)類型用來存儲(chǔ)變長的二進(jìn)制數(shù)據(jù),最大可達(dá)231-1或大約20億字節(jié)
SQL SERVER的數(shù)據(jù)類型
數(shù)據(jù)類弄是數(shù)據(jù)的一種屬性,表示數(shù)據(jù)所表示信息的類型。任何一種計(jì)算機(jī)語言都定義了自己的數(shù)據(jù)類型。當(dāng)然,不同的程序語言都具有不同的特點(diǎn),所定義的數(shù)據(jù)類型的各類和名稱都或多或少有些不同。SQLServer 提供了 25 種數(shù)據(jù)類型:
·Binary [(n)]
·Varbinary [(n)]
·Char [(n)]
·Varchar[(n)]
·Nchar[(n)]
·Nvarchar[(n)]
·Datetime
·Smalldatetime
·Decimal[(p[,s])]
·Numeric[(p[,s])]
·Float[(n)]
·Real
·Int
·Smallint
·Tinyint
·Money
·Smallmoney
·Bit
·Cursor
·Sysname
·Timestamp
·Uniqueidentifier
·Text
·Image
·Ntext
(1)二進(jìn)制數(shù)據(jù)類型
二進(jìn)制數(shù)據(jù)包括 Binary、Varbinary 和 Image
Binary 數(shù)據(jù)類型既可以是固定長度的(Binary),也可以是變長度的。
Binary[(n)] 是 n 位固定的二進(jìn)制數(shù)據(jù)。其中,n 的取值范圍是從 1 到 8000。其存儲(chǔ)窨的大小是 n + 4 個(gè)字節(jié)。
Varbinary[(n)] 是 n 位變長度的二進(jìn)制數(shù)據(jù)。其中,n 的取值范圍是從 1 到 8000。其存儲(chǔ)窨的大小是 n + 4個(gè)字節(jié),不是n 個(gè)字節(jié)。
在 Image 數(shù)據(jù)類型中存儲(chǔ)的數(shù)據(jù)是以位字符串存儲(chǔ)的,不是由 SQL Server 解釋的,必須由應(yīng)用程序來解釋。例如,應(yīng)用程序可以使用BMP、TIEF、GIF 和 JPEG 格式把數(shù)據(jù)存儲(chǔ)在 Image 數(shù)據(jù)類型中。
(2)字符數(shù)據(jù)類型
字符數(shù)據(jù)的類型包括 Char,Varchar 和 Text
字符數(shù)據(jù)是由任何字母、符號(hào)和數(shù)字任意組合而成的數(shù)據(jù)。
Varchar 是變長字符數(shù)據(jù),其長度不超過 8KB。Char 是定長字符數(shù)據(jù),其長度最多為 8KB。超過 8KB 的ASCII 數(shù)據(jù)可以使用Text數(shù)據(jù)類型存儲(chǔ)。例如,因?yàn)?Html 文檔全部都是 ASCII 字符,并且在一般情況下長度超過 8KB,所以這些文檔可以 Text 數(shù)據(jù)類型存儲(chǔ)在SQL Server 中。
(3)Unicode 數(shù)據(jù)類型
Unicode 數(shù)據(jù)類型包括 Nchar,Nvarchar 和Ntext
在 Microsoft SQL Server 中,傳統(tǒng)的非 Unicode 數(shù)據(jù)類型允許使用由特定字符集定義的字符。在 SQL Server安裝過程中,允許選擇一種字符集。使用 Unicode 數(shù)據(jù)類型,列中可以存儲(chǔ)任何由Unicode 標(biāo)準(zhǔn)定義的字符。在 Unicode 標(biāo)準(zhǔn)中,包括了以各種字符集定義的全部字符。使用Unicode數(shù)據(jù)類型,所戰(zhàn)勝的窨是使用非 Unicode 數(shù)據(jù)類型所占用的窨大小的兩倍。
在 SQL Server 中,Unicode 數(shù)據(jù)以 Nchar、Nvarchar 和 Ntext 數(shù)據(jù)類型存儲(chǔ)。使用這種字符類型存儲(chǔ)的列可以存儲(chǔ)多個(gè)字符集中的字符。當(dāng)列的長度變化時(shí),應(yīng)該使用Nvarchar 字符類型,這時(shí)最多可以存儲(chǔ) 4000 個(gè)字符。當(dāng)列的長度固定不變時(shí),應(yīng)該使用 Nchar 字符類型,同樣,這時(shí)最多可以存儲(chǔ)4000 個(gè)字符。當(dāng)使用 Ntext 數(shù)據(jù)類型時(shí),該列可以存儲(chǔ)多于 4000 個(gè)字符。
(4)日期和時(shí)間數(shù)據(jù)類型
日期和時(shí)間數(shù)據(jù)類型包括 Datetime 和 Smalldatetime兩種類型
日期和時(shí)間數(shù)據(jù)類型由有效的日期和時(shí)間組成。例如,有效的日期和時(shí)間數(shù)據(jù)包括“4/01/98 12:15:00:00:00 PM”和“1:28:29:15:01AM 8/17/98”。前一個(gè)數(shù)據(jù)類型是日期在前,時(shí)間在后一個(gè)數(shù)據(jù)類型是霎時(shí)間在前,日期在后。在 Microsoft SQL Server中,日期和時(shí)間數(shù)據(jù)類型包括Datetime 和 Smalldatetime 兩種類型時(shí),所存儲(chǔ)的日期范圍是從 1753 年 1 月 1 日開始,到9999 年12 月 31 日結(jié)束(每一個(gè)值要求 8 個(gè)存儲(chǔ)字節(jié))。使用 Smalldatetime 數(shù)據(jù)類型時(shí),所存儲(chǔ)的日期范圍是 1900年 1 月 1日 開始,到 2079 年 12 月 31 日結(jié)束(每一個(gè)值要求 4 個(gè)存儲(chǔ)字節(jié))。
日期的格式可以設(shè)定。設(shè)置日期格式的命令如下:
Set DateFormat {format | @format _var|
其中,format | @format_var 是日期的順序。有效的參數(shù)包括 MDY、DMY、YMD、YDM、MYD 和 DYM。在默認(rèn)情況下,日期格式為MDY。
例如,當(dāng)執(zhí)行 Set DateFormat YMD 之后,日期的格式為年 月 日 形式;當(dāng)執(zhí)行 Set DateFormat DMY 之后,日期的格式為日 月有年 形式
(5)數(shù)字?jǐn)?shù)據(jù)類型
數(shù)字?jǐn)?shù)據(jù)只包含數(shù)字。數(shù)字?jǐn)?shù)據(jù)類型包括正數(shù)和負(fù)數(shù)、小數(shù)(浮點(diǎn)數(shù))和整數(shù)
整數(shù)由正整數(shù)和負(fù)整數(shù)組成,例如 39、25、0-2 和 33967。在 Micrsoft SQL Server 中,整數(shù)存儲(chǔ)的數(shù)據(jù)類型是 Int,Smallint和 Tinyint。Int 數(shù)據(jù)類型存儲(chǔ)數(shù)據(jù)的范圍大于 Smallint 數(shù)據(jù)類型存儲(chǔ)數(shù)據(jù)的范圍,而 Smallint 據(jù)類型存儲(chǔ)數(shù)據(jù)的范圍大于Tinyint 數(shù)據(jù)類型存儲(chǔ)數(shù)據(jù)的范圍。使用 Int 數(shù)據(jù)狗昔存儲(chǔ)數(shù)據(jù)的范圍是從 -2 147 483 648 到 2 147 483 647(每一個(gè)值要求4個(gè)字節(jié)存儲(chǔ)空間)。使用 Smallint 數(shù)據(jù)類型時(shí),存儲(chǔ)數(shù)據(jù)的范圍從 -32 768 到 32 767(每一個(gè)值要求2個(gè)字節(jié)存儲(chǔ)空間)。使用Tinyint 數(shù)據(jù)類型時(shí),存儲(chǔ)數(shù)據(jù)的范圍是從0 到255(每一個(gè)值要求1個(gè)字節(jié)存儲(chǔ)空間)。
精確小婁數(shù)據(jù)在 SQL Server 中的數(shù)據(jù)類型是 Decimal 和 Numeric。這種數(shù)據(jù)所占的存儲(chǔ)空間根據(jù)該數(shù)據(jù)的位數(shù)后的位數(shù)來確定。
在SQL Server 中,近似小數(shù)數(shù)據(jù)的數(shù)據(jù)類型是 Float 和 Real。例如,三分之一這個(gè)分?jǐn)?shù)記作。3333333,當(dāng)使用近似數(shù)據(jù)類型時(shí)能準(zhǔn)確表示。因此,從系統(tǒng)中檢索到的數(shù)據(jù)可能與存儲(chǔ)在該列中數(shù)據(jù)不完全一樣。
(6)貨幣數(shù)據(jù)表示正的或者負(fù)的貨幣數(shù)量 。
在 Microsoft SQL Server 中,貨幣數(shù)據(jù)的數(shù)據(jù)類型是Money 和 Smallmoney
Money數(shù)據(jù)類型要求 8 個(gè)存儲(chǔ)字節(jié),Smallmoney 數(shù)據(jù)類型要求 4 個(gè)存儲(chǔ)字節(jié)。
(7)特殊數(shù)據(jù)類型
特殊數(shù)據(jù)類型包括前面沒有提過的數(shù)據(jù)類型。特殊的數(shù)據(jù)類型有3種,即 Timestamp、Bit 和 Uniqueidentifier。
Timestamp 用于表示SQL Server 活動(dòng)的先后順序,以二進(jìn)投影的格式表示。Timestamp 數(shù)據(jù)與插入數(shù)據(jù)或者日期和時(shí)間沒有關(guān)系。
Bit 由 1 或者 0 組成。當(dāng)表示真或者假、ON 或者 OFF 時(shí),使用 Bit 數(shù)據(jù)類型。例如,詢問是否是每一次訪問的客戶機(jī)請求可以存儲(chǔ)在這種數(shù)據(jù)類型的列中。
Uniqueidentifier 由 16 字節(jié)的十六進(jìn)制數(shù)字組成,表示一個(gè)全局唯一的。當(dāng)表的記錄行要求唯一時(shí),GUID是非常有用。例如,在客戶標(biāo)識(shí)號(hào)列使用這種數(shù)據(jù)類型可以區(qū)別不同的客戶。
2.用戶定義的數(shù)據(jù)類型
用戶定義的數(shù)據(jù)類型基于在 Microsoft SQL Server 中提供的數(shù)據(jù)類型。當(dāng)幾個(gè)表中必須存儲(chǔ)同一種數(shù)據(jù)類型時(shí),并且為保證這些列有相同的數(shù)據(jù)類型、長度和可空性時(shí),可以使用用戶定義的數(shù)據(jù)類型。例如,可定義一種稱為 postal_code 的數(shù)據(jù)類型,它基于 Char 數(shù)據(jù)類型。
當(dāng)創(chuàng)建用戶定義的數(shù)據(jù)類型時(shí),必須提供三個(gè)數(shù):數(shù)據(jù)類型的名稱、所基于的系統(tǒng)數(shù)據(jù)類型和數(shù)據(jù)類型的可空性。
(1)創(chuàng)建用戶定義的數(shù)據(jù)類型
創(chuàng)建用戶定義的數(shù)據(jù)類型可以使用 Transact-SQL 語句。系統(tǒng)存儲(chǔ)過程 sp_addtype 可以來創(chuàng)建用戶定義的數(shù)據(jù)類型。其語法形式如下:
sp_addtype {type},[,system_data_bype][,'null_type']
其中,type 是用戶定義的數(shù)據(jù)類型的名稱。system_data_type 是系統(tǒng)提供的數(shù)據(jù)類型,例如 Decimal、Int、Char 等等。 null_type 表示該數(shù)據(jù)類型是如何處理空值的,必須使用單引號(hào)引起來,例如'NULL'、'NOT NULL'或者'NONULL'。
例子:
Use cust
Exec sp_addtype ssn,'Varchar(11)',"Not Null'
創(chuàng)建一個(gè)用戶定義的數(shù)據(jù)類型 ssn,其基于的系統(tǒng)數(shù)據(jù)類型是變長為11 的字符,不允許空。
例子:
Use cust
Exec sp_addtype birthday,datetime,'Null'
創(chuàng)建一個(gè)用戶定義的數(shù)據(jù)類型 birthday,其基于的系統(tǒng)數(shù)據(jù)類型是 DateTime,允許空。
例子:
Use master
Exec sp_addtype telephone,'varchar(24),'Not Null'
Eexc sp_addtype fax,'varchar(24)','Null'
創(chuàng)建兩個(gè)數(shù)據(jù)類型,即 telephone 和 fax
(2)刪除用戶定義的數(shù)據(jù)類型
當(dāng)用戶定義的數(shù)據(jù)類型不需要時(shí),可刪除。刪除用戶定義的數(shù)據(jù)類型的命令是 sp_droptype {'type'}。
例子:
Use master
Exec sp_droptype 'ssn'
注意:當(dāng)表中的列還正在使用用戶定義的數(shù)據(jù)類型時(shí),或者在其上面還綁定有默認(rèn)或者規(guī)則時(shí),這種用戶定義的數(shù)據(jù)類型不能刪除。
SQL SERVER的字段類型說明
以下為SQL SERVER7.0以上版本的字段類型說明。SQL SERVER6.5的字段類型說明請參考SQL SERVER提供的說明。
字段類型 描述
bit 0或1的整型數(shù)字
int 從-2^31(-2,147,483,648)到2^31(2,147,483,647)的整型數(shù)字
smallint 從-2^15(-32,768)到2^15(32,767)的整型數(shù)字
tinyint 從0到255的整型數(shù)字
decimal 從-10^38到10^38-1的定精度與有效位數(shù)的數(shù)字
numeric decimal的同義詞
money 從-2^63(-922,337,203,685,477.5808)到2^63-1(922,337,203,685,477.5807)的貨幣數(shù)據(jù),最小貨幣單位千分之十
smallmoney 從-214,748.3648到214,748.3647的貨幣數(shù)據(jù),最小貨幣單位千分之十
float 從-1.79E+308到1.79E+308可變精度的數(shù)字
real 從-3.04E+38到3.04E+38可變精度的數(shù)字
datetime 從1753年1月1日到9999年12日31的日期和時(shí)間數(shù)據(jù),最小時(shí)間單位為百分之三秒或3.33毫秒
smalldatetime 從1900年1月1日到2079年6月6日的日期和時(shí)間數(shù)據(jù),最小時(shí)間單位為分鐘
timestamp 時(shí)間戳,一個(gè)數(shù)據(jù)庫寬度的唯一數(shù)字
uniqueidentifier 全球唯一標(biāo)識(shí)符GUID
char 定長非Unicode的字符型數(shù)據(jù),最大長度為8000
varchar 變長非Unicode的字符型數(shù)據(jù),最大長度為8000
text 變長非Unicode的字符型數(shù)據(jù),最大長度為2^31-1(2G)
nchar 定長Unicode的字符型數(shù)據(jù),最大長度為8000
nvarchar 變長Unicode的字符型數(shù)據(jù),最大長度為8000
ntext 變長Unicode的字符型數(shù)據(jù),最大長度為2^31-1(2G)
binary 定長二進(jìn)制數(shù)據(jù),最大長度為8000
varbinary 變長二進(jìn)制數(shù)據(jù),最大長度為8000
image 變長二進(jìn)制數(shù)據(jù),最大長度為2^31-1(2G)
Sql
server中常用的幾個(gè)數(shù)據(jù)類型:
binary
固定長度的二進(jìn)制數(shù)據(jù),其最大長度為
8,000
個(gè)字節(jié)。
varbinary
可變長度的二進(jìn)制數(shù)據(jù),其最大長度為
8,000
個(gè)字節(jié)。
image
可變長度的二進(jìn)制數(shù)據(jù),其最大長度為
2G+
-
1
(2,147,483,647)
個(gè)字節(jié)
text
服務(wù)器代碼頁中的可變長度非
Unicode
數(shù)據(jù)的最大長度為
2G+
(2,147,483,647)
個(gè)字符。當(dāng)服務(wù)器代碼頁使用雙字節(jié)字符時(shí),存儲(chǔ)量仍是
2,147,483,647
字節(jié)。存儲(chǔ)大小可能小于
2,147,483,647
字節(jié)(取決于字符串)。
image
可變長度二進(jìn)制數(shù)據(jù)介于
與
2G+
(2,147,483,647)
字節(jié)之間
--binary
和
varbinary
固定長度
(binary)
的或可變長度
(varbinary)
的
binary
數(shù)據(jù)類型。
binary
[
(
n
)
]
固定長度的
n
個(gè)字節(jié)二進(jìn)制數(shù)據(jù)。N
必須從
1
到
8,000。存儲(chǔ)空間大小為
n+4
字節(jié)。
varbinary
[
(
n
)
]
n
個(gè)字節(jié)變長二進(jìn)制數(shù)據(jù)。n
必須從
1
到
8,000。存儲(chǔ)空間大小為實(shí)際輸入數(shù)據(jù)長度
+4
個(gè)字節(jié),而不是
n
個(gè)字節(jié)。輸入的數(shù)據(jù)長度可能為
字節(jié)。在
SQL-92
中
varbinary
的同義詞為
binary
varying。
注釋
1.
如果在數(shù)據(jù)定義或變量聲明語句中沒有指定
n,默認(rèn)長度為
1。如果沒有用
CAST
函數(shù)指定
n,默認(rèn)長度為
30。
2.
當(dāng)列數(shù)據(jù)項(xiàng)大小一致時(shí)應(yīng)使用
binary。
3.
當(dāng)列數(shù)據(jù)項(xiàng)大小不一致時(shí)應(yīng)使用
varbinary