定义表的方式如下:
create table table_name(
字段名 列类型 属性 索引 注释,
字段名 列类型 属性 索引 注释,
字段名 列类型 属性 索引 注释,
字段名 列类型 属性 索引 注释
)
在学习过程中发现了int(4),varchar(20)
等诸如此类的用法,他们各有各的特点。
int(m)
m指示最大显示宽度,最大有效显示宽度是255。显示宽度与存储大小或类型包含的值的范围无关
简单说就是 int(5)
中,如果你的数不足五位数,就会自动用0补齐(当然不要忘记属性设置zerofill
),如果超过五位数则正常显示。
varchar(m)
varchar
存储的是长度可变的字符串,后面加上m后表示存储的字符串长度不能超过 m。
此处有区别的是,在MySQL5.0之后字母和中文占的字节数目是一样的,但在之前一个中文占三个字节是和英文不一样的。
decimal(m,d)
m指定指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38。
d指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到 m之间的值。默认小数位数是 0。
例如:decimal(11,6)
表示总长度不超过11位数字,并且小数点后必须6位数字。
auto_increment
使用时出现错误在刚开始使用时,Datagrip提示‘Incorrect table definition; there can be only one auto column and it must be defined as a key’,翻译过来意思是‘表格定义不正确;只能有一个自动列,并且必须将其定义为键’,其发生错误的原因为设置自增长的列,必须设为主键才可以,此时只要给自增长的列设为主键就可以。[2]
例如发生错误的代码为:
create table if not exists student(
name char(3),
age int,
id int auto_increment
)
此时只需要加上primary key
,就可以
create table if not exists student(
name char(3),
age int,
id int auto_increment PRIMARY KEY
)
也可以把primary key
放在最后
create table if not exists student(
name char(3),
age int,
id int auto_increment,
primary key(id)
)
推荐第二种写法,因为第二种写法能够直接找出主键是什么。
原文:https://www.cnblogs.com/xdyhj/p/14682399.html