• 【记录】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

  • 相关阅读:
    [GO]使用map生成 json
    [GO]通过结构体生成json
    [GO]正则表达式
    [GO]字符串的使用
    [GO]revoer的应用
    [GO]panic的应用
    微信公众平台自定义菜单及高级接口PHP SDK
    论MySQL何时使用索引,何时不使用索引
    MYSQL explain详解
    Mysql两种存储引擎的优缺点
  • 原文地址:https://www.cnblogs.com/wbl001/p/11638437.html
Copyright © 2020-2023  润新知