【记录】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建表语句是最基础的SQL语句之一,下面就为您介绍最常用的三种MySQL建表语句,如果您对MySQL建表语句方面感兴趣的话,不妨一看. 1.最简单的: CREATE TABLE t1( ...
- 基于表的数据字典构造MySQL建表语句
表的数据字典格式如下: 如果手动写MySQL建表语句,确认麻烦,还不能保证书写一定正确. 写了个Perl脚本,可快速构造MySQL脚本语句. 脚本如下: #!/usr/bin/perl use str ...
- mysql建表出现Timestamp错误
mysql建表时如果有两个或以上的字段为Timestamp,那么可能会出现如下错误: Incorrect table definition; there can be only one TIMESTA ...
- MySql 建表出现的问题:[ERR] 1064 - You have an error in your SQL syntax; check the manual.......
使用 MySql 建表出现的问题 在使用 Navicat Premium 运行 sql 语句进行建表时,MySQL 报错如下: 建表语句: DROP DATABASE IF EXISTS javawe ...
- MySQL 建表语句 create table 中的列定义
MySQL 建表语句 create table 中的列定义: column_definition: data_type [NOT NULL | NULL] [DEFAULT default_value ...
- 【转载】mysql建表date类型不能设置默认值
如题,mysql建表date类型的不能设置一个默认值,比如我这样: CREATE TABLE `new_table` ( `biryhday` datetime NULL DEFAULT '1996- ...
- Mysql建表通用写法
Mysql建表通用写法 CREATE TABLE IF NOT EXISTS stu( id ) PRIMARY KEY AUTO_INCREMENT,//主键 自增 stuname ) NOT NU ...
- MySQL建表DDL规范(欢迎补充)
MySQL建表DDL规范(欢迎补充) 基本规范: 表名和字段名全大写,一般表名以T开头 脚本需支持可重复执行,带IF NOT EXISTS ,但不可带DROP语句 字符集使用utf8mb4 (CHAR ...
- 关于MySQL建表
规范一些常用字段. password:varchar name:varchar 时间存储全部存储时间戳,用bigint(20),拒绝使用 MySQL数据类型 mysql数据类型 含义 date 3字 ...
随机推荐
- 条款2:尽量使用const ,enum,inline替换define
宁可使用编译器而不用预处理器 假设我们使用预处理器: #define ABC 1.56 这标识符ABC也许编译器没看到,也许它在编译器处理源码前就被预处理器移走了,于是“标识符”ABC没有进入标识符列 ...
- Codecraft-17 and Codeforces Round #391 - B
题目链接:http://codeforces.com/contest/757/problem/B 题意:给定n个数字,问最多能选个多少个数字使得选出来的数字的gcd!=1. 思路:由于数字最大为1e5 ...
- shell 函数传递参数的几种方式
1.最近总结了 shell 中 function 的传递变量的几种方式 1.传递单个变量 2.传递数组变量 #!/bin/bash #trying to pass an variable. ...
- 设置flex 为1
父级的宽度: 375 用来每个子元素的宽度:40 设置了 flex:1,每个子元素的宽度为125 125*3= 375, 设置flex=1后子元素会平均的分配父级元素剩下的宽度
- 机器学习:1.K近邻算法
1.简单案例:预测男女,根据身高,体重,鞋码 import numpy as np import matplotlib import sklearn from skleran.neighbors im ...
- 用pycharm运行pytest
安装pytest 1. 在pycharm中建项目,建文件,文件名字要以test_开头 2.在文件中插入pytest模块 import pytest #引用pytest模块 3.定义test函数,以及断 ...
- Centos7安装Nginx1.14.0
一.官网下载 http://nginx.org/en/download.html 版本说明: Nginx官网提供了三个类型的版本 Mainline version:Mainline 是 Nginx 目 ...
- shell脚本学习 (9) 提取开头或结尾的几行
1 提取开头的n行 用head awk或者 sed实现 do.txt sed 1q do.txt awk 'FNR <= 1' do.txt do.txt文件 2 显示行尾的几行 用tail - ...
- PHP curl_getinfo函数
curl_getinfo — 获取一个cURL连接资源句柄的信息 说明 mixed curl_getinfo ( resource $ch [, int $opt = 0 ] ) 获取最后一次传输的相 ...
- Ant Design Pro (中后台系统)教程
一.概念:https://pro.ant.design/docs/getting-started-cn(官方网站) 1.Ant Design Pro 是什么: https://www.cnblogs ...