【记录】Mysql 建表注意事项

时间:2022-06-28 02:35:39

 

    博主最近打算搭建商城,由于之前对建表只有很浅显的理解,没有太过深入了解,建表过程中遇到一些问题,现记录如下,

如有问题请各位留言指正,感激不尽:

 

建表时设置如何设置联合主键?如下标红处:

CREATE TABLE `product_price` (
  `product_id` int(12) NOT NULL COMMENT ‘商品ID‘,
  `price_category_id` int(12) NOT NULL DEFAULT ‘0‘ COMMENT ‘价格类型ID‘,
  `price_describe` varchar(15) DEFAULT NULL COMMENT ‘价格描述‘,
  `price` decimal(18,3) DEFAULT NULL COMMENT ‘价格‘,
  `created_by` varchar(20) DEFAULT NULL COMMENT ‘创建用户‘,
  `created_time` datetime DEFAULT NULL COMMENT ‘创建时间‘,
  `updated_by` varchar(20) DEFAULT NULL COMMENT ‘更新用户‘,
  `updated_time` datetime DEFAULT NULL COMMENT ‘更新时间‘,
  PRIMARY KEY (`product_id`,`price_category_id`),
  KEY `fk_price_category` (`price_category_id`),
  CONSTRAINT `fk_price_product` FOREIGN KEY (`product_id`) REFERENCES `product` (`product_id`),
  CONSTRAINT `fk_price_category` FOREIGN KEY (`price_category_id`) REFERENCES `product_price_category` (`price_category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=‘价格表‘;

  

如何设置外键?如上标绿处,含义如下:

constraint 外键(形如:FK_从表_主表) foreign key (从表外键字段) references 主表(主键字段);

 

注意语句中的(`)全部是Esc下面那个键而非单引号!执行语句时是单引号。

 

参考链接1:https://www.cnblogs.com/xlwh/p/8595141.html

参考链接2:https://blog.csdn.net/xudailong_blog/article/details/84136168

参考链接3:https://www.cnblogs.com/msi-chen/p/10189532.html

参考链接4:https://www.php.cn/mysql-tutorials-375831.html

 

 

遇到 ERROR 1005: Can‘t create table (errno: 150)解决办法

在mysql 中建立引用约束的时候会出现MySQL ERROR 1005: Can’t create table (errno: 150)的错误信息,结果是不能建立引用约束。
出现问题的大致情况
1、外键的引用类型不一样,如主键是int外键是char
2、找不到主表中引用的列
3、引用的字段和外键的字符编码不一致,也可能存储引擎不一样
4、引用的字段和外键的约束不同

参考链接:https://blog.csdn.net/yiluxiangqian7715/article/details/47747613

 

 

mysql建表注意事项

1:如果某字段只有Y/N选项,创建时应用char(1),或者1/0选项用 tinyint(1)

2:尽量少使用langtext类型

3:用varchar时应该 制定具体长度,本来就20个字节,不应该用varchar(250),影响效率

 

参考链接:https://www.cnblogs.com/zjfjava/p/6920407.html