MYSQL表中新增字段指定位置,SQL语句该怎么写?

MYSQL表中新增字段指定位置,SQL语句该怎么写?,第1张

数据表中添加一个字段的SQL语句写法为:

1、alter table 表名 ADD 字段 类型 NOT NULL Default 0

2、ALTER TABLE employee  ADD  spbh varchar(20) NOT NULL Default 0

3、在表employee 中加入 spbh  类型是varchar大小20 不为空 默认值是0

扩展资料:

其他常用sql语句:

1、修改数据表中某项字段属性,为其添加备注。

语句格式:comment on column  库名.表名.字段名 is  '输入的备注'

示例: 我要在ers_data库中  test表 document_type字段添加备注,则sql语句为:

comment on column ers_data.test.document_type is '文件类型'

2、删除数据表中的某字段。

语句格式:alter table  表名  drop (字段)

1. GCS行格式

需要在innodb中实现类似oracle的快速加字段功能,仅仅基于原来的行格式是不行的,必须对其进行扩展。为了保证原MySQL和innodb的兼容性,不改变原存储格式的行为,在线加字段功能是通过新增一种innodb行格式GCS(Game Cloud Storage)来实现,从而避免对其他格式造成影响。

虽然说是新增格式,但该格式与原默认的compact是基本一样的,只是新增了关键的Field Count(字段数)控制信息。

下面先回顾下compact行格式

Record Extra Bytes:是固定的5字节,表示记录的额外信息。

Nullable Bitmap:记录可空位图,使用1个bit来表示一个可空字段是否为NULL。

non-NULL Variable-Length Array:非空变长字段数组,表示非空变长字段(如varchar、varbinary)在该行的长度。

关于Compact格式的详细介绍可以参考文章。

compact格式有很重要的两个特点:

●字段的定义顺序与存储顺序基本一致(主键除外)

●字段为NULL不占存储空间,只需通过Nullable Bitmap记录。

基于以上特点,实现快速加字段功能GCS格式只需在记录头添加Field Count(字段数),来表示当前记录的字段数,占用1~2字节(若大于127,则使用2字节)

那么,解析GCS记录的关键逻辑就变为:

假设某GCS记录的Field count记录为x,表字段数为y,那么x <= y总是成立的。对于GCS格式,字段的解析变为:

●如果x == y或非GCS格式,按原来compact方式解析

●如果x <y,那么记录必定是在Alter Table加字段前就生成,那么最后y-x个字段必为NULL或默认值。

●如果该字段是允许为NULL,则为NULL。

●如果该字段不允许为NULL,则为默认值。

这样就可以将新增的字段解析出来。

另外,GCS格式在TMySQL中会替代compact作为innodb的默认行格式。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/6114141.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-15
下一篇 2023-03-15

发表评论

登录后才能评论

评论列表(0条)

保存