返回列表 上一主題 發帖

[教學] (PHP+IIS+MsSQL教學第25篇) 資料庫庫的基礎觀念 下篇

[教學] (PHP+IIS+MsSQL教學第25篇) 資料庫庫的基礎觀念 下篇

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

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

資料表的結構
資料表中有兩項基礎的單元:欄位(Column)與列(Row),欄位用以儲存不同性質的資料,例如學號、姓名…等,而每一列中的各個欄位則構成一筆資料記錄(Record):
CH7_27.png
2010-5-16 16:47

要資料表能夠存放資料,首先要定義資料表的規格,所謂的規格就是決定資料表中有幾個存放資料的欄位,還有這些欄位存放資料時的資料型態、資料長度…等限制規定。

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

  • 同一張資料表中的欄位名稱不可重複。
  • 欄位名稱可用中文。
  • 欄位名稱最多為128個字元。
  • 欄位名稱不得為SQL 2000內的Transact-SQL保留字。


欄位的資料型態與儲存大小
在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回傳之獨一數值所組成。
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

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

  • 開啟企業管理員:「開始」=>「程式集」=>「Microsoft SQL Server」=>「Enterprise Manager」。
  • 展開SQL Server群組,接著展開「資料庫」項目。
  • 展開我們要新增資料表的資料庫,在「資料表」項目上點選滑鼠右鍵,於快顯功能表上點選『新增資料表』:

    CH7_28.png
    2010-5-16 16:51


  • 點選『新增資料表』項目後即出現如下圖的資料表「欄位定義」視窗:
    CH7_29.png
    2010-5-16 16:51


  • 在「欄位定義」視窗中,我們就可以開始設定各個欄位的名稱、資料型別、資料長度、是否允許Null值等定義:
    CH7_30.png
    2010-5-16 16:52


          提示!!
    「是否允許Null」的欄位若為「ˇ」打勾,代表新增一筆資料時,此欄位可以不輸入任何資料,也就是空值(NULL),若無「ˇ」打勾,則新增一筆資料時,此欄位就一定要輸入資料。


    當我們需要新增或插入欄位設計列時,可點選已存在的欄位項目列,然後按下鍵盤上的「Insert」鍵,此時,在我們點選的已存在欄位項目列上方就會增加一列新的欄位定義列,或是;用滑鼠右鍵點選已存在的欄位項目列,於出現的快顯功能表中選取「插入資料行」命令項目,這樣也會在我們點選的已存在欄位項目列上方增加一列新的欄位定義列。
    CH7_31.png
    2010-5-16 16:53


    若要刪除欄位設計列時,可點選已存在的欄位項目列,然後按下鍵盤上的「Delete」鍵,或是;用滑鼠右鍵點選已存在的欄位項目列,於出現的快顯功能表中選取「刪除資料行」命令項目,刪除我們點選的已存在欄位項目列。
    CH7_32.png
    2010-5-16 16:53


  • 完成欄位定義後,直接按下視窗控制
    盒的「ㄨ」關閉視窗按鈕:
    CH7_33.png
    2010-5-16 16:53


  • 按下視窗控制盒的「ㄨ」關閉視窗按鈕:此時,將會出現確認視窗視窗,問我們要不要將剛剛設計的資料表存檔:
    CH7_34.png
    2010-5-16 16:54


  • 當我們在「變更儲存」確認視窗中按下「是」按鈕後,接著出現「選擇名稱」視窗,在輸入資料表名稱後,按下「確定」按鈕即完成資料表的設計與儲存。
    CH7_35.png
    2010-5-16 16:59


CH7_36.png
2010-5-16 16:55


當資料表建立完成回到主視窗後,直接在新建的「學生通訊錄」資料表上雙擊滑鼠左鍵,此時會出現「資料表屬性」視窗,讓我們檢視資料表內的欄位結構。
CH7_37.png
2010-5-16 16:59
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

TOP

        靜思自在 : 知識要用心體會,才能變成自己的智慧。
返回列表 上一主題