在实际使用上,由于本机已有SQL Server而没有mysql,一时偷懒选择用SQL Server完成数据库的工作(不知道以后要用多少时间填坑)
建立数据库
USE master
GO
CREATE DATABASE tmall_ssm
ON
(NAME = tmall_Data,
FILENAME = 'C:\SQL\tmall_ssm_data.mdf',
SIZE = 10,
MAXSIZE = UNLIMITED,
FILEGROWTH = 10
)
LOG ON
(NAME = 'tmall_ssm_Log',
FILENAME = 'C:\SQL\tmall_ssm_log.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB
)
--设置默认编码为utf8
COLLATE Chinese_PRC_CI_AS
GO
PS:在使用SQL Server期间遇到了使用windows身份认证无法连接的问题,我的解决方法是使用SQL server认证(类似于mysql的root用户)登录,还好密码简单没有忘记…然后修改windows认证的用户(用户名一般和本机计算机的名字以及Microsoft登录的用户名有关)的默认数据库为master即可。
创建各个表
表结构
--创建用户表
CREATE TABLE [user]
(
id INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
[name] CHAR(255) DEFAULT NULL,
[password] CHAR(255),
)
…解决了连接、设置数据库utf8编码、关键词不能用等问题..我还是吐了,mysql与sql server还是有太多不一样的地方了,我还是不偷懒了..
没想到装mysql又是一段艰辛的路程..好在终于下载到位了,就是还需要一个GUI界面,hh如果我能忍受命令行界面好像也行!
后来我还是使用了Mysql-Front,由于使用的是Mysql 8.0版本,因此会产生一些问题。具体可自行百度。Front的开发者也是有意思..因为觉得加密的理念不对干脆就不更新了..
以上步骤在Mysql中重新来。
建立数据库
DROP DATABASE IF EXISTS tmall_ssm;
CREATE DATABASE tmall_ssm DEFAULT CHARACTER SET utf8;
建立各个表
#创建类别表
create table category (
id int(11) not null auto_increment,
name varchar(255) default null,
primary key (id)
) ENGINE = InnoDB default charset = utf8;
#创建(商品)属性表
create table property (
id int(11) not null auto_increment,
cid int(11) default null,
name varchar(255) default null,
primary key (id),
constraint fk_proerpty_category foreign key (cid) references category (id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
#创建产品表
CREATE TABLE product (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(255) DEFAULT NULL, #产品名称
subTitle VARCHAR(255) DEFAULT NULL, #副标题
originalPrice FLOAT DEFAULT NULL, #原价
promotePrice FLOAT DEFAULT NULL, #优惠价格
stock INT(11) DEFAULT NULL, #库存
cid INT(11) DEFAULT NULL,
createDate DATETIME DEFAULT NULL,
PRIMARY KEY (id),
CONSTRAINT fk_product_category FOREIGN KEY (cid) REFERENCES category (id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
#创建属性值表
CREATE TABLE propertyvalue (
id INT(11) NOT NULL AUTO_INCREMENT,
pid INT(11) DEFAULT NULL,
ptid INT(11) DEFAULT NULL,
value VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (id),
CONSTRAINT fk_propertyvalue_property FOREIGN KEY (ptid) REFERENCES property (id),
CONSTRAINT fk_propertyvalue_product FOREIGN KEY (pid) REFERENCES product (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
#产品图片表
CREATE TABLE productimage (
id INT(11) NOT NULL AUTO_INCREMENT,
pid INT(11) DEFAULT NULL,
type VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (id),
CONSTRAINT fk_productimage_product FOREIGN KEY (pid) REFERENCES product (id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
#评价表
CREATE TABLE review (
id INT(11) NOT NULL AUTO_INCREMENT,
content VARCHAR(4000) DEFAULT NULL,
uid INT(11) DEFAULT NULL,
pid INT(11) DEFAULT NULL,
createDate DATETIME DEFAULT NULL,
PRIMARY KEY (id),
CONSTRAINT fk_review_product FOREIGN KEY (pid) REFERENCES product (id),
CONSTRAINT fk_review_user FOREIGN KEY (uid) REFERENCES user (id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
注意 mysql中最好不要使用—注释,使用#来单行注释
特注:SQL语句虽然对大小写不敏感,但还是建议使用大写,这是由于小写语句会在执行时转化为大写,编写时直接使用大写可以减少运行所需的时间
仅仅一个属性表有些抽象,这里举出一个实列