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

下載本文檔

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

文檔簡介

1、工程四網(wǎng)上書城數(shù)據(jù)庫表的管理.工程知識(shí)要點(diǎn)單詞學(xué)習(xí)1Constraint:約束 2Primary Key:主鍵3Foreign Key:外鍵 4Binary:二進(jìn)制5Check:檢查 6Unique:獨(dú)一7Alter:修正 8Insert:插入9Update:更新 10Delete:刪除掌握數(shù)據(jù)表的根底知識(shí) 表的定義 表是包含數(shù)據(jù)庫中一切數(shù)據(jù)的數(shù)據(jù)庫對(duì)象。在表中,數(shù)據(jù)成二維行列格式,每一行代表一個(gè)獨(dú)一的記錄,每一列代表一個(gè)域。 表4-1 顧客信息表掌握數(shù)據(jù)表的根底知識(shí)列名 列名是用來訪問表中詳細(xì)域的標(biāo)識(shí)符,列名必需遵照以下規(guī)那么:1列名是可以含有從1到128的ASCII碼字符,它的組成包括字母

2、、下劃線、符號(hào)以及數(shù)字。2不要給列名命名為與SQL關(guān)鍵字一樣的名字,比如SELECT,IN,DESC等。3列名應(yīng)該反映數(shù)據(jù)的屬性。SQL Server的數(shù)據(jù)類型分類備注和說明數(shù)據(jù)類型說明二進(jìn)制數(shù)據(jù)類型存儲(chǔ)非子符和文本的數(shù)據(jù)Image可用來存儲(chǔ)圖像文本數(shù)據(jù)類型字符數(shù)據(jù)包括任意字母、符號(hào)或數(shù)字字符的組合Char固定長度的非 Unicode 字符數(shù)據(jù)Varchar可變長度非 Unicode 數(shù)據(jù)Nchar固定長度的 Unicode 數(shù)據(jù)Nvarchar可變長度 Unicode 數(shù)據(jù)Text存儲(chǔ)長文本信息Ntext存儲(chǔ)可變長度的長文本日期和時(shí)間日期和時(shí)間在單引號(hào)內(nèi)輸入Datetime 日期和時(shí)間數(shù)字?jǐn)?shù)

3、據(jù)該數(shù)據(jù)僅包含數(shù)字,包括正數(shù)、負(fù)數(shù)以及分?jǐn)?shù)intsmallint整數(shù)floatreal數(shù)字貨幣數(shù)據(jù)類型用于十進(jìn)制貨幣值MoneyBit數(shù)據(jù)類型表示是/否的數(shù)據(jù)Bit存儲(chǔ)布爾數(shù)據(jù)類型思索號(hào)碼普通運(yùn)用什么數(shù)據(jù)類型存儲(chǔ)?性別普通運(yùn)用什么數(shù)據(jù)類型存儲(chǔ)?年齡信息普通運(yùn)用什么數(shù)據(jù)類型存儲(chǔ)?照片信息普通運(yùn)用什么數(shù)據(jù)類型存儲(chǔ)?薪水普通運(yùn)用什么數(shù)據(jù)類型存儲(chǔ)?網(wǎng)上書城數(shù)據(jù)表的設(shè)計(jì)與創(chuàng)建 表的設(shè)計(jì)步驟1表的命名方式。2表中每一列的稱號(hào)、數(shù)據(jù)類型及其長度。3表中的列能否允許空值,能否獨(dú)一,能否要進(jìn)展默許設(shè)置或添加用戶定義約束。4表間的關(guān)系,即確定哪些列是主鍵,哪些是外鍵。工程中的部分表 顧客信息表Customers

4、工程中的部分表 訂單信息表Orders 工程中的部分表訂單詳細(xì)表OrderDetails 創(chuàng)建數(shù)據(jù)庫表運(yùn)用SSMS導(dǎo)游創(chuàng)建表 【例4-2-1】在SQL Server2005中運(yùn)用“SQL Server Management Studio 創(chuàng)建BookShop數(shù)據(jù)庫中的Customers表顧客信息表。詳細(xì)步驟如下:1啟動(dòng)SSMS,登錄效力器類型為【數(shù)據(jù)庫引擎】,并運(yùn)用Windows或SQL Server身份認(rèn)證建立銜接。2在“對(duì)象資源管理器中依次展開【數(shù)據(jù)庫】節(jié)點(diǎn)、【BookShop】節(jié)點(diǎn),右鍵單擊【表】節(jié)點(diǎn),選擇【新建表】命令,如圖4-1所示。圖4-1 選擇“新建表 3翻開【表設(shè)計(jì)器】窗口,在

5、【列名】下的編輯框中輸入列名“CID,然后點(diǎn)擊【數(shù)據(jù)類型】下的下拉框,拖動(dòng)下拉框的滾動(dòng)條,選擇“char(10),如圖4-2所示。圖4-2 表設(shè)計(jì)器 4 在“表設(shè)計(jì)器窗口的【列屬性】選項(xiàng)卡中的【長度】域的編輯框中輸入6,如圖4-3所示。輸入終了后,再看【數(shù)據(jù)類型】下的下拉框內(nèi)容由char(10)變?yōu)閏har(6)。5單擊“表設(shè)計(jì)器窗口的【允許空】列中的小方框,使得小方框中去掉,就符合了“CID列不允許為空的要求。圖4-3 修正字符類型長度6類似地,反復(fù)步驟25,在“表設(shè)計(jì)器窗口添加顧客信息表的其它7個(gè)字段,效果如圖4-4所示。圖4-4 顧客信息表8個(gè)字段 7設(shè)置主鍵。在“表設(shè)計(jì)器窗口中選定第一

6、個(gè)字段“CID,再執(zhí)行菜單命令【表設(shè)計(jì)器】【設(shè)置主鍵】即可按要求將字段“CID設(shè)為主鍵,如圖4-5所示。圖4-5 設(shè)置顧客信息表的主鍵8修正表稱號(hào)。在“表設(shè)計(jì)器窗口右側(cè)“屬性面板中【稱號(hào)】域的編輯框中輸入表稱號(hào)“Customers,如圖4-6所示。表稱號(hào)輸入完后不是立刻生效的,要在保管表后,表稱號(hào)修正才干生效。圖4-6 修正表稱號(hào) 9保管表。單擊工具欄中的【保管】按鈕即可以保管表。新表創(chuàng)建后,在“對(duì)象資源管理器中展開【數(shù)據(jù)庫】節(jié)點(diǎn)中的數(shù)據(jù)庫節(jié)點(diǎn)【BookShop】,可以查看到剛剛所建的表,如圖4-7所示。圖4-7 創(chuàng)建好的Customers表 運(yùn)用CREATE TABLE語句創(chuàng)建表CREATE

7、 TABLE (列級(jí)完好性約束條件, 列級(jí)完好性約束條件., )運(yùn)用CREATE TABLE語句創(chuàng)建表 【例4-2-3】為了保管顧客根本信息,需求在BookShop數(shù)據(jù)庫中創(chuàng)建一個(gè)名為“Customers的表,運(yùn)用T-SQL語句完成創(chuàng)建表的過程。運(yùn)用CREATE TABLE語句創(chuàng)建表詳細(xì)步驟如下:1勝利登錄SQL Server效力器后,在SSMS界面中,單擊【新建查詢】按鈕,翻開一個(gè)SQLQuery窗口。2在SQLQuery窗口輸入如下命令,然后單擊按鈕,分析輸入的T-SQL語法能否有錯(cuò),然后再點(diǎn)擊【執(zhí)行】按鈕,即能創(chuàng)建好顧客信息表。如圖4-13所示。運(yùn)用CREATE TABLE語句創(chuàng)建表Us

8、e BookShop -翻開數(shù)據(jù)庫Go -批處置終了語句CREATE TABLE 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

9、)運(yùn)用CREATE TABLE語句創(chuàng)建表在SQLQuery窗口輸入T-SQL命令假設(shè)當(dāng)前數(shù)據(jù)庫中已存在Customers表,再次創(chuàng)建時(shí)系統(tǒng)將提示出錯(cuò) 。如何處理呢?USE BookShop -將當(dāng)前數(shù)據(jù)庫設(shè)置為 BookShop ,以便在 BookShop 數(shù)據(jù)庫中建表GOIF EXISTSSELECT * FROM sysobjects WHERE name=Customers DROP TABLE CustomersCREATE TABLE Customers /*-創(chuàng)建顧客表-*/(.) GO標(biāo)識(shí)列表中沒有適宜的列作為主鍵怎樣辦?標(biāo)識(shí)列USE stuDB -將當(dāng)前數(shù)據(jù)庫設(shè)置為stuDB

10、GOCREATE TABLE stuInfo /*-創(chuàng)建學(xué)員信息表-*/( stuName VARCHAR(20) NOT NULL , -姓名,非空必填 stuNo CHAR(6) NOT NULL, -學(xué)號(hào),非空必填 stuAge INT NOT NULL, -年齡,INT類型默以為4個(gè)字節(jié)stuSeat SMALLINT IDENTITY (1,1), -座位號(hào),自動(dòng)編號(hào) stuAddress TEXT -住址,允許為空,即可選輸入) GOIDENTITY起始值,遞增量 思索標(biāo)識(shí)列允許為字符數(shù)據(jù)類型嗎?假設(shè)標(biāo)識(shí)列A的初始值為1,增長量為2,那么輸入三行數(shù)據(jù)以后,再刪除兩行,下次再輸入數(shù)據(jù)

11、行的時(shí)候,標(biāo)識(shí)值從多少開場?數(shù)據(jù)完好性數(shù)據(jù)完好性是指數(shù)據(jù)庫中數(shù)據(jù)的準(zhǔn)確性和一致性。假設(shè)兩個(gè)或更多的表由于其存儲(chǔ)的信息而相互關(guān)聯(lián),那么只需修正了其中一個(gè)表,與之相關(guān)的一切表都要做出相應(yīng)的修正,假設(shè)不這么做,存儲(chǔ)的數(shù)據(jù)就會(huì)不再準(zhǔn)確。也就是說,推進(jìn)了數(shù)據(jù)的完好性。 數(shù)據(jù)完好性主要分為四類:實(shí)體完好性、域完好性、援用完好性和用戶定義完好性。 數(shù)據(jù)完好性數(shù)據(jù)存放在表中“數(shù)據(jù)完好性的問題大多是由于設(shè)計(jì)引起的創(chuàng)建表的時(shí)候,就該當(dāng)保證以后數(shù)據(jù)輸入是正確的錯(cuò)誤的數(shù)據(jù)、不符合要求的數(shù)據(jù)不允許輸入創(chuàng)建表:保證數(shù)據(jù)的完好性 = 實(shí)施完好性約束完好性包括2-1輸入的類型能否正確?年齡必需是數(shù)字輸入的格式能否正確?身份證

12、號(hào)碼必需是18位能否在允許的范圍內(nèi)?性別只能是男或者女能否存在反復(fù)輸入?學(xué)員信息輸入了兩次能否符合其他特定要求?信譽(yù)值大于5的用戶才可以參與會(huì)員列表列值要求約束整行要求約束完好性包括2-2域完好性實(shí)體完好性援用完好性自定義完好性實(shí)體完好性河南新鄉(xiāng)趙可以0010016河南新鄉(xiāng)張麗鵑0010015江西南昌雷銅0010014湖南新田吳蘭0010013山東定陶李山0010012.地址姓名學(xué)號(hào)江西南昌雷銅0010014約束方法:獨(dú)一約束、主鍵約束、標(biāo)識(shí)列域完好性河南新鄉(xiāng)趙可以0010016河南新鄉(xiāng)張麗鵑0010015江西南昌雷銅0010014湖南新田吳蘭0010013山東定陶李山0010012.地址姓名

13、學(xué)號(hào)湖北江門李亮8700000000約束方法:限制數(shù)據(jù)類型、檢查約束、外鍵約束、默許值、非空約束援用完好性河南新鄉(xiāng)趙可以0010016河南新鄉(xiāng)張麗鵑0010015江西南昌雷銅0010014湖南新田吳蘭0010013山東定陶李山0010012地址姓名學(xué)號(hào)980010021數(shù)學(xué)約束方法:外鍵約束科目學(xué)號(hào)分?jǐn)?shù)數(shù)學(xué)001001288數(shù)學(xué)001001374語文001001267語文001001381數(shù)學(xué)001001698自定義完好性AV121322喬峰CV0016AV372133玄痛CV0015AV378291沙悟凈AV0014AV378290豬悟能AV0013AV378289孫悟空AV0012.會(huì)員證

14、用戶姓名用戶編號(hào)約束方法:規(guī)那么、存儲(chǔ)過程、觸發(fā)器帳號(hào)姓名信用.00192孫悟空700288豬悟能612333段譽(yù)890111虛竹4093000岳不群-10觸發(fā)器:檢查信譽(yù)值思索學(xué)員姓名允許為空嗎?家庭地址允許為空嗎?電子郵件信息允許為空嗎?考試成果允許為空嗎?思索在主鍵列輸入的數(shù)值,允許為空嗎?一個(gè)表可以有多個(gè)主鍵嗎?在一個(gè)學(xué)校數(shù)據(jù)庫中,假設(shè)一個(gè)學(xué)校內(nèi)允許重名的學(xué)員,但是一個(gè)班級(jí)內(nèi)不允許學(xué)員重名,可以組合班級(jí)和姓名兩個(gè)字段一同來作為主鍵嗎?選擇主鍵的原那么最少性盡量選擇單個(gè)鍵作為主鍵穩(wěn)定性盡量選擇數(shù)值更新少的列作為主鍵SQL Server的約束約束的目的:確保表中數(shù)據(jù)的完好型常用的約束類型:

15、主鍵約束Primary Key Constraint:要求主鍵列數(shù)據(jù)獨(dú)一,并且不允許為空獨(dú)一約束Unique Constraint:要求該列獨(dú)一,允許為空,但只能出現(xiàn)一個(gè)空值。檢查約束Check Constraint:某列取值范圍限制、格式限制等,如有關(guān)年齡的約束默許約束Default Constraint:某列的默許值,如我們的男性學(xué)員較多,性別默以為“男外鍵約束Foreign Key Constraint:用于兩表間建立關(guān)系,需求指定援用主表的那列約束名的取名規(guī)那么引薦采用:約束類型_約束字段主鍵Primary Key約束:如 PK_stuNo獨(dú)一Unique Key約束:如 UQ_stu

16、ID默許Default Key約束:如 DF_stuAddress檢查Check Key約束:如 CK_stuAge外鍵(Foreign Key)約束:如 FK_stuNo PRIMARY KEY約束 PRIMARY KEY約束 表的一列或幾列的組合的值在表中獨(dú)一地指定一行記錄,這樣的一列或多列稱為表的主鍵PRIMARY KEY,經(jīng)過它可強(qiáng)迫表的實(shí)體完好性。 【例4-3-1】運(yùn)用PRIMARY KEY約束對(duì)數(shù)據(jù)庫BookShop實(shí)施數(shù)據(jù)完好性。 1運(yùn)用SQL Server Management Studio管理PRIMARY KEY約束1啟動(dòng)SSMS,進(jìn)入新建表,假設(shè)表曾經(jīng)建立好,那么進(jìn)入修正

17、表的形狀,如圖4-11所示。2單擊要設(shè)置的PRIMARY KEY約束的列,例如:CID,選擇工具欄上的按鈕也可以右鍵選擇【設(shè)置主鍵】選項(xiàng),創(chuàng)建主鍵約束。如圖4-12所示。3創(chuàng)建主鍵終了后,在對(duì)應(yīng)的列名前有標(biāo)志,此時(shí),該列的【允許空】也改動(dòng)為“非空,如圖4-13所示。圖 4-11 選擇修正表 圖 4-12 選擇設(shè)置主鍵 圖 4-13 創(chuàng)建PRIMARY KEY約束 運(yùn)用T-SQL管理PRIMARY KEY約束CREATE TABLE Customers ( CID char (6) NOT NULL Constraint PK_CID PRIMARY KEY, CTrueName varchar

18、(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è)在訂單概略表中不設(shè)置編號(hào),那么可以將表中“訂單編號(hào)+商品編號(hào)作為訂單概略的獨(dú)一標(biāo)識(shí),在創(chuàng)建數(shù)據(jù)表OrderDetails時(shí),為OID和GID的組合設(shè)置PRIMARY KEY約束。完成語句如下所示。USE BookShopGOCREATE T

19、ABLE 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 組合主鍵 FOREIGN KEY約束 FOREIGN KEY約束標(biāo)識(shí)表之間的關(guān)系,用于強(qiáng)迫參照完好性,為表中一列或者多列數(shù)據(jù)提供參照完好性。FOREIGN KEY約束也可以參照本身表中的其他列,這種參照稱為自參照。主外鍵關(guān)系-1演示建立數(shù)據(jù)庫關(guān)系圖主外鍵關(guān)系-2演示建立主-外鍵關(guān)系

20、主外鍵關(guān)系-3當(dāng)主表中沒有對(duì)應(yīng)的記錄時(shí),不能將記錄添加到子表訂單表中不能出如今顧客表中不存在的客戶;不能更改主表中的值而導(dǎo)致子表中的記錄孤立把顧客表中的客戶編號(hào)改動(dòng)了,訂單表中的顧客編號(hào)也該當(dāng)隨之改動(dòng);子表存在與主表對(duì)應(yīng)的記錄,不能從主表中刪除該行不能把有訂單的顧客刪除了刪除主表前,先刪子表先刪訂單表、后刪除顧客表創(chuàng)建檢查約束演示建立檢查約束運(yùn)用T-SQL管理CHECK約束 CREATE TABLE Customers ( CID char (6) NOT NULL Constraint PK_CID PRIMARY KEY, CTrueName varchar(30) NOT NULL,Cp

21、assword 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約束 為了保證商品類別稱號(hào)表Category中的稱號(hào)不反復(fù),在創(chuàng)建數(shù)據(jù)表Category時(shí),為CaName設(shè)置UNIQUE約束。完成語句如下所示。CREATE TABLE Category (CaID char(2)

22、 NOT NULL PRIMARY KEY,CaName varchar(20) NOT NULL,CaDeleted bit NOT NULL,CONSTRAINT UN_CaName UNIQUE(CaName) DEFAULT約束 需求Customers表中輸入數(shù)據(jù)時(shí),為CRegisterDate提供一個(gè)默許值為當(dāng)天時(shí)間,以保證非空性或簡化用戶輸入,其完成語句如下所示。CREATE TABLE Customers ( CID char (6) NOT NULL Constraint PK_CID PRIMARY KEY, CTrueName varchar(30) NOT NULL,Cp

23、assword 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 DEFAULT(GetDate( )數(shù)據(jù)表的操作 運(yùn)用T_SQL語句修正表構(gòu)造 ALTER TABLE ALTER COLUMNADD DROP 1運(yùn)用ADD子句添加新列或新的完好性約束條件 在Customers表中添加出生日期

24、“CBirth列,其數(shù)據(jù)類型為datetime類型。該操作運(yùn)用T-SQL語句完成如下: 在Orders表中添加外鍵約束,CID列為外鍵與Customers表的主鍵CID對(duì)應(yīng)。該操作運(yùn)用T-SQL語句完成如下: ALTER TABLE CustomersADD CBirth datetimeALTER TABLE OrdersADD CONSTRAINT FK_Orders_Customers FOREIGN KEY(CID) REFERENCES Customers(CID)2運(yùn)用DROP子句刪除指定的完好性約束條件。 3運(yùn)用ALTER COLUMN子句修正根本表的列定義或約束 將Custom

25、ers表CTrueName列的數(shù)據(jù)類型改為char型,寬度為30,且該列允許為空值。該操作運(yùn)用T-SQL語句完成如下:ALTER TABLE Category DROP CONSTRAINT UN_CaNameALTER TABLE Customers ALTER COLUMN CTrueName char(30) NULL數(shù)據(jù)表的刪除 思索到不需求BookShop數(shù)據(jù)庫的購物車表ShopCar,要將該表從BookShop數(shù)據(jù)庫中刪除,該操作運(yùn)用T-SQL語句完成,完成語句如下所示。DROP TABLE ShopCar管理網(wǎng)上書城系統(tǒng)數(shù)據(jù)表的數(shù)據(jù) 【例4-3-6】在SQL Server2005

26、的SQL Server Management Studio中完成Customers表中記錄的添加、刪除和修正等操作。INSERT INTO ,VALUES,1插入一切列。 新顧客信息錄入,顧客信息如表所示,添加到Customers表中。2插入指定列 新顧客信息錄入,顧客信息地址CAddress和電子郵箱CEmail尚缺,只能將該顧客的部分信息如表所示添加到Customers表中。INSERT INTO CustomersVALUES(C0011,李平,123456,女,廣東中山市,1543876,liping163,2021-9-6)INSERT INTO Customers (CID, CTrueName, Cpassword, CSex, CMobile, CRegisterDate)VALUES(C0012, 張先明, 123456, 男, 13452312, 2021-10-6)3插入多條記錄多名顧客信息錄入,顧客信息如表所示,添加到Customers表中。USE BookShopGOINSER

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論