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

下載本文檔

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

文檔簡介

第4章創(chuàng)建和使用表4.1表的概念4.1.1什么是表SQLServer中的數(shù)據(jù)庫由表的集合組成,這些表用于存儲一組特定的結(jié)構(gòu)化數(shù)據(jù)。表中包含行(也稱為記錄或元組)和列(也稱為屬性)的集合。SQLServer提供了很多種數(shù)據(jù)類型,還可以根據(jù)需要用戶自已定義新的數(shù)據(jù)類型,SQLServer中常用的數(shù)據(jù)類型如表4.1所示。數(shù)據(jù)類型說明number(p)整數(shù)(其中p為精度)decimal(p,s)浮點數(shù)(其中p為精度,d為小數(shù)位數(shù))char(n)固定長度字符串(其中n為長度)varchar(n)可變長度字符串(其中n為最大長度)datetime日期和時間空值是列的一種特殊取值,用NULL表示??罩导炔皇莄har型或varchar型中的空字符串,也不是int型的0值。它表示對應(yīng)的數(shù)據(jù)是不確定的。表中主鍵列必須有確定的取值(不能為空值),其余列的取值可以不確定(可以為空值)。4.1.2表中數(shù)據(jù)的完整性

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

規(guī)則是指表中數(shù)據(jù)應(yīng)滿足一些基本條件。例如,學(xué)生成績表中分數(shù)只能在0~100之間,學(xué)生表中性別只能取“男”或“女”之一等。2.默認值默認值是指表中數(shù)據(jù)的默認取值。例如,學(xué)生表中性別的默認可以設(shè)置為“男”。3.表的約束約束是指表中數(shù)據(jù)應(yīng)滿足一些強制性條件,這些條件通常由用戶在設(shè)計表時指定。(1)非空約束(NOTNULL):非空約束是指數(shù)據(jù)列不接受NULL值。例如,學(xué)生表中學(xué)號通常設(shè)定為主鍵,不能接受NULL值。(2)檢查約束(CHECK約束):檢查約束是指限制輸入到一列或多列中的可能值。例如,學(xué)生表中性別約束為只能取“男”或“女”值。(3)唯一約束(UNIQUE約束):唯一約束是指一列或多列組合不允許出現(xiàn)兩個或兩個以上的相同的值。例如,學(xué)生成績表中,學(xué)號和課程號可以設(shè)置為唯一約束,因為一個學(xué)生對應(yīng)一門課程不能有兩個或以上的分數(shù)。(4)主鍵約束(PRIMARYKEY約束):主鍵約束是指定義為主鍵(一列或多列組合)的列不允許出現(xiàn)兩個或兩個以上的相同值。例如,若將學(xué)生表中的學(xué)號設(shè)置為主鍵,則不能存在兩個學(xué)號相同的學(xué)生記錄。(5)外鍵約束(FOREIGNKEY約束):一個表的外鍵通常指向另一個表的候選主鍵,所謂外鍵約束是指輸入的外鍵值必須在對應(yīng)的候選碼中存在。例如,學(xué)生成績表中的學(xué)號列是外鍵,對應(yīng)于學(xué)生表的學(xué)號主鍵,外鍵約束是指輸入學(xué)生成績表中的學(xué)號值必須在學(xué)生表的學(xué)號列中已存在。4.2創(chuàng)建表

SQLServer提供了兩種方法創(chuàng)建數(shù)據(jù)庫表,第一種方法是利用SQLServer管理控制器建立表;另一種方法是利用T-SQL語句中的createtable命令建立表。本章只介紹采用前一種方法建表,后一種方法將在下一章介紹。

【例4.1】使用SQLServer管理控制器在school數(shù)據(jù)庫中建立student表(學(xué)生表)、teacher表(教師表)、course表(課程表)和score表(成績表)。操作步驟啟動SQLServer管理控制器,展開“LCB-PC”服務(wù)器節(jié)點。展開“數(shù)據(jù)庫”節(jié)點。選中數(shù)據(jù)庫“school”,展開school數(shù)據(jù)庫。選中“表”,單擊鼠標(biāo)右鍵,在出現(xiàn)的快捷菜單中選擇“新建表”命令,如圖4.1所示。此時打開表設(shè)計器窗口,在“列名”欄中依次輸入表的列名,并設(shè)置每個列的數(shù)據(jù)類型、長度等屬性。輸入完成后的結(jié)果如圖4.2所示。名稱:指定列名稱。長度:數(shù)據(jù)類型的長度。默認值或綁定:在新增記錄時,如果沒有把值賦予該字段,則此默認值為字段值。數(shù)據(jù)類型:列的數(shù)據(jù)類型,用戶可以單擊該欄,然后單擊出現(xiàn)的下三角按鈕,即可進行選擇。允許空:指定是否可以輸入空值。RowGuid:可以讓SQLServer產(chǎn)生一個全局唯一的列值,但列類型必須是uniqueidentifier。有此屬性的列會自動產(chǎn)生列值,不需要用戶輸入(用戶也不能輸入)。排序規(guī)則:指定該列的排序規(guī)則。在“學(xué)號”列上右擊鼠標(biāo),在出現(xiàn)的快捷菜單中選擇“設(shè)置主鍵”命令,如圖4.3所示,從而將“學(xué)號”列設(shè)置為該表的主鍵,此時,該列名前面會出現(xiàn)一個鑰匙圖標(biāo)。單擊工具欄中的保存按鈕,出現(xiàn)如圖4.4所示的對話框,輸入表的名稱“student”,單擊“確定”按鈕。此時便建好了student表(表中沒有數(shù)據(jù))。依照上述步驟,再創(chuàng)建3個表:teacher表(教師表)、course表(課程表)和score表(學(xué)生成績表)。表的結(jié)構(gòu)分別如圖4.7~圖4.9所示。4.3修改表的結(jié)構(gòu)采用SQLServer管理控制器修改和查看數(shù)據(jù)表結(jié)構(gòu)十分簡單,修改表結(jié)構(gòu)與創(chuàng)建表結(jié)構(gòu)的過程相同。

【例4.2】使用SQLServer管理控制器,先在student表中增加一個民族列(其數(shù)據(jù)類型為char(16)),然后進行刪除。操作步驟啟動SQLServer管理控制器,展開“LCB-PC”服務(wù)器節(jié)點。展開“數(shù)據(jù)庫”節(jié)點。選中“school”,將其展開,選中“表”,將其展開,選中表“dbo.student”,單擊鼠標(biāo)右鍵,在出現(xiàn)的快捷菜單中選擇“設(shè)計”命令。在班號列前面增加民族列,其操作是,在打開的表設(shè)計器窗口中,用鼠標(biāo)右擊班號列,然后在出現(xiàn)的快捷菜單中選擇“插入列”命令。在新插入的列中,輸入“民族”,設(shè)置數(shù)據(jù)類型為char,長度為16,如圖4.10所示?,F(xiàn)在刪除剛增加的民族列。用鼠標(biāo)右擊“民族”列,然后在出現(xiàn)的快捷菜單中選擇“刪除列”命令,如圖所示,這樣就刪除了民族列。單擊工具欄中的保存按鈕,保存所進行的修改。說明:本例操作完畢后,student表保持原有的表結(jié)構(gòu)不變。4.4數(shù)據(jù)庫關(guān)系圖一個數(shù)據(jù)庫中可能有多個表,表之間可能存在著關(guān)聯(lián)關(guān)系,建立這種關(guān)聯(lián)關(guān)系的圖示稱為數(shù)據(jù)庫關(guān)系圖。4.4.1建立數(shù)據(jù)庫關(guān)系圖【例4.3】建立school數(shù)據(jù)庫中4個表的若干外鍵關(guān)系。操作步驟啟動SQLServer管理控制器,展開“LCB-PC”服務(wù)器節(jié)點。展開“數(shù)據(jù)庫”節(jié)點,選中“school”,將其展開。選中“數(shù)據(jù)庫關(guān)系圖”,單擊鼠標(biāo)右鍵,在出現(xiàn)的快捷菜單中選擇“新建數(shù)據(jù)庫關(guān)系圖”命令,如圖4.11所示。此時出現(xiàn)“添加表”對話框,由于要建立school數(shù)據(jù)庫中4個表的關(guān)系,所以選中每一個表,并單擊“添加”按鈕,添加完畢后,單擊“關(guān)閉”按鈕返回到SQLServer管理控制器。在“關(guān)系圖”中任意空白處單擊鼠標(biāo)右鍵,在出現(xiàn)的快捷菜單中選擇“添加表”命令即可出現(xiàn)“添加表”對話框。此時SQLServer管理控制器右邊出現(xiàn)如圖4.12所示的“關(guān)系圖”對話框?,F(xiàn)在建立student表中學(xué)號列和score表中學(xué)號列之間的關(guān)系:選中score表中的學(xué)號列,按下鼠標(biāo)左鍵不放,拖動到student表上學(xué)號列上,放開鼠標(biāo)左鍵,立即出現(xiàn)如圖4.13所示的“表和列”對話框,表示要建立student表中學(xué)號列和score表中學(xué)號列之間的關(guān)系(用戶可以從主鍵表和外鍵表組合框中選擇其他表,也可以選擇其他列名),這里保持表和列不變,關(guān)系名也取默認值,單擊“確定”按鈕。出現(xiàn)如圖4.14所示的“外鍵關(guān)系”對話框,單擊“確定”按鈕返回到SQLServer管理控制器。采用同樣的過程建立course表中課程號列(主鍵)和score表中課程號列(外鍵)之間的外鍵關(guān)系。采用同樣的過程建立teacher表中編號列(主鍵)和course表中任課教師編號列(外鍵)之間的外鍵關(guān)系。最終建好的關(guān)系圖如圖4.16所示。單擊工具欄中的保存

按鈕來保存關(guān)系。通過數(shù)據(jù)庫關(guān)系圖建立的關(guān)系反映在各個表的鍵中,如圖4.17所示是score表的鍵列表,其中PK_score鍵是通過設(shè)置主鍵建立的,而FK_score_course和FK_score_student兩個鍵是通過上例建立的。8.4.2刪除關(guān)系和數(shù)據(jù)庫關(guān)系圖通過數(shù)據(jù)庫關(guān)系圖刪除關(guān)系當(dāng)不再需要時,可以通過數(shù)據(jù)庫關(guān)系圖刪除表之間的外鍵關(guān)系。其操作是:進入建立該外鍵關(guān)系的數(shù)據(jù)庫關(guān)系圖,選中該外鍵關(guān)系連線,單擊鼠標(biāo)右鍵,在出現(xiàn)的快捷菜單中選擇“從數(shù)據(jù)庫中刪除關(guān)系”命令,在出現(xiàn)的對話框中選擇“是”即可。2.刪除數(shù)據(jù)庫關(guān)系圖當(dāng)不再需要數(shù)據(jù)庫關(guān)系圖后,可以選中“數(shù)據(jù)庫關(guān)系圖”列表中的某個數(shù)據(jù)庫關(guān)系圖(如dbo.Diagram_0),單擊鼠標(biāo)右鍵,在出現(xiàn)的快捷菜單中選擇“刪除”命令即可。刪除某個數(shù)據(jù)庫關(guān)系圖后,其包含的外鍵關(guān)系仍然保存在數(shù)據(jù)庫中,不會連同該數(shù)據(jù)庫關(guān)系圖一起被刪除。若某數(shù)據(jù)庫關(guān)系圖被刪除了,還需要刪除其外鍵關(guān)系,只有進入各表的鍵列表中,一個一個將不需要的外鍵刪除掉。4.5表的更名和刪除4.5.1表的更名【例4.4】將數(shù)據(jù)庫school中abc表(已創(chuàng)建)更名為xyz。操作步驟啟動SQLServer管理控制器,展開“LCB-PC”服務(wù)器節(jié)點。展開“數(shù)據(jù)庫”節(jié)點,展開“school”,選中“表”,將其展開。選中表“dbo.abc”,單擊鼠標(biāo)右鍵,在出現(xiàn)的快捷菜單中選擇“重命名”命令。此時表名稱變?yōu)榭删庉嫷?,直接將其修改成“xyz”即可。4.5.2刪除表【例4.5】刪除數(shù)據(jù)庫school中xyz表(已創(chuàng)建)。操作步驟啟動SQLServer管理控制器,展開“LCB-PC”服務(wù)器節(jié)點。展開“數(shù)據(jù)庫”節(jié)點,展開“school”,選中“表”,將其展開。選中表“dbo.xyz”,單擊鼠標(biāo)右鍵,在出現(xiàn)的快捷菜單中選擇“刪除”命令。此時出現(xiàn)“刪除對象”對話框,直接單擊“確定”按鈕將xyz表刪除了。4.6記錄的新增和修改記錄的新增和修改與記錄的表內(nèi)容的查看的操作過程是相同的,就是在打開表的內(nèi)容窗口后,直接輸入新的記錄或者進行修改。

【例4.6】輸入school數(shù)據(jù)庫中student、teacher、course和score等4個表的相關(guān)記錄。操作步驟啟動SQLServer管理控制器,展開“LCB-PC”服務(wù)器節(jié)點。展開“數(shù)據(jù)庫”節(jié)點,選中“school”,將其展開,選中“表”,將其展開。選中表“dbo.student”,單擊鼠標(biāo)右鍵,在出現(xiàn)的快捷菜單中選擇“編輯前200行”命令。此時出現(xiàn)student數(shù)據(jù)表編輯對話框,用戶可以在其中各列中直接輸入或編輯相應(yīng)的數(shù)據(jù),這里輸入6個學(xué)生記錄,如圖4.18所示。采用同樣的方法輸入teacher、course和score表中數(shù)據(jù)記錄,分別如圖4.19~圖4.21所示。

說明:本例中輸入的數(shù)據(jù)作為樣本數(shù)據(jù),在本書后面的許多例子中用到。4.7表的幾種特殊的列計算列計算列由可以使用同一表中的其他列的表達式計算得來。表達式可以是非計算列的列名、常量、函數(shù),也可以是用一個或多個運算符連接的上述元素的任意組合。表達式不能為子查詢。除非另行指定,否則計算列是未實際存儲在表中的虛擬列。每當(dāng)在查詢中引用計算列時,都將重新計算它們的值。數(shù)據(jù)庫引擎在CREATETABLE和ALTERTABLE語句中使用PERSISTED關(guān)鍵字(持久的)來將計算列實際存儲在表中。如果在計算列的計算更改時涉及任何列,將更新計算列的值。

【例4.7】在school數(shù)據(jù)庫中設(shè)計一個含自動計算總分的計算列的表stud1,并輸入記錄驗證。啟動SQLServer管理控制器,在school數(shù)據(jù)庫中創(chuàng)建stud1表,如圖4.22所示,其中“總分”列是計算列,其值是由語文、數(shù)學(xué)、英語和綜合四門課程累計的。操作步驟打開該表,輸入6個記錄,如圖4.23所示,SQLServer會自動計算出總分,總分列呈現(xiàn)淺灰色,不可輸入。2.標(biāo)識列如果一個列包含有規(guī)律的數(shù)值,可以設(shè)計成標(biāo)識列。標(biāo)識列包含系統(tǒng)生成的連續(xù)值,用于唯一標(biāo)識表中的每一行。因此,標(biāo)識列不能包含默

溫馨提示

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

評論

0/150

提交評論