MySQL建表过程和字符类型意义

建表过程

建表跟我们实际生活中建表格或者 Excel 表格是一样的,主要就是列类型和数据构成的。

只要把表头建好了,这个表格实际上也就完成了,至于姓名,学校,公司下面的,实际上只是表的内容,所以建表的过程实际上就是画表头的过程,就是一个声明表头字段的过程。

 

建表语句

语法:create table 表名(

字段1 类型1 说明1,

字段2 类型2 说明2,

...

字段n 类型n 说明n)engine 引擎名 charset 字符编码;

举例如上:primary key,auto_increment,not null default,myisam 等含义往后再解释。

 

MySQL列类型

1.数值型

整型:tinyint,smallint,mediumint,int,bigint

数据类型分别占 1,2,3,4,8 个字节。

注意:下图的 tinyint(4) 后面的 4 代表的并不是存储在数据库中的具体的长度,以前总是会误以为 int(3) 只能存储 3 个长度的数字,int(11) 就会存储 11 个长度的数字,这是大错特错的。tinyint(1) 和 tinyint(4) 中的 1 和 4 并不表示存储长度,只有字段指定 zerofill 是有用,如 tinyint(4),如果实际值是 2,如果列指定了 zerofill,查询结果就是 0002,左边用 0 来填充。请参考:https://blog.csdn.net/jaryle/article/details/52025023

tinyint unsigned:无符号的 tinyint 类型。

zerofill:代表使用零填充,声明了 zerofill 就是 unsigned 类型。

小数型:float(M,D),double(M,D),decimal(M,D) -- float 为浮点类型,decimal 为定点类型

M:代表总位数(不包含小数点),D:代表小数位数

如 float(6,2) 代表数字位为 6 位,小数点后有 2 位。

float 占 4 个字节。

而 decimal 是一种定点类型,小数部分和整数部分分开存储,比 float 准确。

 

2.字符类型(char,varchar,text,blob)

char(6) ---- 定长字符串(对于定长字符串,写入时不够长度时用空格补,读出的时候把右边的空格删除)

varchar(6) ---- 变长字符串(对于变长字符串,需要在前缀用 1-2 个字节标记后面的长度)

区别:定长字符串查找快,但是会造成空间浪费,而不定长字符串能节省空间,但是查找起来没有定长字符串快。

注意:char(6) 或者 varchar(6) 后面的 6 应该理解为长度,而不能理解为字节,因为在不同的字符集下是不同的字节,gbk 下是 6 个 gbk 编码的汉字。

text:文本类型,可以存放比较长的文本段,但是搜索速度稍慢,因此如果不是特别长的内容,建议使用 char 或者 varchar 代替,varchar 最多能存 65535 长度那么长。注意 text 文本类型不需要加默认值。

blob:二进制类型,一般用来存放图像,音频等二进制的信息,防止因为一些字符集的问题导致存进去的时候部分二进制丢失,从而导致图像或者音频损坏。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

椛茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值