1、创建数据库表:
--将当前数据库设置为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
2、为以上表添加约束:
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