记录Mysql 建表注意事项

Posted 天道酬勤

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录Mysql 建表注意事项相关的知识,希望对你有一定的参考价值。

 

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

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

 

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

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

 

以上是关于记录Mysql 建表注意事项的主要内容,如果未能解决你的问题,请参考以下文章

Mysql的建表规范与注意事项

MYSQL数据库建表注意事项

mysql workbench 导出建表语句

错误笔记记录一个蛋疼的mysql建表错误 - 1064

初触hibernate01--MYSQL建表时type=InnoDB和Engine=InnoDB注意点

获取MySQL中某个数据库下所有表建表语句的DDL