創(chuàng)建數(shù)據(jù)庫和表_第1頁
創(chuàng)建數(shù)據(jù)庫和表_第2頁
創(chuàng)建數(shù)據(jù)庫和表_第3頁
創(chuàng)建數(shù)據(jù)庫和表_第4頁
創(chuàng)建數(shù)據(jù)庫和表_第5頁
已閱讀5頁,還剩84頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

創(chuàng)建數(shù)據(jù)庫和表第一頁,共89頁。目錄單元1SQLSERVER2008基礎(chǔ)單元2創(chuàng)建數(shù)據(jù)庫和表單元3數(shù)據(jù)庫的查詢和視圖單元4數(shù)據(jù)庫的索引、默認(rèn)值和規(guī)則單元5數(shù)據(jù)庫的存儲過程和觸發(fā)器單元6數(shù)據(jù)庫的日常管理與維護(hù)單元7數(shù)據(jù)庫的安全管理單元8SQLServer數(shù)據(jù)庫應(yīng)用程序開發(fā)單元9數(shù)據(jù)庫在電子商務(wù)中的應(yīng)用第二頁,共89頁。單元2創(chuàng)建數(shù)據(jù)庫和表初步了解SQLServer2008的基本知識后,本單元將以“圖書信息管理”數(shù)據(jù)庫為實例,分別介紹使用對象資源管理器和使用T-SQL命令來創(chuàng)建、修改、刪除數(shù)據(jù)庫和表的方法,以及為表設(shè)置約束和操作表數(shù)據(jù)的方法。單元說明第三頁,共89頁。單元2創(chuàng)建數(shù)據(jù)庫和表會使用對象資源管理器和T-SQL命令創(chuàng)建、修改和刪除數(shù)據(jù)庫。掌握分離和附加數(shù)據(jù)庫的方法。會使用對象資源管理器和T-SQL命令創(chuàng)建、修改和刪除表。會使用對象資源管理器和T-SQL命令創(chuàng)建及刪除表的各種約束。會對數(shù)據(jù)庫的表進(jìn)行插入、修改及刪除表數(shù)據(jù)的操作。技能目標(biāo)認(rèn)識數(shù)據(jù)庫。了解數(shù)據(jù)類型。掌握數(shù)據(jù)庫和表的創(chuàng)建及管理的方法。掌握保持?jǐn)?shù)據(jù)完整性的各種約束的設(shè)置方法。會操作數(shù)據(jù)庫表中的數(shù)據(jù)。知識目標(biāo)第四頁,共89頁。單元2創(chuàng)建數(shù)據(jù)庫和表任務(wù)2.1創(chuàng)建及管理“圖書信息管理”數(shù)據(jù)庫任務(wù)2.2創(chuàng)建數(shù)據(jù)庫表任務(wù)2.4表數(shù)據(jù)的操作任務(wù)2.3設(shè)置表約束第五頁,共89頁。任務(wù)2.1創(chuàng)建及管理“圖書信息管理”數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫,并學(xué)習(xí)如何管理數(shù)據(jù)庫,以及分離和附加數(shù)據(jù)庫的方法。任務(wù)說明學(xué)會使用對象資源管理器和CREATEDATABASE語句兩種方法創(chuàng)建數(shù)據(jù)庫。學(xué)會查看、修改和刪除數(shù)據(jù)庫。掌握分離與附加數(shù)據(jù)庫的方法。任務(wù)目標(biāo)第六頁,共89頁。任務(wù)2.1創(chuàng)建及管理“圖書信息管理”數(shù)據(jù)庫活動2.1.1創(chuàng)建“圖書信息管理”數(shù)據(jù)庫活動2.1.2管理“圖書信息管理”數(shù)據(jù)庫活動2.1.3“圖書信息管理”數(shù)據(jù)庫的分離與附加第七頁,共89頁?;顒?.1.1創(chuàng)建“圖書信息管理”數(shù)據(jù)庫當(dāng)使用數(shù)據(jù)庫存儲數(shù)據(jù)時,必須先創(chuàng)建一個數(shù)據(jù)庫。在SQLServer2008中創(chuàng)建數(shù)據(jù)庫的方法主要有兩種,一是在對象資源管理器中通過方便的圖形化向?qū)?chuàng)建,二是通過編寫CREATEDATABASE語句創(chuàng)建。案例1使用對象資源管理器創(chuàng)建一個名為“圖書信息管理”的數(shù)據(jù)庫,數(shù)據(jù)文件和日志文件都保存在“D:\圖書信息管理”文件夾中。『小貼士』①在數(shù)據(jù)庫名稱文本框中輸入的數(shù)據(jù)庫名稱不能與其他現(xiàn)存數(shù)據(jù)庫的名稱相同。②在創(chuàng)建數(shù)據(jù)庫時,默認(rèn)情況下,數(shù)據(jù)文件的邏輯名和文件名跟數(shù)據(jù)庫名稱是相同的,日志文件的邏輯名和文件名是在數(shù)據(jù)庫名后添加“_log”。如本例中數(shù)據(jù)庫創(chuàng)建成功后,在“D:\圖書信息管理”文件夾下會有兩個文件,分別是數(shù)據(jù)文件“圖書信息管理.mdf”和日志文件“圖書信息管理_log.ldf”?!炯寄芡卣埂克伎迹喝绾卧趧?chuàng)建數(shù)據(jù)庫時根據(jù)需要設(shè)置數(shù)據(jù)文件和日志文件的初始大小和增長方式?第八頁,共89頁?;顒?.1.1創(chuàng)建“圖書信息管理”數(shù)據(jù)庫案例2使用CREATEDATABASE語句創(chuàng)建一個名為“圖書信息管理”的數(shù)據(jù)庫,數(shù)據(jù)文件的邏輯名和文件名都為“圖書信息管理”,初始大小為4MB,最大為50MB,自動增長方式是按10%的比例增長;日志文件的邏輯名和文件名都為“圖書信息管理_log”,初始大小為2MB,最大值為20MB,自動增長方式是按1MB增長;數(shù)據(jù)文件和日志文件都保存在“D:\圖書信息管理”文件夾中。CREATE

DATABASE

圖書信息管理ON

PRIMARY

(NAME='圖書信息管理',='D:\圖書信息管理\圖書信息管理.mdf',SIZE=4MB,MAXSIZE=50MB,=10%)LOG

ON(NAME='圖書信息管理_LOG',='D:\圖書信息管理\圖書信息管理_log.ldf',SIZE=2MB,MAXSIZE=20MB,=1MB)『小貼士』重新創(chuàng)建“圖書信息管理”數(shù)據(jù)庫時,必須先刪除之前創(chuàng)建的“圖書信息管理”數(shù)據(jù)庫。方法是:在對象資源管理器窗口右鍵單擊要刪除的數(shù)據(jù)庫,選擇“刪除”命令,單擊“確定”按鈕即可。第九頁,共89頁?;顒?.1.1創(chuàng)建“圖書信息管理”數(shù)據(jù)庫數(shù)據(jù)庫類型。在SQLServer2008中有兩類數(shù)據(jù)庫:系統(tǒng)數(shù)據(jù)庫和用戶數(shù)據(jù)庫。系統(tǒng)數(shù)據(jù)庫是在安裝SQLServer2008時由系統(tǒng)自動創(chuàng)建的,用于協(xié)助系統(tǒng)完成對數(shù)據(jù)的相關(guān)操作。而用戶數(shù)據(jù)庫是用戶自定義的數(shù)據(jù)庫。例如,本單元創(chuàng)建的圖書信息管理數(shù)據(jù)庫。系統(tǒng)數(shù)據(jù)庫包括master數(shù)據(jù)庫、model數(shù)據(jù)庫、msdb數(shù)據(jù)庫和Tempdb數(shù)據(jù)庫。⑴master數(shù)據(jù)庫master數(shù)據(jù)庫是SQLServer中最重要的數(shù)據(jù)庫,它是SQLServer的核心數(shù)據(jù)庫,如果該數(shù)據(jù)庫被損壞,SQLServer將無法正常工作。知識寶庫第十頁,共89頁?;顒?.1.1創(chuàng)建“圖書信息管理”數(shù)據(jù)庫(2)model數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫時,總是以一套預(yù)定義的標(biāo)準(zhǔn)為模型。例如,若希望所有的數(shù)據(jù)庫都有確定的初始大小,或者都有特定的信息集,那么可以把這些信息放在model數(shù)據(jù)庫中,以model數(shù)據(jù)庫作為其他數(shù)據(jù)庫的模板數(shù)據(jù)庫。(3)msdb數(shù)據(jù)庫msdb數(shù)據(jù)庫給SQLServer代理提供必要的信息來運行作業(yè),它是SQLServer中另一個十分重要的數(shù)據(jù)庫。(4)Tempdb數(shù)據(jù)庫Tempdb數(shù)據(jù)庫是一個臨時數(shù)據(jù)庫,其主要作用是存儲用戶建立的臨時表和臨時存儲過程,為數(shù)據(jù)排序創(chuàng)建臨時表等。每次重新打開SQLServer時,將會建立一個全新的、空的tempdb數(shù)據(jù)庫。知識寶庫第十一頁,共89頁?;顒?.1.1創(chuàng)建“圖書信息管理”數(shù)據(jù)庫2.數(shù)據(jù)文件的類型SQLServer數(shù)據(jù)庫的數(shù)據(jù)文件包括以下三種類型的文件:①主要數(shù)據(jù)文件:包含數(shù)據(jù)庫的啟動信息,并用于存儲數(shù)據(jù)。每一個數(shù)據(jù)庫都有且僅有一個主要數(shù)據(jù)文件,默認(rèn)的文件擴(kuò)展名是.mdf。②次要數(shù)據(jù)文件:這些文件含有不能置于主要文件中的所有數(shù)據(jù)。如果主要文件可以包含數(shù)據(jù)庫中的所有數(shù)據(jù),那么數(shù)據(jù)庫就不需要次要數(shù)據(jù)文件。有些數(shù)據(jù)庫可能很大,故需要多個次要數(shù)據(jù)文件,或使用位于不同磁盤驅(qū)動器上的輔助文件將數(shù)據(jù)擴(kuò)展到多個磁盤。默認(rèn)的文件擴(kuò)展名是.ndf。③事務(wù)日志文件:主要用于恢復(fù)數(shù)據(jù)庫事務(wù)日志信息,每個數(shù)據(jù)庫必須至少有一個事務(wù)日志文件,但可以不止一個。默認(rèn)的文件擴(kuò)展名是.ldf。在SQLServer2008的一個數(shù)據(jù)庫中至少應(yīng)該有一個主要數(shù)據(jù)文件和一個事務(wù)日志文件。數(shù)據(jù)庫中的數(shù)據(jù)和事務(wù)日志信息不能放在同一文件中,并且每個數(shù)據(jù)庫都有自己的主要數(shù)據(jù)文件和事務(wù)日志文件。SQLServer數(shù)據(jù)庫系統(tǒng)使用數(shù)據(jù)庫中事務(wù)日志信息來進(jìn)行事務(wù)的恢復(fù)。知識寶庫第十二頁,共89頁?;顒?.1.1創(chuàng)建“圖書信息管理”數(shù)據(jù)庫3.CREATEDATABASE語句格式CREATEDATABASE數(shù)據(jù)庫名--用于設(shè)置數(shù)據(jù)庫名ON[PRIMARY]--主要文件組開始標(biāo)志,第一個定義的文件作為主要數(shù)據(jù)文件(NAME=邏輯名,路徑及文件名,--注意路徑要加上單引號并且文件名要寫上后綴SIZE=初始大小,MAXSIZE=最大值,增長值,)LOGON--日志文件開始標(biāo)志(NAME=邏輯名,路徑及文件名,--注意路徑要加上單引號并且文件名要寫上后綴SIZE=初始大小,MAXSIZE=最大值,增長值)知識寶庫第十三頁,共89頁?;顒?.1.1創(chuàng)建“圖書信息管理”數(shù)據(jù)庫以下語句是最簡單的創(chuàng)建數(shù)據(jù)庫的語句CREATEDATABASE數(shù)據(jù)庫名這樣創(chuàng)建的數(shù)據(jù)庫所有的文件都將使用默認(rèn)的文件名,所有選項都將使用默認(rèn)的設(shè)置,并把數(shù)據(jù)庫文件保存在默認(rèn)的位置。知識寶庫第十四頁,共89頁?;顒?.1.1創(chuàng)建“圖書信息管理”數(shù)據(jù)庫【體驗活動】1.使用對象資源管理器創(chuàng)建一個名為“學(xué)生成績管理”的數(shù)據(jù)庫。2.使用CREATEDATABASE語句創(chuàng)建一個名為“學(xué)生成績管理”的數(shù)據(jù)庫,數(shù)據(jù)文件的邏輯名和文件名都為“學(xué)生成績管理”,初始大小為2MB,最大值為60MB,自動增長方式是按10%的比例增長;日志文件的邏輯名和文件名都為“學(xué)生成績管理_log”,初始大小為1MB,最大值為30MB,自動增長方式是按2MB增長。數(shù)據(jù)文件和日志文件都保存在“D:\學(xué)生成績管理”文件夾中,并把代碼保存為“創(chuàng)建學(xué)生成績管理數(shù)據(jù)庫.sql”。把課本這里的初始大小改為3MB,因為主文件必須至少是3MB才能容納model數(shù)據(jù)庫的副本第十五頁,共89頁?;顒?.1.2管理“圖書信息管理”數(shù)據(jù)庫案例3查看“圖書信息管理”數(shù)據(jù)庫信息在對象資源管理器窗口查看“圖書信息管理”數(shù)據(jù)庫文件的存儲位置、初始大小和自動增長方式等信息。數(shù)據(jù)文件和日志文件的存儲位置選擇“文件”選項卡數(shù)據(jù)文件和日志文件的初始大小數(shù)據(jù)文件和日志文件的自動增長方式第十六頁,共89頁?;顒?.1.2管理“圖書信息管理”數(shù)據(jù)庫案例4修改“圖書信息管理”數(shù)據(jù)庫大小。把“圖書信息管理”數(shù)據(jù)庫的數(shù)據(jù)文件修改為初始大小5MB,不限制增長,自動增長方式是按2MB增長;日志文件初始大小為3MB,最大值為30MB,自動增長方式是按10%增長。案例5刪除“圖書信息管理”數(shù)據(jù)庫。方法一使用對象資源管理器刪除“圖書信息管理”數(shù)據(jù)庫『提示』①刪除數(shù)據(jù)庫的操作必須慎重,因為一旦刪除數(shù)據(jù)庫,數(shù)據(jù)庫及其所包含的對象將會全部被刪除,數(shù)據(jù)庫的數(shù)據(jù)文件和日志文件也會從磁盤上刪除。②不能刪除正在使用的數(shù)據(jù)庫,否則系統(tǒng)將會出現(xiàn)錯誤。③如果數(shù)據(jù)庫有正在使用的連接,刪除時要在左下角勾選“關(guān)閉現(xiàn)有連接”復(fù)選框。第十七頁,共89頁?;顒?.1.2管理“圖書信息管理”數(shù)據(jù)庫方法二

使用DROPDATABASE語句刪除“圖書信息管理”數(shù)據(jù)庫?!禾崾尽虎偈褂肈ROPDATABASE命令刪除數(shù)據(jù)庫不會出現(xiàn)確認(rèn)信息,使用這種方法時一定要小心謹(jǐn)慎。②刪除數(shù)據(jù)庫后,對象資源管理器窗口的顯示可能沒有即時更新,可以右鍵單擊“數(shù)據(jù)庫”,選擇“刷新”命令。③使用DROPDATABASE命令刪除數(shù)據(jù)庫時,系統(tǒng)中必須存在要刪除的數(shù)據(jù)庫,否則會出現(xiàn)錯誤提示。④DROPDATABASE語句格式DROPDATABASE數(shù)據(jù)庫名[1,…N]可以同時刪除多個數(shù)據(jù)庫,注意多個數(shù)據(jù)庫中間要用逗號隔開。第十八頁,共89頁?;顒?.1.2管理“圖書信息管理”數(shù)據(jù)庫【體驗活動】1.查看已創(chuàng)建的“學(xué)生成績管理”數(shù)據(jù)庫的保存位置,初始大小及自動增長方式等信息。2.將“學(xué)生成績管理”數(shù)據(jù)文件修改為初始大小為4MB,不限制增長,自動增長方式是按2MB增長。數(shù)據(jù)庫的日志文件修改為初始大小2MB,最大值為50MB,自動增長方式是按1MB增長。3.使用對象資源管理器刪除“學(xué)生成績管理”數(shù)據(jù)庫。4.使用之前保存的“創(chuàng)建學(xué)生成績管理數(shù)據(jù)庫.sql”重新創(chuàng)建“學(xué)生成績管理”數(shù)據(jù)庫,然后使用DROPDATABASE命令刪除該數(shù)據(jù)庫。第十九頁,共89頁?;顒?.1.3“圖書信息管理”數(shù)據(jù)庫的分離與附加分離數(shù)據(jù)庫是指將數(shù)據(jù)庫從SQLServer系統(tǒng)中刪除,但數(shù)據(jù)庫的數(shù)據(jù)文件和日志文件保持不變,分離后的數(shù)據(jù)庫可以移動。附加是把分離后的數(shù)據(jù)庫附加到任何SQLServer系統(tǒng)中,使數(shù)據(jù)庫的使用狀態(tài)與分離時的狀態(tài)完全相同。分離和附加數(shù)據(jù)庫的操作可以將數(shù)據(jù)庫從一個SQLServer系統(tǒng)移到另一個SQLServer系統(tǒng),也可以把數(shù)據(jù)庫文件從一個磁盤移到另一個磁盤。案例6分離“圖書信息管理”數(shù)據(jù)庫?!盒≠N士』①如果要移動數(shù)據(jù)庫文件的位置,就要先分離該數(shù)據(jù)庫。比如把數(shù)據(jù)庫文件從D盤移動到E盤;在學(xué)生要向老師提交作業(yè)的時候,也要先分離數(shù)據(jù)庫,再提交。②分離數(shù)據(jù)庫只是從SQLServer系統(tǒng)中刪除該數(shù)據(jù)庫,而組成該數(shù)據(jù)庫的數(shù)據(jù)文件和日志文件仍然保存在原磁盤路徑上。如果想要再次使用該數(shù)據(jù)庫,只要進(jìn)行附加就可以了。案例7

附加“圖書信息管理”數(shù)據(jù)庫。第二十頁,共89頁?;顒?.1.3“圖書信息管理”數(shù)據(jù)庫的分離與附加【體驗活動】1.使用前面保存的“創(chuàng)建學(xué)生成績管理數(shù)據(jù)庫.sql”重新創(chuàng)建學(xué)生成績管理數(shù)據(jù)庫,然后使用對象資源管理器分離該數(shù)據(jù)庫。再把該數(shù)據(jù)庫從“D:\學(xué)生成績管理”文件夾移動到“E:\學(xué)生成績管理”文件夾中。2.把已移動到“E:\學(xué)生成績管理”文件夾中的學(xué)生成績管理數(shù)據(jù)庫附加到SQLServer系統(tǒng)中。第二十一頁,共89頁。任務(wù)2.2創(chuàng)建數(shù)據(jù)庫表創(chuàng)建數(shù)據(jù)庫表,并學(xué)習(xí)如何修改表結(jié)構(gòu)及刪除不再使用的表。任務(wù)說明學(xué)會使用對象資源管理器創(chuàng)建表。學(xué)會使用CREATETABLE語句創(chuàng)建表。學(xué)會使用對象資源管理器修改表結(jié)構(gòu)。學(xué)會使用ALTERTABLE語句修改表結(jié)構(gòu)。學(xué)會使用對象資源管理器和DROPTABLE語句兩種方法刪除表。任務(wù)目標(biāo)第二十二頁,共89頁。任務(wù)2.2創(chuàng)建數(shù)據(jù)庫表活動2.2.1創(chuàng)建“圖書信息”和“出版社”表活動2.2.2修改“圖書信息”和“出版社”表結(jié)構(gòu)活動2.2.3刪除“圖書信息”和“出版社”表第二十三頁,共89頁?;顒?.2.1創(chuàng)建“圖書信息”和“出版社”表表是SQLServer數(shù)據(jù)庫中最重要、最基本的數(shù)據(jù)庫對象,數(shù)據(jù)庫中的所有數(shù)據(jù)都存儲在表中。在SQLServer2008中創(chuàng)建表的方法主要有兩種,一是在對象資源管理器中通過方便的圖形化向?qū)?chuàng)建,二是通過編寫CREATETABLE語句創(chuàng)建。案例1使用對象資源管理器在“圖書信息管理”數(shù)據(jù)庫中創(chuàng)建“圖書信息”表,并輸入數(shù)據(jù)?!盒≠N士』在輸入數(shù)據(jù)的過程中,如果要取消正在輸入的數(shù)據(jù),可以直接按ESC鍵,或者在更改某個數(shù)據(jù)的過程中要取消更改,也可以直接按ESC鍵。第二十四頁,共89頁?;顒?.2.1創(chuàng)建“圖書信息”和“出版社”表案例2使用CREATETABLE語句在“圖書信息管理”數(shù)據(jù)庫中創(chuàng)建“出版社”表,表結(jié)構(gòu)如圖2.2.8所示,并輸入如圖2.2.9所示的數(shù)據(jù)。USE

圖書信息管理GOCREATE

TABLE

出版社(出版社號

INTIDENTITY(101,1)

NOT

NULL,出版社名

VARCHAR(50)

NOT

NULL,聯(lián)系電話

VARCHAR(13)

NULL,所在地

VARCHAR(10)

NULL)第二十五頁,共89頁?;顒?.2.1創(chuàng)建“圖書信息”和“出版社”表『小貼士』USE語句表示打開數(shù)據(jù)庫,本案例是打開“圖書信息管理”數(shù)據(jù)庫來創(chuàng)建表,即把創(chuàng)建的表保存到“圖書信息管理”數(shù)據(jù)庫中。GO表示一批T-SQL語句的結(jié)束。CREATETABLE語句里的NULL或者NOTNULL表示該列內(nèi)容是否允許為空?!俺霭嫔缣枴绷械臄?shù)據(jù)設(shè)置了標(biāo)識列,“IDENTITY(101,1)”表示標(biāo)識種子為101,標(biāo)識增量為1。在后面輸入記錄時該列的數(shù)據(jù)會由系統(tǒng)自動生成,不允許用戶進(jìn)行輸入及更改。使用CREATETABLE創(chuàng)建表后,對象資源管理器中的顯示可能沒有即時更新,可以右鍵單擊“數(shù)據(jù)庫”或“圖書信息管理”數(shù)據(jù)庫或“表”,選擇“刷新”命令即可。第二十六頁,共89頁?;顒?.2.1創(chuàng)建“圖書信息”和“出版社”表【技能拓展】

“圖書信息管理”數(shù)據(jù)庫中共有“圖書信息”、“出版社”和“圖書庫存”三張表,通過案例1和案例2已經(jīng)創(chuàng)建了“圖書信息”和“出版社”表,至于“圖書庫存”表的創(chuàng)建,方法可自選,既可以用對象資源管理器或CREATETABLE語句創(chuàng)建,也可以使用單元6任務(wù)6.2介紹的“數(shù)據(jù)的導(dǎo)入”的方法直接生成“圖書庫存”表?!皥D書庫存”表的表結(jié)構(gòu)如圖2.2.10所示,表記錄如圖2.2.11所示。注:“圖書序號”列為標(biāo)識列,標(biāo)識種子為1001,標(biāo)識增量為1,標(biāo)識列不能為空。標(biāo)識列的設(shè)置方法可以參考【知識寶庫】部分。注:如果要進(jìn)行數(shù)據(jù)導(dǎo)入的話,先不能建立標(biāo)識列,等數(shù)據(jù)導(dǎo)入后再建立標(biāo)識列。第二十七頁,共89頁?;顒?.2.1創(chuàng)建“圖書信息”和“出版社”表1.數(shù)據(jù)庫中的表表是存放數(shù)據(jù)庫中所有數(shù)據(jù)的數(shù)據(jù)庫對象。如同EXCEL電子表格,數(shù)據(jù)在表中是按行和列的格式進(jìn)行組織的,其中每行代表一條記錄,每列代表記錄中的域(也稱字段)。例如,在包含圖書信息的圖書信息表中每一行代表一本書,每一列分別表示這本書的某一方面的屬性,如圖書的“ISBN”、“書名”、“定價”、“類別”等。在一個數(shù)據(jù)庫中需要包含各個方面的數(shù)據(jù),如在圖書信息管理數(shù)據(jù)庫中,包含圖書信息、出版社信息和圖書庫存信息等。所以在設(shè)計數(shù)據(jù)庫時,就應(yīng)先確定需要什么樣的表,各表中都應(yīng)該包括哪些數(shù)據(jù)以及各個表之間的關(guān)系等,這個過程稱為設(shè)計表。在設(shè)計表時需要確定如下事項:(1)表的名稱;(2)表中每一列的名稱;(3)表中每一列的數(shù)據(jù)類型和長度;知識寶庫第二十八頁,共89頁?;顒?.2.1創(chuàng)建“圖書信息”和“出版社”表(4)表中的列是否允許空值、是否唯一、是否要進(jìn)行默認(rèn)設(shè)置或添加約束;(5)表中需要的索引的類型和需要建立索引的列;(6)表間的關(guān)系,即確定哪些列是主鍵,哪些列是外鍵。在創(chuàng)建數(shù)據(jù)表時通常要做兩項工作:建立表結(jié)構(gòu)和輸入記錄。建立表結(jié)構(gòu)包括定義表中各列的名稱、數(shù)據(jù)類型、長度和屬性等;輸入記錄是在表結(jié)構(gòu)的基礎(chǔ)上在對應(yīng)列輸入數(shù)據(jù)。知識寶庫第二十九頁,共89頁?;顒?.2.1創(chuàng)建“圖書信息”和“出版社”表2.SQLServer2008的數(shù)據(jù)類型在SQLServer2008中,每個列、局部變量、表達(dá)式和參數(shù)都有其各自的數(shù)據(jù)類型。指定對象的數(shù)據(jù)類型相當(dāng)于定義了該對象的以下4種屬性:①對象所含的數(shù)據(jù)類型,如字符、整數(shù)或二進(jìn)制數(shù)。②存儲值的長度或它的大小。③ 數(shù)字精度(僅用于數(shù)字?jǐn)?shù)據(jù)類型)。④ 小數(shù)位數(shù)(僅用于數(shù)字?jǐn)?shù)據(jù)類型)。在創(chuàng)建表時,必須為表中的每個列指派一種數(shù)據(jù)類型。下面僅對常用的數(shù)字、字符、日期時間等數(shù)據(jù)類型進(jìn)行介紹。知識寶庫第三十頁,共89頁?;顒?.2.1創(chuàng)建“圖書信息”和“出版社”表(1)精確數(shù)字類型使用數(shù)字?jǐn)?shù)據(jù)的數(shù)據(jù)類型稱為數(shù)字?jǐn)?shù)據(jù)類型,根據(jù)精度可以將數(shù)字?jǐn)?shù)據(jù)類型分為精確數(shù)字類型和近似數(shù)字類型。精確數(shù)字類型如下表所示。知識寶庫數(shù)據(jù)類型字節(jié)數(shù)描述bit1其值只能是0或1,這種數(shù)據(jù)類型用于存儲只有兩種可能值的數(shù)據(jù),如Yes或No、True或False、On或Offbigint8存儲從-263到263-1之間的整數(shù)int4存儲從-231到231-1之間的整數(shù)smallint2存儲從-32768到32767之間的整數(shù)tinyint1存儲從0到255之間的整數(shù)money8存儲從-9220億到9220億之間的數(shù)據(jù),精確到貨幣單位的萬分之一smallmoney4存儲從-214748.3648到214748.3647之間的數(shù)據(jù),精確到貨幣單位的萬分之一decimal5~17存儲從-1038-1到1038-1的固定精度和范圍的數(shù)值型數(shù)據(jù)。使用這種數(shù)據(jù)類型時,必須指定范圍和精度。范圍是小數(shù)點左右所能存儲的數(shù)字的總位數(shù)。精度是小數(shù)點右邊存儲的數(shù)字的位數(shù)numeric5~17numeric數(shù)據(jù)類型與decimal型相同第三十一頁,共89頁?;顒?.2.1創(chuàng)建“圖書信息”和“出版社”表(2)近似數(shù)字類型系統(tǒng)對數(shù)據(jù)類型定義精確到哪一位,這種數(shù)據(jù)類型稱為近似數(shù)字類型。SQLServer2008系統(tǒng)中提供了多種近似數(shù)字類型,如下表所示。知識寶庫數(shù)據(jù)類型字節(jié)數(shù)描述float4或8存儲從-1.79E+308到1.79E+308之間的任意數(shù),最大精度是15位real4存儲從-3.40E+38到3.40E+38之間的浮點數(shù),最大精度是7位第三十二頁,共89頁?;顒?.2.1創(chuàng)建“圖書信息”和“出版社”表(3)日期和時間數(shù)據(jù)類型在SQLServer2008中,日期和時間數(shù)據(jù)類型除了datetime和smalldatetime類型以外,還增加了date、time、datetime2和datetimeoffset類型,下面對于常用的datetime、smalldatetime、date和time進(jìn)行簡單介紹,如下表所示。知識寶庫第三十三頁,共89頁?;顒?.2.1創(chuàng)建“圖書信息”和“出版社”表(4)字符數(shù)據(jù)類型字符數(shù)據(jù)類型是SQLServer2008中最常用的數(shù)據(jù)類型之一,它可以分為UNICODE字符數(shù)據(jù)類型和非UNICODE字符數(shù)據(jù)類型,下面簡單介紹常用的非UNICODE字符數(shù)據(jù)類型,如下表所示。說明:在定義字符型常量為字符數(shù)據(jù)類型賦值或定義日期時間型常量為日期時間數(shù)據(jù)類型賦值時,必須使用單引號將字符型或日期時間型常量括起來。知識寶庫數(shù)據(jù)類型字節(jié)數(shù)描述char1~8000使用char數(shù)據(jù)類型存儲數(shù)據(jù)時,每個字符占用一個字節(jié)的存儲空間,最長可以容納8000個字符。使用它定義表中列的數(shù)據(jù)類型時,要給定數(shù)據(jù)的最大長度。如果實際數(shù)據(jù)的字符長度小于給定的最大長度時,則多余的字節(jié)會被空格填充;如果實際數(shù)據(jù)的字符長度大于給定的最大長度時,則超過的字符將會被截斷。varchar1~8000該數(shù)據(jù)類型的使用方式與char數(shù)據(jù)類型的使用方法基本相同。與char不同的是,varchar數(shù)據(jù)類型的存儲空間隨存儲在表列中的每一個數(shù)據(jù)的字符的不同能自動調(diào)整。Text1~231-1該數(shù)據(jù)類型主要用來存儲預(yù)計超過8000字符的變長字符數(shù)據(jù),最大長度可以達(dá)到231-1個字符。vartchar(MAX)1~231-1同上第三十四頁,共89頁?;顒?.2.1創(chuàng)建“圖書信息”和“出版社”表3.CREATETABLE語句格式CREATETABLE表名--用于設(shè)置表名

(列名數(shù)據(jù)類型[NOTNULL|NULL],列名數(shù)據(jù)類型[NOTNULL|NULL],……列名數(shù)據(jù)類型[NOTNULL|NULL])①方括號([])中的內(nèi)容可以省略的選項或參數(shù),豎線(|)表示如果要輸入括號里的內(nèi)容,則只能選其中一個。②NOTNULL|NULL用來指定此列是否為空,如果省略,則默認(rèn)為NULL,即可以為空。③使用CREATETABLE語句創(chuàng)建表時,各個列之間要用逗號(,)隔開,否則會出錯。知識寶庫第三十五頁,共89頁?;顒?.2.1創(chuàng)建“圖書信息”和“出版社”表4.標(biāo)識列⑴SQLServer中的標(biāo)識列,又稱標(biāo)識字段或自增列(自動編號列)。這種字段具有以下三個特點:①列的數(shù)據(jù)類型為不帶小數(shù)的數(shù)值類型,如:decimal、int、numeric、smallint、bigint、tinyint。其中要注意的是,當(dāng)選擇decimal和numeric時,小數(shù)位數(shù)必須為零。若使用tinyint型數(shù)據(jù),則只能向表中添加255條記錄。②在進(jìn)行插入數(shù)據(jù)的操作時,該列的值是由系統(tǒng)按設(shè)定的規(guī)律生成,不允許空值;③列值不重復(fù),具有標(biāo)識表中每一行的作用,每個表只能有一個標(biāo)識列。⑵創(chuàng)建一個標(biāo)識列,通常要指定以下三個內(nèi)容:①標(biāo)識列類型必須是數(shù)值類型。②標(biāo)識種子是指派給表中第一行的值,默認(rèn)為1。③標(biāo)識增量是相鄰兩個標(biāo)識值之間的增量,默認(rèn)為1。知識寶庫第三十六頁,共89頁?;顒?.2.1創(chuàng)建“圖書信息”和“出版社”表⑶設(shè)置標(biāo)識列有兩種方法:

方法一:在表設(shè)計器中定義標(biāo)識列 方法二:使用IDENTITY來定義標(biāo)識列如果是在創(chuàng)建表時定義標(biāo)識列,語句格式如下:CREATETABLE表名(列名數(shù)據(jù)類型IDENTITY(標(biāo)識種子,標(biāo)識增量),列名……--定義其他列)如果是對已經(jīng)創(chuàng)建好的表添加一個新列作為標(biāo)識列,則語句格式如下:ALTERTABLE表名ADD新列名數(shù)據(jù)類型IDENTITY(標(biāo)識種子,標(biāo)識增量)知識寶庫第三十七頁,共89頁?;顒?.2.1創(chuàng)建“圖書信息”和“出版社”表【體驗活動】1.使用對象資源管理器,在“學(xué)生成績管理”數(shù)據(jù)庫中創(chuàng)建“學(xué)生信息”表,表結(jié)構(gòu)如圖2.2.13所示,并輸入如圖2.2.14所示的數(shù)據(jù)。第三十八頁,共89頁?;顒?.2.1創(chuàng)建“圖書信息”和“出版社”表2.使用CREATETABLE語句,在“學(xué)生成績管理”數(shù)據(jù)庫中創(chuàng)建“課程信息”表,表結(jié)構(gòu)如圖2.2.15所示,并輸入如圖2.2.16所示的數(shù)據(jù)。注:“課程號”列為標(biāo)識列,標(biāo)識種子為101,標(biāo)識增量為1.3.使用CREATETABLE語句,在“學(xué)生成績管理”數(shù)據(jù)庫中創(chuàng)建“學(xué)生成績”表,表結(jié)構(gòu)如圖2.2.17所示,并輸入如圖2.2.18所示的數(shù)據(jù)。第三十九頁,共89頁?;顒?.2.2修改“圖書信息”和“出版社”表結(jié)構(gòu)案例3使用對象資源管理器修改“圖書信息管理”數(shù)據(jù)庫中的“圖書信息”表,要求如下:(1)添加一個“備注”列,該列的數(shù)據(jù)類型為char(5)。(2)把“備注”列的數(shù)據(jù)類型更改為varchar(MAX)。(3)刪除“備注”列。案例4使用ALTERTABLE語句修改“圖書信息管理”數(shù)據(jù)庫中的“出版社”表,要求如下:(1)添加一個“Email”列,該列的數(shù)據(jù)類型為char(30)。(2)把“Email”列的數(shù)據(jù)類型更改為varchar(50)。(3)刪除“Email”列?!盒≠N士』如果表中已經(jīng)存在數(shù)據(jù),在修改列的數(shù)據(jù)類型以及字符串類型的長度時不能與已有的數(shù)據(jù)產(chǎn)生矛盾。在修改char和varchar類型的列長度時,每個數(shù)字或英文字母占一個字節(jié),一個漢字占兩個字節(jié)。第四十頁,共89頁?;顒?.2.2修改“圖書信息”和“出版社”表結(jié)構(gòu)ALTERTABLE語句用于更改表的結(jié)構(gòu),通過在該語句中使用各種子句可以添加、修改、刪除列和約束。下面我們來簡單介紹通過ALTERTABLE語句添加、修改和刪除列的方法。1.用ADD子句添加列的語句格式:ALTERTABLE表名ADD列名數(shù)據(jù)類型[NOTNULL|NULL][,列名數(shù)據(jù)類型[NOTNULL|NULL],……}一次可以添加一個或多個列,如果有多個列,則列之間用逗號(,)隔開。2.用ALTERCOLUMN子句修改列的語句格式:ALTERTABLE表名ALTERCOLUMN列名新數(shù)據(jù)類型[NOTNULL|NULL]知識寶庫第四十一頁,共89頁?;顒?.2.2修改“圖書信息”和“出版社”表結(jié)構(gòu)3.用DROPCOLUMN子句刪除列的語句格式:ALTERTABLE表名DROPCOLUMN列名[,列名,……]一次可以刪除一個或多個列,如果有多個列,則列之間用逗號(,)隔開。知識寶庫第四十二頁,共89頁。活動2.2.2修改“圖書信息”和“出版社”表結(jié)構(gòu)【體驗活動】1.使用對象資源管理器修改“學(xué)生成績管理”數(shù)據(jù)庫中的“學(xué)生信息”表,要求如下:⑴添加一個“家庭地址”列,該列的數(shù)據(jù)類型為char(30)。⑵把“家庭地址”列的數(shù)據(jù)類型更改為varchar(50)。⑶刪除“家庭地址”列。2.使用ALTERTABLE語句修改“學(xué)生成績管理”數(shù)據(jù)庫中的“課程信息”表,要求如下:⑴添加一個“備注”列,該列的數(shù)據(jù)類型為varchar(30)。⑵把“備注”列的數(shù)據(jù)類型更改為char(20)。⑶刪除“備注”列。第四十三頁,共89頁?;顒?.2.3刪除“圖書信息”和“出版社”表刪除表的操作與刪除數(shù)據(jù)庫的操作相似,只需指定要刪除的表名即可。本活動將介紹兩種刪除表的方法,一是通過對象資源管理器來刪除表,二是通過DROPTABLE語句刪除表。案例5

使用對象資源管理器刪除“圖書信息管理”數(shù)據(jù)庫中的“圖書信息”表?!盒≠N士』①在圖2.2.22中,可以看到右鍵單擊“圖書信息”表后彈出的快捷菜單中有“重命名”命令,選擇該項可以更改表名。②刪除“圖書信息”表之后,該表在當(dāng)前數(shù)據(jù)庫中不再存在,如果該表中有數(shù)據(jù),自然也隨之被刪除,所以刪除操作一定要小心謹(jǐn)慎。(本案例要刪除的“圖書信息”表及案例6要刪除的“出版社”表在后面的案例中都要用到,可以另外新建表來練習(xí)刪除操作)第四十四頁,共89頁?;顒?.2.3刪除“圖書信息”和“出版社”表案例6

使用DROPTABLE語句,在“圖書信息管理”數(shù)據(jù)庫中刪除“出版社”表?!敬a如下】USE

圖書信息管理GODROP

TABLE

出版社『提示』① 使用DROPTABLE命令刪除表時不會出現(xiàn)確認(rèn)信息,所以使用這種方法時一定要慎重。②使用DROPTABLE命令刪除表時,所在數(shù)據(jù)庫中必須存在要刪除的表,否則會出現(xiàn)錯誤提示。第四十五頁,共89頁?;顒?.2.3刪除“圖書信息”和“出版社”表【體驗活動】1.使用對象資源管理器,在“學(xué)生成績管理”數(shù)據(jù)庫中刪除“課程信息”表。2.使用DROPTABLE語句,在“學(xué)生成績管理”數(shù)據(jù)庫中刪除“學(xué)生成績”表。第四十六頁,共89頁。任務(wù)2.3設(shè)置表約束約束是指派給表列的屬性,用于防止將某些類型的無效數(shù)據(jù)值放置在該列中。例如,設(shè)置UNIQUE或PRIMARYKEY約束防止插入重復(fù)的值,設(shè)置CHECK約束防止插入與設(shè)置的條件不匹配的值,而設(shè)置NOTNULL約束防止插入NULL值。本任務(wù)學(xué)習(xí)對數(shù)據(jù)庫中各表設(shè)置約束。任務(wù)說明學(xué)會使用對象資源管理器給數(shù)據(jù)庫表設(shè)置約束。學(xué)會使用ALTERTABLE語句給數(shù)據(jù)庫表設(shè)置約束。了解表數(shù)據(jù)的完整性概念。任務(wù)目標(biāo)第四十七頁,共89頁。任務(wù)2.3設(shè)置表約束活動2.3.1設(shè)置NOTNULL約束活動2.3.2設(shè)置DEFAULT約束活動2.3.3設(shè)置CHECK約束活動2.3.4設(shè)置PRIMARYKEY約束活動2.3.5設(shè)置UNIQUE約束活動2.3.6設(shè)置FOREIGNKEY約束第四十八頁,共89頁?;顒?.3.1設(shè)置NOTNULL約束NOTNULL約束可以防止在列中插入NULL(空)值,如果必須在某列中輸入數(shù)據(jù),則應(yīng)當(dāng)給該列設(shè)置NOTNULL約束。案例1使用對象資源管理器給“圖書信息管理”數(shù)據(jù)庫中“圖書信息”表的“ISBN”列設(shè)置NOTNULL約束,使該列輸入的數(shù)據(jù)不能為空?!盒≠N士』①NOTNULL約束用來控制是否允許該字段的值為NULL,NULL值不是0也不是空白,而是表示“不確定”或“沒有數(shù)據(jù)”的意思。②如果必須在某列中輸入數(shù)據(jù),則應(yīng)當(dāng)對它設(shè)置NOTNULL約束。如對主鍵列,標(biāo)識列等就必須設(shè)置NOTNULL約束。第四十九頁,共89頁?;顒?.3.1設(shè)置NOTNULL約束案例2

使用ALTERTABLE語句給“圖書信息管理”數(shù)據(jù)庫中“出版社”表的“出版社名”列設(shè)置NOTNULL約束,使該列輸入的數(shù)據(jù)不能為空。【代碼如下】USE

圖書信息管理GOALTER

TABLE

出版社ALTER

COLUMN

出版社名

VARCHAR(50)

NOT

NULL

『提示』

設(shè)置NOTNULL約束與修改列的語法是一樣的。如果要使用ALTERTABLE語句來刪除NOTNULL約束(即設(shè)置成NULL約束),其代碼與設(shè)置NOTNULL約束基本一樣,只是把最后的NOTNULL改為NULL。第五十頁,共89頁?;顒?.3.1設(shè)置NOTNULL約束1、數(shù)據(jù)完整性概述數(shù)據(jù)庫是一種共享資源,在數(shù)據(jù)庫的使用過程中保證數(shù)據(jù)的安全、可靠、正確是非常重要的。數(shù)據(jù)完整性是指數(shù)據(jù)的準(zhǔn)確性和一致性。它是防止數(shù)據(jù)庫中存在不符合語義規(guī)定的數(shù)據(jù)和防止因錯誤信息的輸入/輸出而造成無效操作而提出的。數(shù)據(jù)庫完整性包括實體完整性、域完整性、參照完整性和用戶定義完整性。2、約束約束是SQLServer提供的自動強制數(shù)據(jù)完整性的一種方法。它通過定義列的取值規(guī)則來維護(hù)數(shù)據(jù)的完整性。約束主要有:NOTNULL約束、DEFAULT約束、CHECK約束、PRIMARYKEY約束、UNIQUE約束、FOREIGNKEY約束。下面對各約束進(jìn)行簡單介紹。知識寶庫第五十一頁,共89頁?;顒?.3.1設(shè)置NOTNULL約束(1)NOTNULL約束又稱非空約束,用來控制是否允許該列的值為空值(即NULL值)。NULL值即不是0也不是空白,而是表示“不確定”或“沒有數(shù)據(jù)”的意思。當(dāng)某一列的值一定要輸入數(shù)據(jù)才有意義的時候,就可以為該列設(shè)置NOTNULL約束,如主鍵列必須不允許出現(xiàn)空值,否則就失去了唯一標(biāo)識一條記錄的作用。(2)DEFAULT約束又稱默認(rèn)約束,是指在插入操作中如果沒有提供輸入值時,系統(tǒng)根據(jù)所設(shè)置的DEFAULT約束自動指定值。DEFAULT約束可以包括常量、函數(shù)、空值等,使用默認(rèn)值可以提高數(shù)據(jù)輸入的速度。定義DEFAULT約束時應(yīng)注意以下幾點:①一列只能定義一個DEFAULT約束。② 如果定義的默認(rèn)值長度大于該列的最大長度,則輸入到表中的默認(rèn)值將被截斷。③ DEFAULT約束不能定義在帶有INDENTITY屬性列(即標(biāo)識列)中。知識寶庫第五十二頁,共89頁?;顒?.3.1設(shè)置NOTNULL約束(3)CHECK約束又稱檢查約束,對輸入列或者整個表中的值設(shè)置檢查條件,以限制輸入值,保證數(shù)據(jù)庫數(shù)據(jù)的完整性。如果輸入值不符合檢查條件,系統(tǒng)將拒絕這條記錄的插入或修改。定義CHECK約束時應(yīng)注意以下幾點:①一個列可以有任意多個CHECK約束,并且約束條件中可以包含AND和OR組合起來的多個邏輯表達(dá)式。②CHECK約束中設(shè)置的條件必須為布爾表達(dá)式,并且不能引用其他表。③執(zhí)行INSERT語句或者UPDATE語句時,檢查約束將驗證數(shù)據(jù)。知識寶庫第五十三頁,共89頁。活動2.3.1設(shè)置NOTNULL約束(4)PRIMARYKEY約束也稱主鍵約束,在創(chuàng)建表時通過關(guān)鍵字定義約束。如果某個列或列組合被定義成主鍵,那么該列或列組合的值就唯一標(biāo)識一條記錄。主鍵有以下特征:①一個表只能定義一個PRIMARYKEY約束。②定義了PRIMARYKEY約束的字段的值不能重復(fù)。③創(chuàng)建PRIMARYKEY約束時,SQLServer會自動創(chuàng)建一個唯一的聚集索引。④Image和Text數(shù)據(jù)類型的列不能定義為主鍵。知識寶庫第五十四頁,共89頁?;顒?.3.1設(shè)置NOTNULL約束(5)UNIQUE約束又稱為唯一性約束,跟PRIMARYKEY約束一樣,定義為UNIQUE約束的列或列組合的值不能重復(fù)。對于使用了PRIMARYKEY約束的表,如果還有其他的列也需要設(shè)置數(shù)據(jù)具有唯一性,那就可以使用UNIQUE約束,其特征如下:①UNIQUE約束主要用于非主鍵的列或列組合。②一個表可以有多個UNIQUE約束。③一個表中被定義為UNIQUE約束的列,最多只能有一個NULL值。知識寶庫第五十五頁,共89頁?;顒?.3.1設(shè)置NOTNULL約束(6)FOREIGNKEY約束又稱為外鍵約束,用于保證數(shù)據(jù)庫各個表中數(shù)據(jù)的一致性和正確性。將一個表的一列(或列組合)定義為引用其他表的主鍵或唯一約束列,則引用表中的這個列(或列組合)就稱為外鍵。被引用的表稱為主鍵表;引用表稱為外鍵表。定義FOREIGNKEY約束時要注意以下幾點:①主鍵和外鍵的數(shù)據(jù)類型必須完全匹配。②一個表中最多可以定義31個FOREIGNKEY約束。③FOREIGNKEY約束不會自動創(chuàng)建索引。知識寶庫第五十六頁,共89頁?;顒?.3.1設(shè)置NOTNULL約束【體驗活動】1.使用對象資源管理器給“學(xué)生成績管理”數(shù)據(jù)庫中“學(xué)生信息”表的“學(xué)號”和“姓名”列設(shè)置NOTNULL約束,使這兩列輸入的數(shù)據(jù)都不能為空。2.使用ALTERTABLE語句給“學(xué)生成績管理”數(shù)據(jù)庫中“學(xué)生成績”表的“學(xué)號”和“課程號”兩列設(shè)置NOTNULL約束,使這兩列輸入的數(shù)據(jù)都不能為空。第五十七頁,共89頁?;顒?.3.2設(shè)置DEFAULT約束DEFAULT約束用于指定一個列的默認(rèn)值,當(dāng)給列定義了DEFAULT約束后,在表中插入一條記錄時,如果沒有為該列指定值,則SQLServer會自動為該列填入默認(rèn)值。

案例3使用對象資源管理器給“圖書信息管理”數(shù)據(jù)庫中“圖書信息”表的“類別”列設(shè)置DEFAULT約束,默認(rèn)值為“工業(yè)技術(shù)”?!禾崾尽?/p>

如果要使用對象資源管理器刪除DEFAULT約束,則在表設(shè)計器窗口中選擇對應(yīng)字段,在下方列屬性的“默認(rèn)值或綁定”項中,將對應(yīng)的內(nèi)容刪除即可。

『小貼士』DEFAULT約束可以是數(shù)值、字符串,也可以是函數(shù)。在輸入字符串時,單引號可以自己輸入,也可以不輸入,系統(tǒng)會自動添加。如果輸入的是數(shù)值或者函數(shù),則不用單引號。最常用的函數(shù)默認(rèn)值是getdate(),它的值是指系統(tǒng)當(dāng)前日期和時間。第五十八頁,共89頁?;顒?.3.2設(shè)置DEFAULT約束【技能拓展】使用對象資源管理器給“圖書信息管理”數(shù)據(jù)庫中“圖書庫存”表的“入庫日期”列設(shè)置DEFAULT約束,默認(rèn)值為當(dāng)前系統(tǒng)日期。案例4使用ALTERTABLE語句給“圖書信息管理”數(shù)據(jù)庫中“圖書庫存”表的“圖書狀態(tài)”列設(shè)置DEFAULT約束,默認(rèn)值為“在藏”,約束名稱為“DF_圖書狀態(tài)”【代碼如下】USE

圖書信息管理GOALTER

TABLE

圖書庫存ADD

CONSTRAINT

DF_圖書狀態(tài)

DEFAULT

'在藏'

FOR

圖書狀態(tài)第五十九頁,共89頁?;顒?.3.2設(shè)置DEFAULT約束『小貼士』①使用ALTERTABLE語句給表添加約束時,如果不需要指定約束名稱,則可以省略CONSTRAINT關(guān)鍵字及后面的約束名稱。如在案例4中,如果不需要指定約束名稱,可以把代碼改寫如下:USE

圖書信息管理GOALTER

TABLE

圖書庫存ADD

DEFAULT

'在藏'

FOR

圖書狀態(tài)對于后面要講的CHECK約束、PRIMARYKEY約束、UNIQUE約束、FOREIGNKEY約束如果不需要指定約束名稱,則同樣可以省略CONSTRAINT關(guān)鍵字及后面的約束名稱。

②使用ALTERTABLE語句刪除DEFAULT約束、CHECK約束、PRIMARYKEY約束、UNIQUE約束、FOREIGNKEY約束的語句格式如下:ALTER

TABLE

表名DROP

CONSTRAINT

約束名第六十頁,共89頁?;顒?.3.2設(shè)置DEFAULT約束【技能拓展】使用ALTERTABLE語句給“圖書信息管理”數(shù)據(jù)庫中“圖書信息”表的“數(shù)量”列設(shè)置DEFAULT約束,默認(rèn)值為“2”,然后再使用ALTERTABLE語句,刪除該列的DEFAULT約束。

【體驗活動】1.使用對象資源管理器分別給“學(xué)生成績管理”數(shù)據(jù)庫中“學(xué)生信息”表的“性別”和“是否內(nèi)宿”列設(shè)置DEFAULT約束,“性別”列的默認(rèn)值為“男”,“是否內(nèi)宿”列的默認(rèn)值為“是”。2.使用ALTERTABLE語句給“學(xué)生成績管理”數(shù)據(jù)庫中“課程信息”表的“課時數(shù)”列設(shè)置DEFAULT約束,默認(rèn)值為80。第六十一頁,共89頁?;顒?.3.3設(shè)置CHECK約束CHECK約束又稱為檢查約束,用于檢查輸入的數(shù)據(jù)是否正確,只有符合CHECK約束條件的數(shù)據(jù)才能輸入。案例5使用對象資源管理器給“圖書信息管理”數(shù)據(jù)庫中“圖書信息”表的“定價”列設(shè)置CHECK約束,要求“定價”必須大于或者等于0?!盒≠N士』①在單擊“添加”按鈕時,系統(tǒng)會自動給該約束添加一個名稱,可以在名稱對應(yīng)的文本框中更改約束的名稱。②在一個表中可以創(chuàng)建多個CHECK約束,在一列上也可以創(chuàng)建多個CHECK約束,只要它們不相互矛盾。

『提示』

如果要使用對象資源管理器刪除CHECK約束,則要先打開“CHECK約束”對話框,在左邊“選定的CHECK約束”列表框中選擇要刪除的約束名稱,然后單擊“刪除”按鈕,即可把對應(yīng)的約束刪除,再單擊“關(guān)閉”按鈕進(jìn)行關(guān)閉,最后保存。第六十二頁,共89頁?;顒?.3.3設(shè)置CHECK約束

案例6使用ALTERTABLE語句給“圖書信息管理”數(shù)據(jù)庫中“圖書庫存”表的“圖書狀態(tài)”列設(shè)置CHECK約束,要求只能輸入“在藏”或者“借出”,約束名稱為“CK_圖書狀態(tài)”【代碼如下】USE

圖書信息管理GOALTER

TABLE

圖書庫存ADD

CONSTRAINT

CK_圖書狀態(tài)

CHECK(圖書狀態(tài)='在藏'

OR

圖書狀態(tài)='借出')第六十三頁,共89頁?;顒?.3.3設(shè)置CHECK約束【體驗活動】1.使用對象資源管理器給“學(xué)生成績管理”數(shù)據(jù)庫中“學(xué)生成績”表的“成績”列添加CHECK約束,要求成績必須在0~100之間的數(shù)值。

2.使用ALTERTABLE語句給“學(xué)生成績管理”數(shù)據(jù)庫中“學(xué)生信息”表的“性別”和“是否內(nèi)宿”兩列設(shè)置CHECK約束,要求“性別”列只能輸入“男”或者“女”,“是否內(nèi)宿”列只能輸入“是”或者“否”,約束名稱分別為“CK_性別”和“CK_是否內(nèi)宿”。第六十四頁,共89頁?;顒?.3.4設(shè)置PRIMARYKEY約束

PRIMARYKEY約束又稱為主鍵約束,用于指定一列或列組合中的數(shù)據(jù)值具有唯一性,即不存在相同的數(shù)據(jù)值,并且指定PRIMARYKEY約束的列不允許為空。設(shè)置了PRIMARYKEY約束的列稱為主鍵列。

案例7使用對象資源管理器給“圖書信息管理”數(shù)據(jù)庫中“圖書信息”表的“ISBN”列設(shè)置PRIMARYKEY約束。『小貼士』①PRIMARYKEY約束又稱為主鍵約束,即可以為一個列設(shè)置主鍵約束,也可以為多個列的組合設(shè)置上一個主鍵約束。②在一個表中只能定義一個PRIMARYKEY約束,并且PRIMARYKEY約束的列不能輸入空值?!禾崾尽?/p>

如果要使用對象資源管理器刪除PRIMARYKEY約束,則右鍵單擊已經(jīng)設(shè)置了PRIMARYKEY約束的列,選擇“刪除主鍵”命令,或者選中要刪除PRIMARYKEY約束的列,單擊表設(shè)計器工具欄上的設(shè)置主鍵按鈕

。第六十五頁,共89頁?;顒?.3.4設(shè)置PRIMARYKEY約束案例8使用ALTERTABLE語句給“圖書信息管理”數(shù)據(jù)庫中“出版社”表的“出版社號”列設(shè)置PRIMARYKEY約束,約束名稱為“PK_出版社號”【代碼如下】USE

圖書信息管理GOALTER

TABLE

出版社ADD

CONSTRAINT

PK_出版社號

PRIMARY

KEY(出版社號)『小貼士』如果向一個沒有指定PRIMARYKEY約束的表中添加PRIMARYKEY約束,那么指定為PRIMARYKEY的一個列或多個列的組合中的所有列都必須已經(jīng)指定NOTNULL約束,否則無法將該列或多列的組合指定為PRIMARYKEY約束。

『提示』一般情況下,每一張表都需要一個PRIMARYKEY約束來唯一標(biāo)識每一條記錄,在案例7和案例8中已經(jīng)分別對“圖書信息管理”數(shù)據(jù)庫中“圖書信息”和“出版社”兩個表設(shè)置了PRIMARYKEY約束,大家可以使用自己喜歡的方式給“圖書庫存”表的“圖書序號”列設(shè)置PRIMARYKEY約束。第六十六頁,共89頁?;顒?.3.4設(shè)置PRIMARYKEY約束【體驗活動】1.使用對象資源管理器給“學(xué)生成績管理”數(shù)據(jù)庫中“學(xué)生成績”表的“學(xué)號”和“課程號”列設(shè)置PRIMARYKEY約束。2.使用ALTERTABLE語句給“學(xué)生成績管理”數(shù)據(jù)庫中“學(xué)生信息”表的“學(xué)號”列設(shè)置PRIMARYKEY約束。3.使用ALTERTABLE語句給“學(xué)生成績管理”數(shù)據(jù)庫中“課程信息”表的“課程號”列設(shè)置PRIMARYKEY約束。第六十七頁,共89頁?;顒?.3.5設(shè)置UNIQUE約束UNIQUE約束又稱為唯一性約束,使用UNIQUE約束可以確保在非主鍵列中不輸入重復(fù)的值,UNIQUE約束和PRIMARY約束都強制唯一性,它們之間的區(qū)別如下:第一,在一個表中可以定義多個UNIQUE約束,但是只能定義一個PRIMARYKEY約束。第二,定義為UNIQUE約束的列上允許有空值,但是PRIMARYKEY約束的列上不允許有空值。

案例9使用對象資源管理器給“圖書信息管理”數(shù)據(jù)庫中“出版社”表的“出版社名”列設(shè)置UNIQUE約束,約束名稱為“UK_出版社名”。第六十八頁,共89頁?;顒?.3.5設(shè)置UNIQUE約束案例10使用ALTERTABLE語句給“圖書信息管理”數(shù)據(jù)庫中“出版社”表的“聯(lián)系電話”列設(shè)置UNIQUE約束,約束名稱為“UK_聯(lián)系電話”?!敬a如下】USE

圖書信息管理GOALTER

TABLE

出版社ADD

CONSTRAINT

UK_聯(lián)系電話

UNIQUE(聯(lián)系電話)『小貼士』在同一個數(shù)據(jù)庫中,對象(如表、約束、視圖、默認(rèn)值和規(guī)則等)不能存在相同的名稱。但在不同的數(shù)據(jù)庫中,可以有相同的名稱。第六十九頁,共89頁?;顒?.3.5設(shè)置UNIQUE約束【體驗活動】1.使用對象資源管理器給“學(xué)生成績管理”數(shù)據(jù)庫中“學(xué)生信息”表的“聯(lián)系電話”列設(shè)置UNIQUE約束,約束名稱為“UK_聯(lián)系電話”。2.使用ALTERTABLE語句給“學(xué)生成績管理”數(shù)據(jù)庫中“學(xué)生信息”表的“QQ號”列設(shè)置UNIQUE約束,約束名稱為“UK_QQ號”。

第七十頁,共89頁?;顒?.3.6設(shè)置FOREIGNKEY約束FOREIGNKEY約束又稱為外鍵約束,用于保證數(shù)據(jù)庫各個表中數(shù)據(jù)的一致性和正確性。將一個表的一列(或列組合)定義為引用其他表的主鍵或唯一約束列,則引用表中的這個列(或列組合)就稱為外鍵。被引用的表稱為主鍵表,引用表稱為外鍵表。

案例11使用對象資源管理器給“圖書信息管理”數(shù)據(jù)庫中“圖書信息”表的“出版社號”列設(shè)置FOREIGNKEY約束,要求該列的值必須參照“出版社”表的“出版社號”列的值?!盒≠N士』①FOREIGNKEY約束,又稱為外鍵約束。在如圖2.3.12所示的“表和列”對話框中,最上方的關(guān)系名對應(yīng)的文本框中,可以更改關(guān)系的名稱。②設(shè)置FOREIGNKEY約束時,兩個表中作為關(guān)聯(lián)的兩列的數(shù)據(jù)類型必須嚴(yán)格匹配。作為關(guān)聯(lián)的兩列,名稱不一定要相同,但為了便于識別,一般都用相同的名稱。③如果要使用對象資源管理器刪除FOREIGNKEY約束,則要先打開如圖2.3.11所示的“外鍵關(guān)系”對話框,選中要刪除的約束名稱,單擊“刪除”按鈕即可,然后單擊“關(guān)閉”按鈕,最后保存。第七十一頁,共89頁?;顒?.3.6設(shè)置FOREIGNKEY約束案例12使用ALTERTABLE語句給“圖書信息管理”數(shù)據(jù)庫中“圖書庫存”表的“ISBN”列設(shè)置FOREIGNKEY約束,要求該列的值必須參照“圖書信息”表的“ISBN”列的值,約束名為“FK_ISBN”?!敬a如下】USE

圖書信息管理GOALTER

TABLE

圖書庫存ADD

CONSTRAINT

FK_ISBN

FOREIGN

KEY(ISBN)

REFERENCES

圖書信息(ISBN)案例13通過關(guān)系圖給“圖書信息管理”數(shù)據(jù)庫中“圖書信息”表和“圖書庫存”表設(shè)置FOREIGNKEY約束?!盒≠N士』如果沒有先刪除前面創(chuàng)建的“圖書信息”表和“圖書庫存”表的FOREIGNKEY約束,則在添加完三個表后,關(guān)系設(shè)計器窗口的三個表就會自動添加上彼此之間的關(guān)系,因為設(shè)置FOREIGNKEY約束就是在設(shè)置表與表之間的關(guān)系。第七十二頁,共89頁。活動2.3.6設(shè)置FOREIGNKEY約束【體驗活動】1.使用對象資源管理器給“學(xué)生成績管理”數(shù)據(jù)庫中“學(xué)生成績”表的“學(xué)號”列設(shè)置FOREIGNKEY約束,要求該列的值必須參照“學(xué)生信息”表的“學(xué)號”列的值。

2.使用ALTERTABLE語句給“學(xué)生成績管理”數(shù)據(jù)庫中“學(xué)生成績”表的“課程號”列設(shè)置FOREIGNKEY約束,要求該列的值必須參照“課程信息”表的“課程號”列的值,約束名為FK_課程號。

3.在“學(xué)生成績管理”數(shù)據(jù)庫中,先刪除“學(xué)生成績”表中關(guān)于“學(xué)號”和“課程號”列的FOREIGNKEY約束,然后再通過關(guān)系圖給“學(xué)生成績”表的“學(xué)號”列和“課程號”列設(shè)置FOREIGNKEY約束,要求“學(xué)號”列必須參照“學(xué)生信息”表的“學(xué)號”列,“課程號”列必須參照“課程信息”表的“課程號”列,最后保存該關(guān)系圖。

第七十三頁,共89頁。活動2.3.6設(shè)置FOREIGNKEY約束【知識拓展】下面的例子就是在用CREATETAB使用CREATETABLE語句創(chuàng)建“圖書信息1”表,表結(jié)構(gòu)如圖2.2.2所示,要求給“ISBN”列添加NOTNULL約束,給“書名”列添加UNIQUE約束,給“定價”列添加CHECK約束要求“定價”要大于或者等于0,給類別列添加DEFAULT約束默認(rèn)值為“工業(yè)技術(shù)”,給“出版社號”列添加FOREIGNKEY約束,要求該列的值必須參照“出版社”表的“出版社號”列?!敬a如下】USE

圖書信息管理GOCREATE

TABLE

圖書信息1(ISBN

CHAR(17)

NOT

NULL

PRIMARY

KEY,書名

VARCHAR(50)

NULLUNIQUE,定價

MONEY

CHECK(定價>0)

,類別

VARCHAR(10)

NULL

DEFAULT

'工業(yè)技術(shù)',出版社號

INT

NULL

REFERENCES

出版社(出版社號),出版日期

DATE

NULL,數(shù)量

TINYINT

NULL)第七十四頁,共89頁。任務(wù)2.4表數(shù)據(jù)的操作完成對數(shù)據(jù)庫中各表插入、更新及刪除表數(shù)據(jù)。任務(wù)說明學(xué)會使用對象資源管理器給數(shù)據(jù)庫各表插入、更新及刪除表數(shù)據(jù)。學(xué)會使用INSERT、UPDATE和DELETE語句給數(shù)據(jù)庫各表插入、更新及刪除表數(shù)據(jù)。任務(wù)目標(biāo)第七十五頁,共89頁。任務(wù)2.4表數(shù)據(jù)的操作活動2.4.1插入表數(shù)據(jù)活動2.4.2更新表數(shù)據(jù)活動2.4.3刪除表數(shù)據(jù)第七十六頁,共89頁?;顒?.4.1插入表數(shù)據(jù)

在SQLServer2008中給數(shù)據(jù)庫中的表插入數(shù)據(jù)時,既可以通過對象資源管理器操作,也可以通過INSERT語句實現(xiàn)。

案例1

使用對象資源管理器給“圖書信息管理”數(shù)據(jù)庫中“出版社”表插入一條新記錄,“出版社名”為“人民郵電出版社”,“聯(lián)系電話”為“”,所在地為“上海市”,因為“出版社號”為標(biāo)識列,它的數(shù)據(jù)會自動生成,所以不需要進(jìn)行添加,如圖2.4.1所示?!盒≠N士』①“出版社”表的“出版社號”列的數(shù)據(jù)設(shè)置了標(biāo)識列,所以該列的數(shù)據(jù)系統(tǒng)會自動生成,不允許用戶進(jìn)行輸入及更改。②給“圖書信息管理”數(shù)據(jù)庫中各表添加數(shù)據(jù)時,必須注意順序,應(yīng)該先向“出版社”表添加數(shù)據(jù),再向“圖書信息”表添加數(shù)據(jù),最后才向“圖書庫存”表添加數(shù)據(jù),因為在任務(wù)2.3中,我們對該數(shù)據(jù)庫中各表設(shè)置了FOREIGNKEY約束,強調(diào)了它們之間的關(guān)系。③如果編輯的數(shù)據(jù)超過“200行”,要編輯更多的數(shù)據(jù),可以單擊菜單欄的“工具→選項”命令,彈出如圖2.4.2所示的“選項”對話框。在“選項”對話框中,選擇“SQLServer對象資源管理器→命令”選項,可以根據(jù)需要更改右側(cè)“編輯前<n>行”命令的值對應(yīng)項的值,也可以更改右側(cè)“選擇前<n>行”命令的值對應(yīng)項的值。第七十七頁,共89頁?;顒?.4.1插入表數(shù)據(jù)案例2

使用INSERT語句向“圖書信息管理”數(shù)據(jù)庫中“圖書信息”表插入一條新記錄,“ISBN”為“978-7-5647-1103-0”,“書名”為“雪蓮花開”,“定價”為“59.8”,“類別”為“文學(xué)”,“出版社號”為“103”,“出版日期”為“2012-1-1”,“數(shù)量”為“3”,如圖2.4.3所示?!敬a如下】USE

圖書信息管理GOINSERT

INTO

圖書信息

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論