
一、添加字段的命令如下:alter table tableName add newColumn varchar(8) comment '新添加的字段'
1、添加单行字段:
ALTER TABLE role
ADD `module` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '模块'
2、添加多行字段:
ALTER TABLE role
ADD COLUMN `module` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '模块',
ADD COLUMN `type` VARCHAR(30) NOT NULL COMMENT '项目' AFTER `default_module`
扩展资料
增加字段注意事项:1、在增加字段的语句中需要注意的是,comment为注释,就像在java中//作用是一样的。
2、comment后需要加单引号将注释引起来。
3、创建新表的脚本中,可在字段定义脚本中添加comment属性来添加注释。
参考资料 百度百科 mySQL
首先是两个表, user_info 和 user_identify_info ,这两个表通过 user_id 关联。user_info 中 user_id 字段是int(11)类型,主键索引
user_identify_info 中 user_id 是varchar类型,普通索引
执行结果如图,未使用到索引
将 user_identify_info 字段改为int(11)或者bigint类型,使用到索引
最后查到
1、字段是varchar类型,参数是int类型,不走索引
2、字段是varchar类型,参数是字符串,走索引
3、字段是int类型,参数是int类型,走索引
4、字段是int类型,参数是字符串,走索引
添加列delivery_address 字段扩展到1000
为这个字段添加单列索引,报异常出来,索引最大长度是3072 bytes
mysql5.7不报错,但会自动将索引长度限制在768
mysql8单列索引最长也是768
复合索引总长度不能超过768
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的默认行格式。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)