第8章創(chuàng)建和使用表_第1頁
第8章創(chuàng)建和使用表_第2頁
第8章創(chuàng)建和使用表_第3頁
第8章創(chuàng)建和使用表_第4頁
第8章創(chuàng)建和使用表_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第8章創(chuàng)建和使用表8.1表的概念8.1.1什么是表

在關系數(shù)據(jù)庫中,每一個關系都表現(xiàn)為一張表。表是用來存儲數(shù)據(jù)和操作數(shù)據(jù)的邏輯結構,關系數(shù)據(jù)庫中的所有數(shù)據(jù)都表現(xiàn)為表的形式,表由列和行組成,行稱為記錄,列稱為屬性或字段。

SQLServer提供了很多種數(shù)據(jù)類型,還可以根據(jù)需要用戶自已定義新的數(shù)據(jù)類型,SQLServer中常用的數(shù)據(jù)類型如下所示。數(shù)據(jù)類型說明number(p)整數(shù)(其中p為精度)decimal(p,s)浮點數(shù)(其中p為精度,d為小數(shù)位數(shù))char(n)固定長度字符串(其中n為長度)varchar(n)可變長度字符串(其中n為最大長度)datetime日期和時間

注意:空值是列的一種特殊取值,用NULL表示。它表示對應的數(shù)據(jù)不存在、不確定或不知道。表中主鍵列必須有確定的取值不能為空值,其余列的取值可以根據(jù)現(xiàn)實語義決定是否可以取空值。8.1.2表中數(shù)據(jù)的完整性

數(shù)據(jù)完整性包括規(guī)則、默認值和約束等。1.規(guī)則

規(guī)則是指表中數(shù)據(jù)應滿足一些基本條件。

例如,學生成績表中分數(shù)只能在0~100之間。2.默認值

默認值是指表中數(shù)據(jù)的默認取值。

例如,學生表中性別的默認可以設置為“男”。3.約束

約束是指表中數(shù)據(jù)應滿足一些強制性條件,這些條件通常由用戶在設計表時指定。

(1)非空約束(NOTNULL):非空約束是指數(shù)據(jù)列不接受NULL值。

例如,學生表中學號通常設定為主鍵,不能接受NULL值。

(2)檢查約束(CHECK約束):檢查約束是指限制輸入到一列或多列中的可能值。

例如,學生表中性別約束為只能取“男”或“女”值。

(3)唯一約束(UNIQUE約束):唯一約束是指一列或多列組合不允許出現(xiàn)兩個或兩個以上的相同的值。

例如,學生成績表中,學號和課程號可以設置為唯一約束,因為一個學生對應一門課程不能有兩個或以上的分數(shù)。(4)主鍵約束(PRIMARYKEY約束):主鍵約束是指定義為主鍵(一列或多列組合)的列不允許出現(xiàn)兩個或兩個以上的相同值。

例如,若將學生表中的學號設置為主鍵,則不能存在兩個學號相同的學生記錄。

(5)外鍵約束(FOREIGNKEY約束):一個表的外鍵是參照另一個表的候選主鍵的屬性或屬性組合,外鍵約束是指輸入外鍵值時必須參照所對應的另一個表的候選主鍵值。

例如,成績表中的學號列是外鍵,對應于學生表的學號主鍵,外鍵約束是指輸入成績表中的學號值必須在學生表的學號列中已存在,因此,在輸入上述兩個表的數(shù)據(jù)時,必須先輸入學生表的數(shù)據(jù),然后才能輸入成績表的數(shù)據(jù),即學生表中存在這個學生,成績表才能有其成績記錄。8.2創(chuàng)建表兩種創(chuàng)建表的方法

使用SQLServer管理控制器建立表

使用T-SQL語句中的createtable命令建立表創(chuàng)建表的過程1.創(chuàng)建表的結構(定義表)

設置表各列的列名、數(shù)據(jù)類型、是否允許取null值、默認值、主鍵約束、唯一約束、外鍵約束等2.輸入表的記錄在設計表結構時,應該考慮如下幾點因素表中需要包含的列,每一列的數(shù)據(jù)類型、精度。表中哪些列允許空值或不允許空值。表中是否設置主鍵,在何處設置主鍵。表中是否設置約束、默認值等,以及在何處設置。表中是否設置外鍵以及在何處設置。

表中是否設置索引、在何處設置以及設置什么樣的索引。

【例8.1】

使用SQLServer管理控制器在school數(shù)據(jù)庫中建立student表(學生表)、teacher表(教師表)、course表(課程表)、allocate(課程分配表)和score表(成績表)。

解:其操作步驟如下:

(1)啟動SQLServer管理控制器,展開“LCB-PC”服務器節(jié)點。(2)展開“數(shù)據(jù)庫”節(jié)點。選中數(shù)據(jù)庫“school”,展開school數(shù)據(jù)庫。

(3)選中“表”,單擊鼠標右鍵,在出現(xiàn)的快捷菜單中選擇“新建表”命令,如圖8.1所示。

(4)此時打開表設計器窗口,在“列名”欄中依次輸入表的字段名,并設置每個字段的數(shù)據(jù)類型、長度等屬性。輸入完成后的結果如下圖,每個列都對應一個“列屬性”對話框,其中各個選項的含義如下:名稱:指定列名稱。長度:數(shù)據(jù)類型的長度。默認值或綁定:在新增記錄時,如果沒有把值賦予該字段,則此默認值為字段值。數(shù)據(jù)類型:列的數(shù)據(jù)類型,用戶可以單擊該欄,然后單擊出現(xiàn)的下三角按鈕,即可進行選擇。允許空:指定是否可以輸入空值。RowGuid:可以讓SQLServer產(chǎn)生一個全局唯一的列值,但列類型必須是uniqueidentifier。有此屬性的列會自動產(chǎn)生列值,不需要用戶輸入(用戶也不能輸入)。排序規(guī)則:指定該列的排序規(guī)則。

(5)在學號列上右擊鼠標,在出現(xiàn)的快捷菜單中選擇“設置主鍵”命令,如下圖,從而將學號列設置為該表的主鍵,此時,該列名前面會出現(xiàn)一個鑰匙圖標。

(6)單擊工具欄中的保存按鈕,出現(xiàn)下圖所示的對話框,輸入表的名稱“student”,單擊“確定”按鈕。此時便建好了student表(表中沒有數(shù)據(jù))。

(7)依照上述步驟,再創(chuàng)建4個表:teacher表(教師表)、course表(課程表)、allocate(課程分配表)和score表(學生成績表)。表的結構分別如下圖。

最后在school數(shù)據(jù)庫中建立的5個表的表結構如下(帶下劃線字段表示主鍵):

student(學號,姓名,性別,出生日期,班號)

teacher(編號,姓名,性別,出生日期,職稱,部門)

course(課程號,課程名,任課教師)

allocate(班號,課程號,教師編號)

score(學號,課程號,分數(shù))8.3修改表的結構

使用SQLServer管理控制器修改和查看數(shù)據(jù)表結構與創(chuàng)建表結構的過程相同。

【例8.2】

使用SQLServer管理控制器,先在student表中增加一個民族列(其數(shù)據(jù)類型為char(16)),然后進行刪除。

解:其操作步驟如下:(1)啟動SQLServer管理控制器,展開“LCB-PC”服務器節(jié)點。

(2)展開“數(shù)據(jù)庫”節(jié)點。選中“school”,將其展開,選中“表”,將其展開,選中表“dbo.student”,單擊鼠標右鍵,在出現(xiàn)的快捷菜單中選擇“修改”命令,如圖8.8所示。

(3)在班號列前面增加民族列,其操作是,在打開的表設計器窗口中,用鼠標右擊班號列,然后在出現(xiàn)的快捷菜單中選擇“插入列”命令。(4)在新插入的列中,輸入“民族”,設置數(shù)據(jù)類型為char,長度為16,如圖所示。

(5)現(xiàn)在刪除剛增加的民族列。用鼠標右擊“民族”列,然后在出現(xiàn)的快捷菜單中選擇“刪除列”命令,如圖8.9所示,這樣就刪除了民族列。

(6)單擊工具欄中的保存按鈕,保存所進行的修改。說明:本例操作完畢后,student表保持原有的表結構不變。8.4數(shù)據(jù)庫關系圖

一個數(shù)據(jù)庫中可能有多個表,表之間可能存在著關聯(lián)關系,建立這種關聯(lián)關系的圖示稱為數(shù)據(jù)庫關系圖。8.4.1建立數(shù)據(jù)庫關系圖通過一個示例說明建立數(shù)據(jù)庫關系圖的過程。

【例8.3】

建立school數(shù)據(jù)庫中5個表的若干外鍵關系。

解:其操作步驟如下:(1)啟動SQLServer管理控制器,展開“LCB-PC”股務器節(jié)點。(2)展開“數(shù)據(jù)庫”節(jié)點,選中“school”,將其展開。

(3)選中“數(shù)據(jù)庫關系圖”,單擊鼠標右鍵,在出現(xiàn)的快捷菜單中選擇“新建數(shù)據(jù)庫關系圖”命令,如圖8.11所示。

(4)此時出現(xiàn)“添加表”對話框,由于要建立school數(shù)據(jù)庫中5個表的關系,所以選中每一個表,并單擊“添加”按鈕,添加完畢后,單擊“關閉”按鈕返回到SQLServer管理控制器。在“關系圖”中任意空白處單擊鼠標右鍵,在出現(xiàn)的快捷菜單中選擇“添加表”命令即可出現(xiàn)“添加表”對話框。

(5)此時SQLServer管理控制器右邊出現(xiàn)如圖8.12所示的“關系圖”對話框。

(6)現(xiàn)在建立student表中學號列和score表中學號列之間的關系。

(7)采用同樣的過程建立course表中課程號列(主鍵)和score表中課程號列(外鍵)之間的外鍵關系。(8)采用同樣的過程建立teacher表中編號列(主鍵)和allocate表中教師編號列(外鍵)之間的外鍵關系。(9)采用同樣的過程建立course表中課程列(主鍵)和allocate表中課程號列(外鍵)之間的外鍵關系。

(10)最終建好的關系圖如圖所示。單擊工具欄中的保存按鈕來保存關系,此時出現(xiàn)“選擇名稱”對話框,輸入關系圖名稱,單擊“確定”按鈕保存。

建好的school數(shù)據(jù)庫中5個表之間的關系如下圖。

通過數(shù)據(jù)庫關系圖建立的關系反映在各個表的鍵中,如圖所示是allocate表的鍵列表,其中PK_allocate鍵是通過設置主鍵建立的,而FK_allocate_course和FK_allocate_teacher兩個鍵是通過上例建立的。8.4.2刪除關系和數(shù)據(jù)庫關系圖1.通過數(shù)據(jù)庫關系圖刪除關系

可通過數(shù)據(jù)庫關系圖刪除表之間的外鍵關系。

其操作方法:打開相關的數(shù)據(jù)庫關系圖,選中該外鍵關系連線,單擊鼠標右鍵,在出現(xiàn)的快捷菜單中選擇“從數(shù)據(jù)庫中刪除關系”命令,在出現(xiàn)的對話框中選擇“是”即可。2.刪除數(shù)據(jù)庫關系圖

當不再需要數(shù)據(jù)庫關系圖時,可以選中“數(shù)據(jù)庫關系圖”列表中的某個數(shù)據(jù)庫關系圖(如dbo.Diagram_0),單擊鼠標右鍵,在出現(xiàn)的快捷菜單中選擇“刪除”命令即可。刪除某個數(shù)據(jù)庫關系圖后,其包含的外鍵關系仍然保存在數(shù)據(jù)庫中,不會連同該數(shù)據(jù)庫關系圖一起被刪除。若某數(shù)據(jù)庫關系圖被刪除了,還需要刪除其外鍵關系,只有進入各表的鍵列表中,一個一個將不需要的外鍵刪除掉。8.5更改表名

在有些情況下需要更改表的名稱,被更名的表必須已經(jīng)存在??墒褂肧QLServer管理控制器更改表名。

【例8.4】

將數(shù)據(jù)庫school中abc表(已創(chuàng)建)更名為xyz。

解:其操作步驟如下:(1)啟動SQLServer管理控制器,展開“LCB-PC”股務器節(jié)點。(2)展開“數(shù)據(jù)庫”節(jié)點,展開“school”,選中“表”,將其展開。

(3)選中表“dbo.abc”,單擊鼠標右鍵,在出現(xiàn)的快捷菜單中選擇“重命名”命令,如圖所示。

(4)此時表名稱變?yōu)榭删庉嫷?,如圖所示,直接將其修改成“xyz”即可。8.6刪除表

【例8.5】

刪除數(shù)據(jù)庫school中xyz表(已創(chuàng)建)。

解:其操作步驟如下:(1)啟動SQLServer管理控制器,展開“LCB-PC”股務器節(jié)點。(2)展開“數(shù)據(jù)庫”節(jié)點,展開“school”,選中“表”,將其展開。

(3)選中表“dbo.xyz”,單擊鼠標右鍵,在出現(xiàn)的快捷菜單中選擇“刪除”命令,如圖所示。

(4)此時出現(xiàn)“刪除對象”對話框,直接單擊“確定”按鈕將xyz表刪除了。8.7記錄的新增和修改

記錄的新增和修改與記錄的表內(nèi)容的查看的操作過程是相同的,就是在打開表的內(nèi)容窗口后,直接輸入新的記錄或者進行修改。

【例8.6】

輸入school數(shù)據(jù)庫中student、teacher、course、allocate和score等5個表的相關記錄。

解:其操作步驟如下:(1)啟動SQLServer管理控制器,展開“LCB-PC”股務器節(jié)點。(2)展開“數(shù)據(jù)庫”節(jié)點,選中“school”,將其展開,選中“表”,將其展開。

(3)選中表“dbo.student”,單擊鼠標右鍵,在出現(xiàn)的快捷菜單中選擇“打開表”命令,如圖所示。

(4)此時出現(xiàn)student數(shù)據(jù)表編輯對話框,用戶可以在其中各字段中直接輸入或編輯相應的數(shù)據(jù),這里輸入6個學生記錄,如圖所示。

(5)采用同樣的方法輸入teacher、course、allocate和score表中數(shù)據(jù)記錄,分別如圖所示。說明:本例中輸入的數(shù)據(jù)作為樣本數(shù)據(jù),在本書后面的許多例子中用到。常用的基本數(shù)據(jù)類型種類數(shù)據(jù)類型數(shù)字整數(shù)int,bigint,smallint,tinyint精確數(shù)值decimal,numeric近似數(shù)值float,real貨幣money,smallmoney日期和時間datetime,smalldatetime字符Non-Unicodechar,varchar,varchar(max),textUnicodenchar,nvarchar,nvarchar(max),ntext二進制binary,varbinary,varbinary(max)圖像image全局標識符uniqueidentifierXMLxml特殊bit,cursor,timestamp,sysname,table,sql_variant數(shù)字數(shù)據(jù)類型數(shù)字數(shù)據(jù)類型表示符號用途精確數(shù)字類型整數(shù)數(shù)據(jù)類型int、bigint、smallint、tinyint存儲數(shù)字數(shù)據(jù),直接進行數(shù)據(jù)運算位數(shù)據(jù)類型bit用于一些條件邏輯判斷貨幣數(shù)據(jù)類型money、smallmoney存儲貨幣數(shù)據(jù)十進制小數(shù)型decimal、numeric存儲帶固定精度和位數(shù)的小數(shù)近似數(shù)字類型浮點數(shù)據(jù)類型float、real存儲范圍非常大的數(shù)字,用于表示指定數(shù)的大致數(shù)據(jù)值整數(shù)數(shù)據(jù)類型:bigint型,長度為8個字節(jié),存儲范圍為-263~263-1;int型,長度為4個字節(jié),存儲范圍為-231~231-1;smallint型,長度為2個字節(jié),存儲范圍為-215~215-1;tinyint型,長度為1個字節(jié),存儲范圍為0~255。位型數(shù)據(jù)(bit):只存儲0、1或NULL,長度為1字節(jié),常用于一些條件邏輯判斷。貨幣數(shù)據(jù)類型:小數(shù)位數(shù)最多4位,money型長度為8個字節(jié),存儲范圍為-263~263-1,smallmoney型長度為4個字節(jié),存儲范圍為-231~231-1,使用時在數(shù)字前面加上“$”貨幣符號。十進制小數(shù)型:decimal和numeric,這兩種數(shù)據(jù)類型為完全相同的數(shù)據(jù)類型。decimal數(shù)據(jù)類型由整數(shù)部分和小數(shù)部分構成,它的語法格式如下:decimal(p,s)其中p表示數(shù)字的精度,s表示數(shù)字的小數(shù)位數(shù),s的默認值為0。浮點數(shù)據(jù)型數(shù):(real和float)通常用于科學計算,數(shù)據(jù)用科學計數(shù)法表示。這種數(shù)據(jù)類型的優(yōu)點是能夠存儲范圍非常大的數(shù)字。但是浮點數(shù)據(jù)類型容易產(chǎn)生舍入誤差。在對數(shù)據(jù)的精度要求并不是絕對嚴格時,可以考慮使用real或者float型數(shù)據(jù)。字符數(shù)據(jù)類型字符類型表示符號用法ANSI字符char存儲指定長度的字符串varchar存儲可變長度字符text存儲大量字符Unicode字符nchar用于存儲Unicode字符nvarchar與varchar類似,存儲可變長度Unicode字符ntext與text類似,存儲大量Unicode字符數(shù)據(jù)Char:存儲固定長度字符的ANSI字符類型,最長可以容納8K個字符,當列中字符長度基本一致時(如學號、姓名等),可以使用char類型。Varchar:用于存儲可變長度的ANSI字符數(shù)據(jù),最長可以容納8K個字符,當數(shù)據(jù)長度相差較大時(如備注),使用varchar類型可以節(jié)省存儲空間。Text:存儲長度大于8K個字符的ANSI字符。Nchar:用于存儲固定長度的Unicode字符數(shù)據(jù)。Nvarchar:用于存

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論