項(xiàng)目4網(wǎng)上書城數(shù)據(jù)庫(kù)表的管理_第1頁(yè)
項(xiàng)目4網(wǎng)上書城數(shù)據(jù)庫(kù)表的管理_第2頁(yè)
項(xiàng)目4網(wǎng)上書城數(shù)據(jù)庫(kù)表的管理_第3頁(yè)
項(xiàng)目4網(wǎng)上書城數(shù)據(jù)庫(kù)表的管理_第4頁(yè)
項(xiàng)目4網(wǎng)上書城數(shù)據(jù)庫(kù)表的管理_第5頁(yè)
已閱讀5頁(yè),還剩68頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、項(xiàng)目四項(xiàng)目四網(wǎng)上書城數(shù)據(jù)庫(kù)表的管理1項(xiàng)目知識(shí)要點(diǎn)項(xiàng)目知識(shí)要點(diǎn)單詞學(xué)習(xí)單詞學(xué)習(xí)1Constraint:約束:約束 2Primary Key:主鍵:主鍵3Foreign Key:外鍵:外鍵 4Binary:二進(jìn)制:二進(jìn)制5Check:檢查:檢查 6Unique:唯一:唯一7Alter:修改:修改 8Insert:插入:插入9Update:更新:更新 10Delete:刪除:刪除掌握數(shù)據(jù)表的基礎(chǔ)知識(shí)掌握數(shù)據(jù)表的基礎(chǔ)知識(shí) 表的定義表的定義 表是包含數(shù)據(jù)庫(kù)中所有數(shù)據(jù)的數(shù)據(jù)庫(kù)對(duì)象。在表中,表是包含數(shù)據(jù)庫(kù)中所有數(shù)據(jù)的數(shù)據(jù)庫(kù)對(duì)象。在表中,數(shù)據(jù)成二維行列格式,每一行代表一個(gè)唯一的記錄,每一數(shù)據(jù)成二維行列格式,每

2、一行代表一個(gè)唯一的記錄,每一列代表一個(gè)域。列代表一個(gè)域。 表4-1 顧客信息表掌握數(shù)據(jù)表的基礎(chǔ)知識(shí)掌握數(shù)據(jù)表的基礎(chǔ)知識(shí)列名列名 列名是用來(lái)訪問(wèn)表中具體域的標(biāo)識(shí)符,列名必須遵循下列名是用來(lái)訪問(wèn)表中具體域的標(biāo)識(shí)符,列名必須遵循下列規(guī)則:列規(guī)則:(1)列名是可以含有從)列名是可以含有從1到到128的的ASCII碼字符,它的組碼字符,它的組成包括字母、下劃線、符號(hào)以及數(shù)字。成包括字母、下劃線、符號(hào)以及數(shù)字。(2)不要給列名命名為與)不要給列名命名為與SQL關(guān)鍵字相同的名字,比如關(guān)鍵字相同的名字,比如SELECT,IN,DESC等。等。(3)列名應(yīng)該反映數(shù)據(jù)的屬性。)列名應(yīng)該反映數(shù)據(jù)的屬性。SQL Se

3、rver的數(shù)據(jù)類型的數(shù)據(jù)類型分類分類備注和說(shuō)明備注和說(shuō)明數(shù)據(jù)類型數(shù)據(jù)類型說(shuō)明說(shuō)明二進(jìn)制數(shù)據(jù)類型二進(jìn)制數(shù)據(jù)類型存儲(chǔ)非子符和文本的數(shù)據(jù)存儲(chǔ)非子符和文本的數(shù)據(jù)Image可用來(lái)存儲(chǔ)圖像可用來(lái)存儲(chǔ)圖像文本數(shù)據(jù)類型文本數(shù)據(jù)類型字符數(shù)據(jù)包括任意字母、符字符數(shù)據(jù)包括任意字母、符號(hào)或數(shù)字字符的組合號(hào)或數(shù)字字符的組合Char固定長(zhǎng)度的非固定長(zhǎng)度的非 Unicode 字字符數(shù)據(jù)符數(shù)據(jù)Varchar可變長(zhǎng)度非可變長(zhǎng)度非 Unicode 數(shù)據(jù)數(shù)據(jù)Nchar固定長(zhǎng)度的固定長(zhǎng)度的 Unicode 數(shù)據(jù)數(shù)據(jù)Nvarchar可變長(zhǎng)度可變長(zhǎng)度 Unicode 數(shù)據(jù)數(shù)據(jù)Text存儲(chǔ)長(zhǎng)文本信息存儲(chǔ)長(zhǎng)文本信息Ntext存儲(chǔ)可變長(zhǎng)度的長(zhǎng)

4、文本存儲(chǔ)可變長(zhǎng)度的長(zhǎng)文本日期和時(shí)間日期和時(shí)間日期和時(shí)間在單引號(hào)內(nèi)輸入日期和時(shí)間在單引號(hào)內(nèi)輸入Datetime 日期和時(shí)間日期和時(shí)間數(shù)字?jǐn)?shù)據(jù)數(shù)字?jǐn)?shù)據(jù)該數(shù)據(jù)僅包含數(shù)字,包括正該數(shù)據(jù)僅包含數(shù)字,包括正數(shù)、負(fù)數(shù)以及分?jǐn)?shù)數(shù)、負(fù)數(shù)以及分?jǐn)?shù)intsmallint整數(shù)整數(shù)floatreal數(shù)字?jǐn)?shù)字貨幣數(shù)據(jù)類型貨幣數(shù)據(jù)類型用于十進(jìn)制貨幣值用于十進(jìn)制貨幣值MoneyBit數(shù)據(jù)類型數(shù)據(jù)類型表示是表示是/否的數(shù)據(jù)否的數(shù)據(jù)Bit存儲(chǔ)布爾數(shù)據(jù)類型存儲(chǔ)布爾數(shù)據(jù)類型思考思考電話號(hào)碼一般使用什么數(shù)據(jù)類型存儲(chǔ)電話號(hào)碼一般使用什么數(shù)據(jù)類型存儲(chǔ)?性別一般使用什么數(shù)據(jù)類型存儲(chǔ)性別一般使用什么數(shù)據(jù)類型存儲(chǔ)?年齡信息一般使用什么數(shù)據(jù)類型存

5、儲(chǔ)年齡信息一般使用什么數(shù)據(jù)類型存儲(chǔ)?照片信息一般使用什么數(shù)據(jù)類型存儲(chǔ)照片信息一般使用什么數(shù)據(jù)類型存儲(chǔ)?薪水一般使用什么數(shù)據(jù)類型存儲(chǔ)薪水一般使用什么數(shù)據(jù)類型存儲(chǔ)?網(wǎng)上書城數(shù)據(jù)表的設(shè)計(jì)與創(chuàng)建網(wǎng)上書城數(shù)據(jù)表的設(shè)計(jì)與創(chuàng)建 表的設(shè)計(jì)步驟表的設(shè)計(jì)步驟(1)表的命名方式。)表的命名方式。(2)表中每一列的名稱、數(shù)據(jù)類型及其長(zhǎng)度。)表中每一列的名稱、數(shù)據(jù)類型及其長(zhǎng)度。(3)表中的列是否允許空值,是否唯一,是否要進(jìn)行默)表中的列是否允許空值,是否唯一,是否要進(jìn)行默認(rèn)設(shè)置或添加用戶定義約束。認(rèn)設(shè)置或添加用戶定義約束。(4)表間的關(guān)系,即確定哪些列是主鍵,哪些是外鍵。)表間的關(guān)系,即確定哪些列是主鍵,哪些是外鍵。項(xiàng)

6、目中的部分表項(xiàng)目中的部分表 顧客信息表(顧客信息表(Customers) 項(xiàng)目中的部分表項(xiàng)目中的部分表 訂單信息表(訂單信息表(Orders) 項(xiàng)目中的部分表項(xiàng)目中的部分表訂單詳細(xì)表(訂單詳細(xì)表(OrderDetails) 創(chuàng)建數(shù)據(jù)庫(kù)表創(chuàng)建數(shù)據(jù)庫(kù)表使用使用SSMS向?qū)?chuàng)建表向?qū)?chuàng)建表 【例例4-2-1】在在SQL Server2005中使用中使用“SQL Server Management Studio” 創(chuàng)建創(chuàng)建BookShop數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)中的Customers表(顧客信息表)。表(顧客信息表)。詳細(xì)步驟如下:詳細(xì)步驟如下:(1)啟動(dòng))啟動(dòng)SSMS,登錄服務(wù)器類型為,登錄服務(wù)器類型為【數(shù)

7、據(jù)庫(kù)引擎數(shù)據(jù)庫(kù)引擎】,并,并使用使用Windows或或SQL Server身份認(rèn)證建立連接。身份認(rèn)證建立連接。(2)在)在“對(duì)象資源管理器對(duì)象資源管理器”中依次展開(kāi)中依次展開(kāi)【數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)】節(jié)點(diǎn)、節(jié)點(diǎn)、【BookShop】節(jié)點(diǎn),右鍵單擊節(jié)點(diǎn),右鍵單擊【表表】節(jié)點(diǎn),選擇節(jié)點(diǎn),選擇【新建新建表表】命令,如圖命令,如圖4-1所示。所示。圖圖4-1 選擇選擇“新建表新建表” (3)打開(kāi))打開(kāi)【表設(shè)計(jì)器表設(shè)計(jì)器】窗口,在窗口,在【列名列名】下的編輯框中下的編輯框中輸入列名輸入列名“CID”,然后點(diǎn)擊,然后點(diǎn)擊【數(shù)據(jù)類型數(shù)據(jù)類型】下的下拉框,下的下拉框,拖動(dòng)下拉框的滾動(dòng)條,選擇拖動(dòng)下拉框的滾動(dòng)條,選擇“c

8、har(10)”,如圖,如圖4-2所示。所示。圖圖4-2 表設(shè)計(jì)器表設(shè)計(jì)器 (4) 在在“表設(shè)計(jì)器表設(shè)計(jì)器”窗口的窗口的【列屬性列屬性】選項(xiàng)卡中的選項(xiàng)卡中的【長(zhǎng)度長(zhǎng)度】域的域的編輯框中輸入編輯框中輸入6,如圖,如圖4-3所示。輸入完畢后,再看所示。輸入完畢后,再看【數(shù)據(jù)類型數(shù)據(jù)類型】下的下的下拉框內(nèi)容由下拉框內(nèi)容由char(10)變?yōu)樽優(yōu)閏har(6)。(5)單擊)單擊“表設(shè)計(jì)器表設(shè)計(jì)器”窗口的窗口的【允許空允許空】列中的小方框,使得小方框列中的小方框,使得小方框中中去掉,就符合了去掉,就符合了“CID”列不允許為空的要求。列不允許為空的要求。圖圖4-3 修改字符類型長(zhǎng)度修改字符類型長(zhǎng)度(6)

9、類似地,重復(fù)步驟()類似地,重復(fù)步驟(2)(5),在),在“表設(shè)計(jì)器表設(shè)計(jì)器”窗口窗口添加顧客信息表的其它添加顧客信息表的其它7個(gè)字段,效果如圖個(gè)字段,效果如圖4-4所示。所示。圖圖4-4 顧客信息表顧客信息表8個(gè)字段個(gè)字段 (7)設(shè)置主鍵。在)設(shè)置主鍵。在“表設(shè)計(jì)器表設(shè)計(jì)器”窗口中選定第一個(gè)字窗口中選定第一個(gè)字段段“CID”,再執(zhí)行菜單命令,再執(zhí)行菜單命令【表設(shè)計(jì)器表設(shè)計(jì)器】【設(shè)置主鍵設(shè)置主鍵】即可按要求將字段即可按要求將字段“CID”設(shè)為主鍵,如圖設(shè)為主鍵,如圖4-5所示。所示。圖圖4-5 設(shè)置顧客信息表的主鍵設(shè)置顧客信息表的主鍵(8)修改表名稱。在)修改表名稱。在“表設(shè)計(jì)器表設(shè)計(jì)器”窗口

10、右側(cè)窗口右側(cè)“屬性屬性”面板面板中中【名稱名稱】域的編輯框中輸入表名稱域的編輯框中輸入表名稱“Customers”,如圖如圖4-6所示。表名稱輸入完后不是立即生效的,要在保所示。表名稱輸入完后不是立即生效的,要在保存表后,表名稱修改才能生效。存表后,表名稱修改才能生效。圖圖4-6 修改表名稱修改表名稱 (9)保存表。單擊工具欄中的)保存表。單擊工具欄中的【保存保存】按鈕即可以保存按鈕即可以保存表。新表創(chuàng)建后,在表。新表創(chuàng)建后,在“對(duì)象資源管理器對(duì)象資源管理器”中展開(kāi)中展開(kāi)【數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)】節(jié)點(diǎn)中的數(shù)據(jù)庫(kù)節(jié)點(diǎn)節(jié)點(diǎn)中的數(shù)據(jù)庫(kù)節(jié)點(diǎn)【BookShop】,可以查看到剛才所,可以查看到剛才所建的表,如圖建的

11、表,如圖4-7所示。所示。圖圖4-7 創(chuàng)建好的創(chuàng)建好的Customers表表 使用使用CREATE TABLE語(yǔ)句創(chuàng)建表語(yǔ)句創(chuàng)建表CREATE TABLE (列級(jí)完整性約束條件列級(jí)完整性約束條件, 列級(jí)完整性約束條件列級(jí)完整性約束條件., )使用使用CREATE TABLE語(yǔ)句創(chuàng)建表語(yǔ)句創(chuàng)建表 【例例4-2-3】為了保存顧客基本信息,需要在為了保存顧客基本信息,需要在BookShop數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)名為數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)名為“Customers”的表,的表,使用使用T-SQL語(yǔ)句完成創(chuàng)建表的過(guò)程。語(yǔ)句完成創(chuàng)建表的過(guò)程。使用使用CREATE TABLE語(yǔ)句創(chuàng)建表語(yǔ)句創(chuàng)建表詳細(xì)步驟如下:詳細(xì)步驟如下

12、:(1)成功登錄)成功登錄SQL Server服務(wù)器后,在服務(wù)器后,在SSMS界面中,單界面中,單擊擊【新建查詢新建查詢】按鈕,打開(kāi)一個(gè)按鈕,打開(kāi)一個(gè)SQLQuery窗口。窗口。(2)在)在SQLQuery窗口輸入如下命令,然后單擊按鈕,分窗口輸入如下命令,然后單擊按鈕,分析輸入的析輸入的T-SQL語(yǔ)法是否有錯(cuò),然后再點(diǎn)擊語(yǔ)法是否有錯(cuò),然后再點(diǎn)擊【執(zhí)行執(zhí)行】按鈕,按鈕,即能創(chuàng)建好顧客信息表。如圖即能創(chuàng)建好顧客信息表。如圖4-13所示。所示。使用使用CREATE TABLE語(yǔ)句創(chuàng)建表語(yǔ)句創(chuàng)建表Use BookShop -打開(kāi)數(shù)據(jù)庫(kù)打開(kāi)數(shù)據(jù)庫(kù)Go -批處理結(jié)束語(yǔ)句批處理結(jié)束語(yǔ)句CREATE TAB

13、LE Customers ( CID char (6) NOT NULL PRIMARY KEY, -PRIMARY KEY表表示主鍵示主鍵 CTrueName varchar(30) NOT NULL,Cpassword varchar(30) NOT NULL,CSex char(2) NOT NULL,CAddress varchar(50) NULL,CMobile varchar(11) NOT NULL, CEmail varchar(50) NULL,CRegisterDate datetime NOT NULL)使用使用CREATE TABLE語(yǔ)句創(chuàng)建表語(yǔ)句創(chuàng)建表在在SQLQu

14、ery窗口輸入窗口輸入T-SQL命令命令如果當(dāng)前數(shù)據(jù)庫(kù)中已存在如果當(dāng)前數(shù)據(jù)庫(kù)中已存在Customers表,再次創(chuàng)建時(shí)系表,再次創(chuàng)建時(shí)系統(tǒng)將提示出錯(cuò)統(tǒng)將提示出錯(cuò) 。如何解決呢?。如何解決呢?USE BookShop -將當(dāng)前數(shù)據(jù)庫(kù)設(shè)置為將當(dāng)前數(shù)據(jù)庫(kù)設(shè)置為 BookShop ,以便在以便在 BookShop 數(shù)據(jù)數(shù)據(jù)庫(kù)中建表庫(kù)中建表GOIF EXISTS(SELECT * FROM sysobjects WHERE name=Customers ) DROP TABLE CustomersCREATE TABLE Customers /*-創(chuàng)建顧客表創(chuàng)建顧客表-*/(.) GO標(biāo)識(shí)列標(biāo)識(shí)列表中沒(méi)有

15、合適的列作為主鍵怎么辦?表中沒(méi)有合適的列作為主鍵怎么辦?標(biāo)識(shí)列標(biāo)識(shí)列USE stuDB -將當(dāng)前數(shù)據(jù)庫(kù)設(shè)置為將當(dāng)前數(shù)據(jù)庫(kù)設(shè)置為stuDB GOCREATE TABLE stuInfo /*-創(chuàng)建學(xué)員信息表創(chuàng)建學(xué)員信息表-*/( stuName VARCHAR(20) NOT NULL , -姓名,非空(必填姓名,非空(必填) stuNo CHAR(6) NOT NULL, -學(xué)號(hào),非空(必填學(xué)號(hào),非空(必填) stuAge INT NOT NULL, -年齡,年齡,INT類型默認(rèn)為類型默認(rèn)為4個(gè)字節(jié)個(gè)字節(jié)stuSeat SMALLINT IDENTITY (1,1), -座位號(hào),自動(dòng)編號(hào)座位號(hào)

16、,自動(dòng)編號(hào) stuAddress TEXT -住址,允許為空,即可選輸入住址,允許為空,即可選輸入) GOIDENTITY(起始值,(起始值,遞增量)遞增量) 思考思考標(biāo)識(shí)列允許為字符數(shù)據(jù)類型嗎?標(biāo)識(shí)列允許為字符數(shù)據(jù)類型嗎?如果標(biāo)識(shí)列如果標(biāo)識(shí)列A的初始值為的初始值為1,增長(zhǎng)量為,增長(zhǎng)量為2,則輸入三行數(shù)據(jù),則輸入三行數(shù)據(jù)以后,再刪除兩行,下次再輸入數(shù)據(jù)行的時(shí)候,標(biāo)識(shí)值從以后,再刪除兩行,下次再輸入數(shù)據(jù)行的時(shí)候,標(biāo)識(shí)值從多少開(kāi)始?多少開(kāi)始?數(shù)據(jù)完整性數(shù)據(jù)完整性數(shù)據(jù)完整性是指數(shù)據(jù)庫(kù)中數(shù)據(jù)的準(zhǔn)確性和一致性。如果兩數(shù)據(jù)完整性是指數(shù)據(jù)庫(kù)中數(shù)據(jù)的準(zhǔn)確性和一致性。如果兩個(gè)或更多的表由于其存儲(chǔ)的信息而相互關(guān)聯(lián)

17、,那么只要修個(gè)或更多的表由于其存儲(chǔ)的信息而相互關(guān)聯(lián),那么只要修改了其中一個(gè)表,與之相關(guān)的所有表都要做出相應(yīng)的修改,改了其中一個(gè)表,與之相關(guān)的所有表都要做出相應(yīng)的修改,如果不這么做,存儲(chǔ)的數(shù)據(jù)就會(huì)不再準(zhǔn)確。也就是說(shuō),推如果不這么做,存儲(chǔ)的數(shù)據(jù)就會(huì)不再準(zhǔn)確。也就是說(shuō),推動(dòng)了數(shù)據(jù)的完整性。動(dòng)了數(shù)據(jù)的完整性。 數(shù)據(jù)完整性主要分為四類:實(shí)體完整性、域完整性、引用數(shù)據(jù)完整性主要分為四類:實(shí)體完整性、域完整性、引用完整性和用戶定義完整性。完整性和用戶定義完整性。 數(shù)據(jù)完整性數(shù)據(jù)完整性數(shù)據(jù)存放在表中數(shù)據(jù)存放在表中“數(shù)據(jù)完整性的問(wèn)題大多是由于設(shè)計(jì)引起的數(shù)據(jù)完整性的問(wèn)題大多是由于設(shè)計(jì)引起的”創(chuàng)建表的時(shí)候,就應(yīng)當(dāng)保

18、證以后數(shù)據(jù)輸入是正確的創(chuàng)建表的時(shí)候,就應(yīng)當(dāng)保證以后數(shù)據(jù)輸入是正確的錯(cuò)誤的數(shù)據(jù)、不符合要求的數(shù)據(jù)不允許輸入錯(cuò)誤的數(shù)據(jù)、不符合要求的數(shù)據(jù)不允許輸入創(chuàng)建表:保證數(shù)據(jù)的完整性創(chuàng)建表:保證數(shù)據(jù)的完整性 = 實(shí)施完整性約束實(shí)施完整性約束完整性包括完整性包括2-1輸入的類型是否正確?輸入的類型是否正確?年齡必須是數(shù)字年齡必須是數(shù)字輸入的格式是否正確?輸入的格式是否正確?身份證號(hào)碼必須是身份證號(hào)碼必須是18位位是否在允許的范圍內(nèi)?是否在允許的范圍內(nèi)?性別只能是性別只能是”男男”或者或者”女女”是否存在重復(fù)輸入?是否存在重復(fù)輸入?學(xué)員信息輸入了兩次學(xué)員信息輸入了兩次是否符合其他特定要求?是否符合其他特定要求?信

19、譽(yù)值大于信譽(yù)值大于5的用戶才能夠加入會(huì)員列表的用戶才能夠加入會(huì)員列表列值要求(約束)列值要求(約束)整行要求(約束)整行要求(約束)完整性包括完整性包括2-2域完整性域完整性實(shí)體完整性實(shí)體完整性引用完整性引用完整性自定義完整性自定義完整性實(shí)體完整性實(shí)體完整性河南新鄉(xiāng)河南新鄉(xiāng)趙可以趙可以0010016河南新鄉(xiāng)河南新鄉(xiāng)張麗鵑張麗鵑0010015江西南昌江西南昌雷銅雷銅0010014湖南新田湖南新田吳蘭吳蘭0010013山東定陶山東定陶李山李山0010012.地址地址姓名姓名學(xué)號(hào)學(xué)號(hào)江西南昌江西南昌雷銅雷銅0010014約束方法:唯一約束、主鍵約束、標(biāo)識(shí)列約束方法:唯一約束、主鍵約束、標(biāo)識(shí)列域完整性

20、域完整性河南新鄉(xiāng)河南新鄉(xiāng)趙可以趙可以00100160010016河南新鄉(xiāng)河南新鄉(xiāng)張麗鵑張麗鵑0010015江西南昌江西南昌雷銅雷銅0010014湖南新田湖南新田吳蘭吳蘭0010013山東定陶山東定陶李山李山0010012.地址地址姓名姓名學(xué)號(hào)學(xué)號(hào)湖北江門湖北江門李亮李亮8700000000約束方法:限制數(shù)據(jù)類型、檢查約束、外鍵約束、默認(rèn)值、非空約束約束方法:限制數(shù)據(jù)類型、檢查約束、外鍵約束、默認(rèn)值、非空約束引用完整性引用完整性河南新鄉(xiāng)河南新鄉(xiāng)趙可以趙可以0010016河南新鄉(xiāng)河南新鄉(xiāng)張麗鵑張麗鵑0010015江西南昌江西南昌雷銅雷銅0010014湖南新田湖南新田吳蘭吳蘭0010013山東定陶山

21、東定陶李山李山0010012地址地址姓名姓名學(xué)號(hào)學(xué)號(hào)980010021數(shù)學(xué)數(shù)學(xué)約束方法:外鍵約束約束方法:外鍵約束科目科目學(xué)號(hào)學(xué)號(hào)分?jǐn)?shù)分?jǐn)?shù)數(shù)學(xué)數(shù)學(xué)001001288數(shù)學(xué)數(shù)學(xué)001001374語(yǔ)文語(yǔ)文001001267語(yǔ)文語(yǔ)文001001381數(shù)學(xué)數(shù)學(xué)001001698自定義完整性自定義完整性AV121322喬峰喬峰CV0016AV372133玄痛玄痛CV0015AV378291沙悟凈沙悟凈AV0014AV378290豬悟能豬悟能AV0013AV378289孫悟空孫悟空AV0012.會(huì)員證會(huì)員證用戶姓名用戶姓名用戶編號(hào)用戶編號(hào)約束方法:規(guī)則、存儲(chǔ)過(guò)程、觸發(fā)器約束方法:規(guī)則、存儲(chǔ)過(guò)程、觸發(fā)器帳號(hào)帳

22、號(hào)姓名姓名信用信用.00192孫悟空孫悟空700288豬悟能豬悟能612333段譽(yù)段譽(yù)890111虛竹虛竹4093000岳不群岳不群-10觸發(fā)器:檢查信用值觸發(fā)器:檢查信用值思考思考學(xué)員姓名允許為空嗎學(xué)員姓名允許為空嗎?家庭地址允許為空嗎家庭地址允許為空嗎?電子郵件信息允許為空嗎電子郵件信息允許為空嗎?考試成績(jī)?cè)试S為空嗎考試成績(jī)?cè)试S為空嗎?思考思考在主鍵列輸入的數(shù)值,允許為空嗎在主鍵列輸入的數(shù)值,允許為空嗎?一個(gè)表可以有多個(gè)主鍵嗎一個(gè)表可以有多個(gè)主鍵嗎?在一個(gè)學(xué)校數(shù)據(jù)庫(kù)中,如果一個(gè)學(xué)校內(nèi)允許重名的學(xué)在一個(gè)學(xué)校數(shù)據(jù)庫(kù)中,如果一個(gè)學(xué)校內(nèi)允許重名的學(xué)員,但是一個(gè)班級(jí)內(nèi)不允許學(xué)員重名,可以組合班級(jí)員,

23、但是一個(gè)班級(jí)內(nèi)不允許學(xué)員重名,可以組合班級(jí)和姓名兩個(gè)字段一起來(lái)作為主鍵嗎?和姓名兩個(gè)字段一起來(lái)作為主鍵嗎?選擇主鍵的原則選擇主鍵的原則最少性最少性盡量選擇單個(gè)鍵作為主鍵盡量選擇單個(gè)鍵作為主鍵穩(wěn)定性穩(wěn)定性盡量選擇數(shù)值更新少的列作為主鍵盡量選擇數(shù)值更新少的列作為主鍵SQL Server的約束的約束約束的目的:確保表中數(shù)據(jù)的完整型約束的目的:確保表中數(shù)據(jù)的完整型常用的約束類型:常用的約束類型:主鍵約束(主鍵約束(Primary Key Constraint):要求主鍵列數(shù)據(jù)唯一,):要求主鍵列數(shù)據(jù)唯一,并且不允許為空并且不允許為空唯一約束(唯一約束(Unique Constraint):要求該列唯一

24、,允許為空,):要求該列唯一,允許為空,但只能出現(xiàn)一個(gè)空值。但只能出現(xiàn)一個(gè)空值。檢查約束(檢查約束(Check Constraint):某列取值范圍限制、格式限):某列取值范圍限制、格式限制等,如有關(guān)年齡的約束制等,如有關(guān)年齡的約束默認(rèn)約束(默認(rèn)約束(Default Constraint):某列的默認(rèn)值,如我們的男):某列的默認(rèn)值,如我們的男性學(xué)員較多,性別默認(rèn)為性學(xué)員較多,性別默認(rèn)為“男男”外鍵約束(外鍵約束(Foreign Key Constraint):用于兩表間建立關(guān)系,):用于兩表間建立關(guān)系,需要指定引用主表的那列需要指定引用主表的那列約束名的取名規(guī)則推薦采用:約束類型約束名的取名規(guī)

25、則推薦采用:約束類型_約束字段約束字段主鍵(主鍵(Primary Key)約束:如)約束:如 PK_stuNo唯一(唯一(Unique Key)約束:如)約束:如 UQ_stuID默認(rèn)(默認(rèn)(Default Key)約束:如)約束:如 DF_stuAddress檢查(檢查(Check Key)約束:如)約束:如 CK_stuAge外鍵外鍵(Foreign Key)約束:如約束:如 FK_stuNo PRIMARY KEY約束約束 PRIMARY KEY約束約束 表的一列或幾列的組合的值在表中唯一地指定一行記表的一列或幾列的組合的值在表中唯一地指定一行記錄,這樣的一列或多列稱為表的主鍵(錄,這樣

26、的一列或多列稱為表的主鍵(PRIMARY KEY),),通過(guò)它可強(qiáng)制表的實(shí)體完整性。通過(guò)它可強(qiáng)制表的實(shí)體完整性。 【例例4-3-1】使用使用PRIMARY KEY約束對(duì)數(shù)據(jù)庫(kù)約束對(duì)數(shù)據(jù)庫(kù)BookShop實(shí)施數(shù)據(jù)完整性。實(shí)施數(shù)據(jù)完整性。 1使用使用SQL Server Management Studio管理管理PRIMARY KEY約束約束(1)啟動(dòng))啟動(dòng)SSMS,進(jìn)入新建表,如果表已經(jīng)建立好,則進(jìn),進(jìn)入新建表,如果表已經(jīng)建立好,則進(jìn)入修改表的狀態(tài),如圖入修改表的狀態(tài),如圖4-11所示。所示。(2)單擊要設(shè)置的)單擊要設(shè)置的PRIMARY KEY約束的列,例如:約束的列,例如:CID,選擇工具欄

27、上的按鈕(也可以右鍵選擇選擇工具欄上的按鈕(也可以右鍵選擇【設(shè)置主鍵設(shè)置主鍵】選選項(xiàng)),創(chuàng)建主鍵約束。如圖項(xiàng)),創(chuàng)建主鍵約束。如圖4-12所示。所示。(3)創(chuàng)建主鍵結(jié)束后,在對(duì)應(yīng)的列名前有標(biāo)志,此時(shí),該)創(chuàng)建主鍵結(jié)束后,在對(duì)應(yīng)的列名前有標(biāo)志,此時(shí),該列的列的【允許空允許空】也改變?yōu)橐哺淖優(yōu)椤胺强辗强铡?,如圖,如圖4-13所示。所示。圖圖 4-11 選擇修改表選擇修改表 圖圖 4-12 選擇設(shè)置主鍵選擇設(shè)置主鍵 圖圖 4-13 創(chuàng)建創(chuàng)建PRIMARY KEY約束約束 使用使用T-SQL管理管理PRIMARY KEY約束約束CREATE TABLE Customers ( CID char (6)

28、 NOT NULL Constraint PK_CID PRIMARY KEY, CTrueName varchar(30) NOT NULL,Cpassword varchar(30) NOT NULL,CSex char(2) NOT NULL,CAddress varchar(50) NULL,CMobile varchar(11) NOT NULL,CEmail varchar(50) NULL,CRegisterDate datetime NOT NULL)如果在訂單詳情表中不設(shè)置編號(hào),則可以將表中如果在訂單詳情表中不設(shè)置編號(hào),則可以將表中“訂單編訂單編號(hào)號(hào)+商品編號(hào)商品編號(hào)”作為訂

29、單詳情的唯一標(biāo)識(shí),在創(chuàng)建數(shù)據(jù)表作為訂單詳情的唯一標(biāo)識(shí),在創(chuàng)建數(shù)據(jù)表OrderDetails時(shí),為時(shí),為OID和和GID的組合設(shè)置的組合設(shè)置PRIMARY KEY約束。完成語(yǔ)句如下所示。約束。完成語(yǔ)句如下所示。USE BookShopGOCREATE TABLE OrderDetails ( OID char (14) NOT NULL, GID char(6) NOT NULL,OdPrice float NOT NULL,OdNumber int NOT NULL,CONSTRAINT PK_OID_GID PRIMARY KEY(OID,GID)圖圖 4-14 組合主鍵組合主鍵 FOREI

30、GN KEY約束約束 FOREIGN KEY約束標(biāo)識(shí)表之間的關(guān)系,用于強(qiáng)制參約束標(biāo)識(shí)表之間的關(guān)系,用于強(qiáng)制參照完整性,為表中一列或者多列數(shù)據(jù)提供參照完整性。照完整性,為表中一列或者多列數(shù)據(jù)提供參照完整性。FOREIGN KEY約束也可以參照自身表中的其他列,這種約束也可以參照自身表中的其他列,這種參照稱為自參照。參照稱為自參照。主外鍵關(guān)系主外鍵關(guān)系-1演示建立數(shù)據(jù)庫(kù)關(guān)系圖演示建立數(shù)據(jù)庫(kù)關(guān)系圖主外鍵關(guān)系主外鍵關(guān)系-2演示建立主演示建立主-外鍵關(guān)系外鍵關(guān)系主外鍵關(guān)系主外鍵關(guān)系-3當(dāng)主表中沒(méi)有當(dāng)主表中沒(méi)有對(duì)應(yīng)對(duì)應(yīng)的記錄時(shí),的記錄時(shí),不能不能將記錄添加到將記錄添加到子子表表訂單表訂單表中不能出現(xiàn)在中不

31、能出現(xiàn)在顧客顧客表中不存在的表中不存在的客戶客戶;不能不能更改主表中的值更改主表中的值而而導(dǎo)致導(dǎo)致子子表中的記錄孤立表中的記錄孤立把把顧客顧客表中的表中的客戶編號(hào)客戶編號(hào)改變了,改變了,訂單表訂單表中的中的顧客編號(hào)顧客編號(hào)也應(yīng)當(dāng)隨之改變;也應(yīng)當(dāng)隨之改變;子表子表存在與存在與主表對(duì)應(yīng)的主表對(duì)應(yīng)的記錄記錄,不能從,不能從主表中刪除主表中刪除該行該行不能不能把把有訂單的顧客有訂單的顧客刪除了刪除了刪除主表前,先刪子表刪除主表前,先刪子表先刪訂單表、后刪除顧客先刪訂單表、后刪除顧客表表創(chuàng)建檢查約束創(chuàng)建檢查約束演示建立檢查約束演示建立檢查約束使用使用T-SQL管理管理CHECK約束約束 CREATE T

32、ABLE Customers ( CID char (6) NOT NULL Constraint PK_CID PRIMARY KEY, CTrueName varchar(30) NOT NULL,Cpassword varchar(30) NOT NULL,CSex char(2) NOT NULL CHECK(CSex=男男 or CSex=女女),CAddress varchar(50) NULL,CMobile varchar(11) NOT NULL,CEmail varchar(50) NULL,CRegisterDate datetime NOT NULL)UNIQUE約束約

33、束 為了保證商品類別名稱表為了保證商品類別名稱表Category中的名稱不重復(fù),中的名稱不重復(fù),在創(chuàng)建數(shù)據(jù)表在創(chuàng)建數(shù)據(jù)表Category時(shí),為時(shí),為CaName設(shè)置設(shè)置UNIQUE約約束。完成語(yǔ)句如下所示。束。完成語(yǔ)句如下所示。CREATE TABLE Category (CaID char(2) NOT NULL PRIMARY KEY,CaName varchar(20) NOT NULL,CaDeleted bit NOT NULL,CONSTRAINT UN_CaName UNIQUE(CaName) DEFAULT約束約束 需要需要Customers表中輸入數(shù)據(jù)時(shí),為表中輸入數(shù)據(jù)時(shí),

34、為CRegisterDate提供一個(gè)默認(rèn)值為當(dāng)天時(shí)間,以保證非空性或簡(jiǎn)化用戶輸提供一個(gè)默認(rèn)值為當(dāng)天時(shí)間,以保證非空性或簡(jiǎn)化用戶輸入,其完成語(yǔ)句如下所示。入,其完成語(yǔ)句如下所示。CREATE TABLE Customers ( CID char (6) NOT NULL Constraint PK_CID PRIMARY KEY, CTrueName varchar(30) NOT NULL,Cpassword varchar(30) NOT NULL,CSex char(2) NOT NULL CHECK(CSex=男男 or CSex=女女),CAddress varchar(50) NUL

35、L,CMobile varchar(11) NOT NULL,CEmail varchar(50) NULL,CRegisterDate datetime NOT NULL DEFAULT(GetDate( )數(shù)據(jù)表的操作數(shù)據(jù)表的操作 使用使用T_SQL語(yǔ)句修改表結(jié)構(gòu)語(yǔ)句修改表結(jié)構(gòu) ALTER TABLE ALTER COLUMNADD DROP (1)使用)使用ADD子句增加新列或新的完整性約束條件子句增加新列或新的完整性約束條件 在在Customers表中增加出生日期表中增加出生日期“CBirth”列,其數(shù)列,其數(shù)據(jù)類型為據(jù)類型為datetime類型。該操作使用類型。該操作使用T-SQL語(yǔ)

36、句完成如下:語(yǔ)句完成如下: 在在Orders表中增加外鍵約束,表中增加外鍵約束,CID列為外鍵與列為外鍵與Customers表的主鍵表的主鍵CID對(duì)應(yīng)。該操作使用對(duì)應(yīng)。該操作使用T-SQL語(yǔ)句完語(yǔ)句完成如下:成如下: ALTER TABLE CustomersADD CBirth datetimeALTER TABLE OrdersADD CONSTRAINT FK_Orders_Customers FOREIGN KEY(CID) REFERENCES Customers(CID)(2)使用)使用DROP子句刪除指定的完整性約束條件。子句刪除指定的完整性約束條件。 (3)使用)使用ALTER

37、 COLUMN子句修改基本表的列定義或約子句修改基本表的列定義或約束束 將將Customers表表CTrueName列的數(shù)據(jù)類型改為列的數(shù)據(jù)類型改為char型,型,寬度為寬度為30,且該列允許為空值。該操作使用,且該列允許為空值。該操作使用T-SQL語(yǔ)句完語(yǔ)句完成如下:成如下:ALTER TABLE Category DROP CONSTRAINT UN_CaNameALTER TABLE Customers ALTER COLUMN CTrueName char(30) NULL數(shù)據(jù)表的刪除數(shù)據(jù)表的刪除 考慮到不需要考慮到不需要BookShop數(shù)據(jù)庫(kù)的購(gòu)物車表數(shù)據(jù)庫(kù)的購(gòu)物車表ShopCar,

38、要將該表從要將該表從BookShop數(shù)據(jù)庫(kù)中刪除,該操作使用數(shù)據(jù)庫(kù)中刪除,該操作使用T-SQL語(yǔ)句完成,完成語(yǔ)句如下所示。語(yǔ)句完成,完成語(yǔ)句如下所示。DROP TABLE ShopCar管理網(wǎng)上書城系統(tǒng)數(shù)據(jù)表的數(shù)據(jù)管理網(wǎng)上書城系統(tǒng)數(shù)據(jù)表的數(shù)據(jù) 【例例4-3-6】在在SQL Server2005的的SQL Server Management Studio中完成中完成Customers表中記錄的添加、表中記錄的添加、刪除和修改等操作。刪除和修改等操作。INSERT INTO ,VALUES(,)(1)插入所有列。)插入所有列。 新顧客信息錄入,顧客信息如表所示,添加到新顧客信息錄入,顧客信息如表所

39、示,添加到Customers表中。表中。(2)插入指定列)插入指定列 新顧客信息錄入,顧客信息地址新顧客信息錄入,顧客信息地址CAddress和電子郵箱和電子郵箱CEmail尚缺,只能將該顧客的部分信息如表所示添加到尚缺,只能將該顧客的部分信息如表所示添加到Customers表中。表中。INSERT INTO CustomersVALUES(C0011,李平李平,123456,女女,廣東中山市廣東中山市,1351543876,2009-9-6)INSERT INTO Customers (CID, CTrueName, Cpassword, CSex, CMobile, CRegisterDate)VALUES(C0012, 張先明張先明, 123456, 男男, 2009-10-6)(3)插入多條記錄)插入多條記錄多名顧客信息錄入,顧客信息如表所示,添加到多名顧客信息錄入,顧客信息如表所示,添加到Customers表中。表中。USE BookShopGOINSERT INTO CustomersVALUES(C0

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論