首页 > 其他 > 详细

创建表和数据类型中遇到的几个问题

时间:2021-04-20 21:32:06      阅读:37      评论:0      收藏:0      [点我收藏+]

创建表和数据类型中遇到的几个问题

1.创建表

定义表的方式如下:

create table table_name(
	字段名 列类型 属性 索引 注释,
    字段名 列类型 属性 索引 注释,
    字段名 列类型 属性 索引 注释,
    字段名 列类型 属性 索引 注释
)

2.数据类型的长度问题[1]

在学习过程中发现了int(4),varchar(20)等诸如此类的用法,他们各有各的特点。

2.1 int(m)

m指示最大显示宽度,最大有效显示宽度是255。显示宽度与存储大小或类型包含的值的范围无关

简单说就是 int(5)中,如果你的数不足五位数,就会自动用0补齐(当然不要忘记属性设置zerofill),如果超过五位数则正常显示。

2.2 varchar(m)

varchar存储的是长度可变的字符串,后面加上m后表示存储的字符串长度不能超过 m。

此处有区别的是,在MySQL5.0之后字母和中文占的字节数目是一样的,但在之前一个中文占三个字节是和英文不一样的。

2.3 decimal(m,d)

m指定指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38。
d指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到 m之间的值。默认小数位数是 0。

例如:decimal(11,6)表示总长度不超过11位数字,并且小数点后必须6位数字。

3.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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!