在实际使用上,由于本机已有SQL Server而没有mysql,一时偷懒选择用SQL Server完成数据库的工作(不知道以后要用多少时间填坑)

建立数据库

  1. USE master
  2. GO
  3. CREATE DATABASE tmall_ssm
  4. ON
  5. (NAME = tmall_Data,
  6. FILENAME = 'C:\SQL\tmall_ssm_data.mdf',
  7. SIZE = 10,
  8. MAXSIZE = UNLIMITED,
  9. FILEGROWTH = 10
  10. )
  11. LOG ON
  12. (NAME = 'tmall_ssm_Log',
  13. FILENAME = 'C:\SQL\tmall_ssm_log.ldf',
  14. SIZE = 5MB,
  15. MAXSIZE = 25MB,
  16. FILEGROWTH = 5MB
  17. )
  18. --设置默认编码为utf8
  19. COLLATE Chinese_PRC_CI_AS
  20. GO

PS:在使用SQL Server期间遇到了使用windows身份认证无法连接的问题,我的解决方法是使用SQL server认证(类似于mysql的root用户)登录,还好密码简单没有忘记…然后修改windows认证的用户(用户名一般和本机计算机的名字以及Microsoft登录的用户名有关)的默认数据库为master即可。

创建各个表

表结构
image.png

  1. --创建用户表
  2. CREATE TABLE [user]
  3. (
  4. id INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
  5. [name] CHAR(255) DEFAULT NULL,
  6. [password] CHAR(255),
  7. )

…解决了连接、设置数据库utf8编码、关键词不能用等问题..我还是吐了,mysql与sql server还是有太多不一样的地方了,我还是不偷懒了..

没想到装mysql又是一段艰辛的路程..好在终于下载到位了,就是还需要一个GUI界面,hh如果我能忍受命令行界面好像也行!

后来我还是使用了Mysql-Front,由于使用的是Mysql 8.0版本,因此会产生一些问题。具体可自行百度。Front的开发者也是有意思..因为觉得加密的理念不对干脆就不更新了..

以上步骤在Mysql中重新来。

建立数据库

  1. DROP DATABASE IF EXISTS tmall_ssm;
  2. CREATE DATABASE tmall_ssm DEFAULT CHARACTER SET utf8;

建立各个表

  1. #创建类别表
  2. create table category (
  3. id int(11) not null auto_increment,
  4. name varchar(255) default null,
  5. primary key (id)
  6. ) ENGINE = InnoDB default charset = utf8;
  7. #创建(商品)属性表
  8. create table property (
  9. id int(11) not null auto_increment,
  10. cid int(11) default null,
  11. name varchar(255) default null,
  12. primary key (id),
  13. constraint fk_proerpty_category foreign key (cid) references category (id)
  14. ) ENGINE = InnoDB DEFAULT CHARSET = utf8;
  15. #创建产品表
  16. CREATE TABLE product (
  17. id INT(11) NOT NULL AUTO_INCREMENT,
  18. name VARCHAR(255) DEFAULT NULL, #产品名称
  19. subTitle VARCHAR(255) DEFAULT NULL, #副标题
  20. originalPrice FLOAT DEFAULT NULL, #原价
  21. promotePrice FLOAT DEFAULT NULL, #优惠价格
  22. stock INT(11) DEFAULT NULL, #库存
  23. cid INT(11) DEFAULT NULL,
  24. createDate DATETIME DEFAULT NULL,
  25. PRIMARY KEY (id),
  26. CONSTRAINT fk_product_category FOREIGN KEY (cid) REFERENCES category (id)
  27. ) ENGINE = InnoDB DEFAULT CHARSET = utf8;
  28. #创建属性值表
  29. CREATE TABLE propertyvalue (
  30. id INT(11) NOT NULL AUTO_INCREMENT,
  31. pid INT(11) DEFAULT NULL,
  32. ptid INT(11) DEFAULT NULL,
  33. value VARCHAR(255) DEFAULT NULL,
  34. PRIMARY KEY (id),
  35. CONSTRAINT fk_propertyvalue_property FOREIGN KEY (ptid) REFERENCES property (id),
  36. CONSTRAINT fk_propertyvalue_product FOREIGN KEY (pid) REFERENCES product (id)
  37. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  38. #产品图片表
  39. CREATE TABLE productimage (
  40. id INT(11) NOT NULL AUTO_INCREMENT,
  41. pid INT(11) DEFAULT NULL,
  42. type VARCHAR(255) DEFAULT NULL,
  43. PRIMARY KEY (id),
  44. CONSTRAINT fk_productimage_product FOREIGN KEY (pid) REFERENCES product (id)
  45. ) ENGINE = InnoDB DEFAULT CHARSET = utf8;
  46. #评价表
  47. CREATE TABLE review (
  48. id INT(11) NOT NULL AUTO_INCREMENT,
  49. content VARCHAR(4000) DEFAULT NULL,
  50. uid INT(11) DEFAULT NULL,
  51. pid INT(11) DEFAULT NULL,
  52. createDate DATETIME DEFAULT NULL,
  53. PRIMARY KEY (id),
  54. CONSTRAINT fk_review_product FOREIGN KEY (pid) REFERENCES product (id),
  55. CONSTRAINT fk_review_user FOREIGN KEY (uid) REFERENCES user (id)
  56. ) ENGINE = InnoDB DEFAULT CHARSET = utf8;

注意 mysql中最好不要使用—注释,使用#来单行注释

特注:SQL语句虽然对大小写不敏感,但还是建议使用大写,这是由于小写语句会在执行时转化为大写,编写时直接使用大写可以减少运行所需的时间

仅仅一个属性表有些抽象,这里举出一个实列
image.png