為已存在的表新增約束(練習1)
阿新 • • 發佈:2019-01-29
1、建立資料庫表:
2、為以上表新增約束:--將當前資料庫設定為E_Market,以便在E_Market資料庫中建立表 USE E_Market GO --建立會員資訊表 IF EXISTS(SELECT * FROM sysobjects WHERE name='UserInfo') DROP TABLE UserInfo GO CREATE TABLE UserInfo ( UserId VARCHAR(20) NOT NULL,--會員號 UserPwd VARCHAR(50) NOT NULL,--會員密碼 UserName VARCHAR(50) NOT NULL,--會員名 Gender INT NOT NULL,--性別 Email VARCHAR(50),--郵箱 UserAddress VARCHAR(200),--聯絡地址 Phone VARCHAR(20) NOT NULL--聯絡電話 ) GO --建立訂單表 IF EXISTS(SELECT * FROM sysobjects WHERE name='OrderInfo') DROP TABLE OrderInfo GO CREATE TABLE OrderInfo ( OrderId INT IDENTITY(1,1) NOT NULL,--訂單編號 UserId VARCHAR(20) NOT NULL,--外來鍵,引用UserInfo表的主鍵 CommodityId INT NOT NULL,--外來鍵,引用商品資訊表的主鍵 Amount INT NOT NULL,--數量 PayMoney BIGINT NOT NULL,--付貨總金額 PayWay VARCHAR(50) NOT NULL,--付款方式 OrderTime DATETIME NOT NULL,--下單日期 Confirm INT NOT NULL,--是否確認收,1表示確認,0表示沒有確認,預設0 SendGoods INT NOT NULL --是否發貨,0沒發,1發貨,預設0 ) GO --建立商品類別表 IF EXISTS(SELECT * FROM sysobjects WHERE name='CommoditySort') DROP TABLE CommoditySort GO CREATE TABLE CommoditySort ( SortId INT IDENTITY(1,1) NOT NULL,--商品類別編號,主鍵,自動增長 SortName VARCHAR(50) NOT NULL--商品類別名稱 ) GO --建立商品資訊表 IF EXISTS(SELECT * FROM sysobjects WHERE name='CommodityInfo') DROP TABLE CommodityInfo GO CREATE TABLE CommodityInfo ( CommodityId int IDENTITY(1,1) NOT NULL,--商品編號 SortId int NOT NULL,--商品類別編號,外來鍵 CommodityName varchar(50) NOT NULL,--商品名稱 Picture image ,--商品圖片 InPrice float NOT NULL,--商品進貨價 OutPrice float NOT NULL,--商品銷售價格 Amount int --商品庫存量 ) GO --查詢各張表 SELECT * FROM CommoditySort SELECT * FROM CommodityInfo SELECT * FROM UserInfo SELECT * FROM OrderInfo
USE E_Market-- 指向當前所操作的資料庫 GO --為使用者表UserInfo新增約束 ALTER TABLE UserInfo ADD CONSTRAINT PK_UserId PRIMARY KEY (UserId), CONSTRAINT CK_UserPwd CHECK(LEN(UserPwd)>=6), --密碼長度約束 CONSTRAINT CK_Gender CHECK(Gender=0 OR Gender=1), --為性別新增檢查約束 CONSTRAINT DF_Gender DEFAULT(0) FOR Gender, --性別預設為“0”(男) CONSTRAINT CK_Email CHECK(Email LIKE '%@%') --郵箱賬號中必須包含“@” GO --為商品資訊表CommodityInfo新增約束 ALTER TABLE CommodityInfo ADD CONSTRAINT PK_CommodityId PRIMARY KEY (CommodityId) GO --為訂單表OrderInfo新增約束 ALTER TABLE OrderInfo ADD CONSTRAINT PK_OrderId PRIMARY KEY (OrderId), CONSTRAINT FK_UserId FOREIGN KEY(UserId) REFERENCES UserInfo(UserId), --新增外來鍵約束:OrderInfo(UserId)作為外來鍵關聯到UserInfo(UserId)(主鍵). CONSTRAINT FK_CommodityId FOREIGN KEY(CommodityId) REFERENCES CommodityInfo(CommodityId), CONSTRAINT DF_PayWay DEFAULT('網上銀行') FOR PayWay, --為PayWay新增預設約束 CONSTRAINT CK_Confirm CHECK(Confirm=0 OR Confirm=1), CONSTRAINT DF_Confirm DEFAULT(0) FOR Confirm, --預設為數字0 CONSTRAINT CK_SendGoods CHECK(SendGoods =0 OR SendGoods=1), CONSTRAINT DF_SendGoods DEFAULT(0) FOR SendGoods GO --[1]外來鍵約束注意:型別、長度必須與引用的主鍵列的型別、長度必須完全一致 --[2]外來鍵約束注意引用的表中必須要有主鍵列 --為商品類別表新增約束 ALTER TABLE CommoditySort ADD CONSTRAINT PK_SortId PRIMARY KEY (SortId) GO --為CommodityInfo表中新增沒有添完的約束 ALTER TABLE CommodityInfo ADD CONSTRAINT FK_SortId FOREIGN KEY (SortId) REFERENCES CommoditySort(SortId) GO