Board logo

標題: [教學] (PHP+IIS+MsSQL教學第25篇) 資料庫庫的基礎觀念 下篇 [打印本頁]

作者: 小誌    時間: 2010-5-16 16:35     標題: (PHP+IIS+MsSQL教學第25篇) 資料庫庫的基礎觀念 下篇

建立資料表
資料庫只是一個儲存資料的空間,要如何讓儲存於其中的資料能格式化分門別類的放置?那就必須透過資料表「Table」來處理了,例如學生的聯絡資料存放在「學生通訊錄」資料表、客戶的訂單資料存放在「訂單」資料表中,將不同類別的資料集中放置於不同的資料表裡加以管理!

一張資料表在SQL Server中視為資料庫的一個物件,而SQL資料庫可擁有2,147,483,647個物件,因此,在SQL資料庫中是可同時存在多張資料表的。

資料表的結構
資料表中有兩項基礎的單元:欄位(Column)與列(Row),欄位用以儲存不同性質的資料,例如學號、姓名…等,而每一列中的各個欄位則構成一筆資料記錄(Record):
[attach]508[/attach]
要資料表能夠存放資料,首先要定義資料表的規格,所謂的規格就是決定資料表中有幾個存放資料的欄位,還有這些欄位存放資料時的資料型態、資料長度…等限制規定。

欄位的命名
每張資料表最多可有1,024個欄位,每個欄位負責存放不同類型的資料,為了辨識這些欄位,所以必須為資料表中的欄位訂立一個識別名稱,命名基本原則如下:


欄位的資料型態與儲存大小
在SQL Server2000中提供了多種資料型態:
1.        字元資料類(Character Data)

資料類型

資料範圍

儲存空間大小

Char(n)

最多可儲存8000個字元

n個位元組

varChar(n)

最多可儲存8000個字元

依實際輸入字數而定



Char(n):用來儲存固定長度且非Unicode的字元資料,一般用來儲存固定長度的資料,例如身分證字號,設定為Char(n)的欄位其使用的空間大小就是n個位元組,當輸入的資料長度未達指定的n個位元組時,將會在資料後面補上空白字元(Space)直到該欄位設定的最大長度。
varChar(n):用來儲存非固定長度且非Unicode的字元資料,設定為Char(n)的欄位其使用的空間大小並非就是n個位元組,使用的空間大小視輸入的資料長度而,當輸入的資料長度未達指定的n個位元組時,不會在資料後面補上空白字元(Space)。
      提示!!
「Unicode(萬國字元編碼)」:就是每一個字元都是以2個位元組的型式表示,不管是繁體中文字、英文字母、簡體中文字…等,都視為一個字元,存放資料的空間一律給予2個位元組的長度。

2.        Unicode文字串類(Unicode Data)
資料類型資料範圍儲存空間大小
nChar(n)最多可儲存4000個字元2*n個位元組
nvarChar(n)最多可儲存4000個字元2*實際輸入字數
nText最多可儲存1,073,741,823個字元(2^30 - 12*實際輸入字數


nChar(n):用來儲存固定長度且是Unicode的字元資料,由於Unicode的每個字元佔用2個位元組,因此,設定為Char(n)的欄位其使用的空間大小就是2*n個位元組。
nvarChar(n):用來儲存非固定長度且是Unicode的字元資料,其資料欄位長度可以是0。
nText:用來儲存非固定長度且是Unicode的字元資料,用來彌補nvarChar(n)的不足,因其可存放超過4000個Unicode字元資料。


3.        二進制資料類(Binary Data)
資料類型資料範圍儲存空間大小
Binary(n)最多可儲存8000個位元組n+4個位元組
varBinary(n)最多可儲存8000個位元組輸入資料的實際長度 +4個位元組

Binary(n):用來儲存n個位元組且固定長度的二進制資料。
varBinary(n):用來儲存n個位元組且非固定長度的二進制資料,其資料欄位長度可以是0。


4.        日期時間資料類(Date / Time Data)
資料類型資料範圍儲存空間大小
DateTime1753/1/19999/12/318個位元組
smallDateTime1900/1/12079/6/64個位元組

DateTime:儲存日期、時間或日期時間的欄位,精確度達1/300秒。
smallDateTime:可存放的日期時間資料範圍較小,精確度僅為「分鐘」,故儲存資料所需的空間為DateTime的一半。

5.        貨幣資料類(Money Data)

資料類型

資料範圍

儲存空間大小

Money

-922,337,203,685,477.5808

922,337,203,685,477.5807

8個位元組

smallMoney

-214,748.3648 214,748.3647

4個位元組


此二種資料型態皆用於儲存貨幣資料,例如費用、價格…等,Money資料型態的精確度達萬分之一貨幣單位,而smallMoney資料型態的精確度只有千分之十的貨幣單位。

6.        整數資料類(Fixed Numeric Data)

資料類型

資料範圍

儲存空間大小

bigint

-9,223,372,036,854,775,808
9,223,372,036,854,775,807

8個位元組

int

-2,147,483,6482,147,483,647

4個位元組

smallint

-32,768 32,767

2個位元組

tinyint

0 255

1個位元組


以上資料型態皆用於儲存整數資料,請依可能的資料內容選定適當的資料型態。

7.        精確數值類(Exact Numeric Data)

資料類型

資料範圍

儲存空間大小

Decimal[(p[,s])]

-10^38+1 10^38-1

2~17個位元組

Numeric[(p[,s])]

-10^38+1 10^38-1

2~17個位元組


基本上,此兩種資料型態是一樣的,最大有效位數值為38,應用上應該使用Decimal,因為Numeric是為了向前相容的原因而存在。
p:指定小數點左方及右方可儲存的十進位數總和的上限,就是指整數與小數的總合位數。
s:指定小數點右方可儲存的十進位個數總和的上限,即指定小數點後的小數位數,其值可介於0~p之間。
Decimal與Numeric資料型態的欄位不需指定長度,其使用空間視精確度高低自動調整。

精確度

儲存區位元組

1 - 9

5

10-19

9

20-28

13

29-38

17



8.        浮點數值類(Approximate Numeric Data)

資料類型

資料範圍

儲存空間大小

Float[(n)]

-1.79E +308 1.79E +308

最大8個位元組

Real

-3.40E +38 3.40E +38

4個位元組


浮點資料是近似值,其資料型別範圍無法正確代表所有的值,因此上表兩種資料型態適用於有誤差的數值資料。
Real資料型態的來為固定使用4個位元組空間,而Float[(n)]資料型態的使用空間,則視精確度n而定:

n

精確度

儲存大小

1-24

7 位數

4 位元組

25-53

15 位數

8 位元組



9.        大量資料類(Text and Image Data)

資料類型

資料範圍

儲存空間大小

Text

最大長度為
2^31-1(2,147,483,647)個字元

Image

最大長度為
2^31-1(2,147,483,647)個位元組


Text:用來儲存非固定長度且非Unicode的字元資料,用來彌補varChar(n)的不足,因其可存放超過4000個字元資料,此資料類型是有一個16位元的指標用於資料分頁上,還另外使用8K位元組的分頁來儲存實際的資料,指標資料與實際資料表欄位的資料是分開儲存的。
Image:用來儲存n個位元組且非固定長度的二進制資料,非指儲存於該類型欄位的資料集僅為影像資料,亦可以是Word文件、OLE物件…等,此資料類型是有一個16位元的指標用於資料分頁上,還另外使用8K位元組的分頁來儲存實際的資料,指標資料與實際資料表欄位的資料是分開儲存的。

10.        特殊資料類

資料類型

資料範圍

儲存空間大小

Bit

0 1

timestamp

全資料庫唯一的數字

8個位元組

Sql_variant

textntexttimestampsql_variant以外的各種SQL Server支援的資料型別

不定

Table

資料查詢結果集

依資料表定義

cursor

指標參考

uniqueidentifier

唯一識別碼(GUID)

16個位元組


Bit資料類型欄位適合儲存布林值的資料(成立為1,不成立為0),同一資料表中的Bit資料類型欄位共用一個位元組空間,資料表中若有1~8個Bit資料類型欄位,則佔用1個位元組的儲存空間;資料表中若有9~16個Bit資料類型欄位,則佔用2個位元組的儲存空間,以此類推。
timestamp:每一張資料表僅能有一個timestamp資料類型欄位,欄位所儲存的值與日期時間無關,而每一次新增或修改資料表時,資料庫自動設定的一個二進位值,此值在同一個資料庫中是唯一的。
uniqueidentifier:唯一識別碼(GUID),是由機器中的網路卡號加上CPU回傳之獨一數值所組成。
作者: 小誌    時間: 2010-5-16 16:55

新增資料表
使用企業管理員來新增資料庫內的資料表步驟如下:

[attach]516[/attach]

當資料表建立完成回到主視窗後,直接在新建的「學生通訊錄」資料表上雙擊滑鼠左鍵,此時會出現「資料表屬性」視窗,讓我們檢視資料表內的欄位結構。
[attach]518[/attach]




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)