sql server 7.0 入門 (1)
發(fā)布時(shí)間:2008-08-13 閱讀數(shù): 次 來(lái)源:網(wǎng)樂(lè)原科技
交互式SQL(Transact SQL,TSQL)
它是SQL Server的查詢語(yǔ)言。提供以下命令:
· 創(chuàng)建和數(shù)據(jù)庫(kù)對(duì)象。
· 訪問(wèn)和修改數(shù)據(jù)。
· 數(shù)據(jù)聚合(aggregation,又稱聚集)。
· 實(shí)施安全措施。
數(shù)據(jù)庫(kù)對(duì)象
數(shù)據(jù)庫(kù)對(duì)象是數(shù)據(jù)庫(kù)中的物理對(duì)象。這些對(duì)象擁有唯一的名字,并保存數(shù)據(jù)和數(shù)據(jù)關(guān)系信息。SQL Server定義了如下幾種對(duì)象:
1、 表(table)
表是用來(lái)存儲(chǔ)數(shù)據(jù)的兩維數(shù)組,它有行和列。列也稱為表屬性或字段,表中的每一列擁有唯一的名字,每一列包含具體的數(shù)據(jù)類型,這個(gè)數(shù)據(jù)類型由列中的數(shù)據(jù)類型定義。
2、 視圖(view)
視圖是虛擬的表,它只包含表的一部分。與表不同的是,保存在視圖中的數(shù)據(jù)并不是物理存儲(chǔ)的數(shù)據(jù),它是由表派生的,派生表被稱為視圖的基本表。視圖的定義存儲(chǔ)在數(shù)據(jù)庫(kù)中。
3、 約束條件(constraint)
約束條件定義數(shù)據(jù)的完整性和有效性。約束條件為列中的值建立規(guī)則。換而言之,如果在某一列上定義了結(jié)束條件,則插入這一列的每一個(gè)值需要通過(guò)約束條件檢查。約束條件是在觸發(fā)器和規(guī)則上保證數(shù)據(jù)完整性和有效性的較佳選擇。SQL Server Query Optimizer利用約束條件產(chǎn)生出低成本的查詢計(jì)劃。約束條件有如下類型:
· NOT NULL 這個(gè)約束條件要求列中不能有NULL值。
· CHECK 為列指定能擁有的值的集合后,檢查約束條件。列中任何在定義之外的數(shù)據(jù)都為無(wú)效數(shù)據(jù)。有效值集合稱為列的域。
· PRIMARY KEY 主關(guān)鍵字是列或列組合,它用來(lái)唯一標(biāo)識(shí)一行。
· FOREIGN KEY 用來(lái)定義兩個(gè)表之間的父子關(guān)系。如果一個(gè)關(guān)鍵字既是一個(gè)表的主關(guān)鍵字的一部分,同時(shí)又是另一個(gè)表的主關(guān)鍵字,則稱它為外來(lái)關(guān)鍵字。外來(lái)關(guān)鍵字用來(lái)定義數(shù)據(jù)的引用完整性。
· UNIQUE 唯一約束條件是指無(wú)任何兩行在列中有相同的NON-NULL值。唯一性由主關(guān)鍵字保證,但他們不允許NULL值,并且每一個(gè)表只能有一個(gè)關(guān)鍵字。
4、 默認(rèn)值(default)
默認(rèn)值是為列定義的值,如果在插入一行時(shí)沒(méi)有提供某一列的值,則此列使用默認(rèn)值,默認(rèn)值可以是以下的一種:
· 常量
· 數(shù)學(xué)表達(dá)式
· 內(nèi)部函數(shù)(Built-in function)
5、 規(guī)則(rule)
規(guī)則執(zhí)行和CHECK約束條件同樣的功能。但規(guī)則和約束條件不同的是:規(guī)則作為獨(dú)立的對(duì)象存在,它可以用于多個(gè)表,而約束條件作為表的一部分存儲(chǔ)。然而,規(guī)則是作為向后兼容特點(diǎn)而提供的,建議用戶使用約束條件。
6、 觸發(fā)器和存儲(chǔ)過(guò)程
觸發(fā)器和存儲(chǔ)過(guò)程是一個(gè)TSQL命令集,它們作為一個(gè)對(duì)象存儲(chǔ)在數(shù)據(jù)庫(kù)中。
對(duì)象命名約定
SQL Server用三段式(three-part)名字標(biāo)識(shí)對(duì)象:
<數(shù)據(jù)庫(kù)名>.<所有者名>.<對(duì)象名>
前兩部分可以省略,系統(tǒng)有一個(gè)默認(rèn)值。數(shù)據(jù)庫(kù)名的默認(rèn)值是當(dāng)前數(shù)據(jù)庫(kù),所有者名的默認(rèn)值是數(shù)據(jù)庫(kù)所有者(dbo)。
數(shù)據(jù)類型
任何包含數(shù)據(jù)的對(duì)象都有一個(gè)數(shù)據(jù)類型和它關(guān)聯(lián)。數(shù)據(jù)類型是指定對(duì)象能包含何種數(shù)據(jù)的屬性。
SQL Server數(shù)據(jù)類型
數(shù)據(jù)類型
說(shuō) 明
同 義
Bit
1位,值為0或1
Int
Integer
4字節(jié),值為-2^31~2^31-1
Smallint
2字節(jié),值為-2^15~2^15-1
Tinyint
1字節(jié),值為0~255
Decimal (p,s)
數(shù)字?jǐn)?shù)據(jù),固定精度為P,寬度為S
Numeric
Money
8字節(jié),存放貨幣類型,值為-2^63~2^63-1
Small money
4字節(jié),存放貨幣類型,值為-214748.3648~+214748.3647近似數(shù)值數(shù)據(jù)類型
Float (n)
N在1~24之間,4字節(jié),7位精度
N=1~7為real
N在25~53之間,8字節(jié),15位精度
=8~15為float
Datetime
8字節(jié),描述某天的日期和時(shí)刻,值的精確度為1/300秒
Smalldatetime
4字節(jié),描述某天的日期和時(shí)刻,精度為分鐘
Cursor
對(duì)游標(biāo)的引用
Timestamp
8字節(jié),存放在數(shù)據(jù)庫(kù)內(nèi)唯一的數(shù)據(jù)
Uniqueidentifier
16字節(jié),存放全局唯一標(biāo)識(shí)(GUID)
Char (n)
非unicode字符串的固定長(zhǎng)度,n=1~8000
Character (n)
Varchar (n)
可變長(zhǎng)度,非unicode字符串n=1~8000
Char varying(n)
Text
服務(wù)器代碼頁(yè)中可變長(zhǎng)度非unicode數(shù)據(jù)。最大長(zhǎng)度為231-1個(gè)字符
Nchar
固定長(zhǎng)度unicode字符串n=1~4000
National character (n),
National char(n)
Nvarchar
固定長(zhǎng)度unicode字符串n=1~4000
National character varying(n)
Ntext
可變長(zhǎng)度unicode數(shù)據(jù),最大長(zhǎng)度為230-1個(gè)字符
National text
Binary (n)
固定長(zhǎng)度二進(jìn)制數(shù)據(jù),n在1~8000之間,存儲(chǔ)空間為n+4字節(jié)
Varbinary (n)
可變長(zhǎng)度二進(jìn)制數(shù)據(jù),n=1~8000
Binary varying (n)
Tmage
可變長(zhǎng)度二進(jìn)制數(shù)據(jù),大小為0~231-1
注意:
1) 對(duì)于數(shù)值型數(shù)據(jù)類型,寬度(scale)是指存儲(chǔ)在小數(shù)點(diǎn)后的數(shù)字位數(shù),而精度(precision)是指能存儲(chǔ)的包含小數(shù)點(diǎn)在內(nèi)的所有數(shù)字位數(shù)。
2) money和small money的存儲(chǔ)寬度為4。
3) 時(shí)間戳列值在每一行更新時(shí)系統(tǒng)自動(dòng)更新,時(shí)間戳列不能是關(guān)鍵字或關(guān)鍵字的一部分。
4) 唯一標(biāo)識(shí)數(shù)據(jù)類型不能使用算術(shù)操作符(如+、-等),這種數(shù)據(jù)類型只能使用相等比較操作。Unicode是所有字符集的一致存儲(chǔ)數(shù)據(jù)的標(biāo)準(zhǔn)。它要使用兩倍于非Unicode數(shù)據(jù)存儲(chǔ)的存儲(chǔ)空間。