修改 mysql 表类型的 sql 语句:
创新互联建站服务项目包括鸡西梨树网站建设、鸡西梨树网站制作、鸡西梨树网页制作以及鸡西梨树网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,鸡西梨树网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到鸡西梨树省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
alter table 表名 engine = MyISAM;
alter table 表名 engine = InnoDB;
不过我自己亲测在doc窗口表示修改成功,但实际上显示还是改不了。
一、修改表
二、复制表
三、表字段的数据类型
存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的。
mysql常用数据类型有:
数值类型
1、整数类型
TINYINT SMALLINT MEDIUMINT INT BIGINT
作用:存储年龄,等级,id,各种号码等
注意:为该类型指定宽度时,仅仅只是指定查询结果的显示宽度,与存储范围无关,存储范围如下
其实我们完全没必要为整数类型指定显示宽度,使用默认的就可以了
默认的显示宽度,都是在最大值的基础上加1
2、浮点型
定点数类型 DEC等同于DECIMAL
浮点类型:FLOAT DOUBLE
作用:存储薪资、身高、体重、体质参数等
3、日期类型
DATE TIME DATETIME TIMESTAMP YEAR
作用:存储用户注册时间,文章发布时间,员工入职时间,出生时间,过期时间等
datatime与timestamp的区别
4、字符串类型
总结:
单从数据类型的实现机制去考虑,char数据类型的处理速度更快,有时甚至可以超出varchar处理速度的50%。
但对于InnoDB数据表,内部的行存储格式没有区分固定长度和可变长度列(所有数据行都使用指向数据列值的头指针),因此在本质上,使用固定长度的CHAR列不一定比使用可变长度VARCHAR列性能要好。因而,主要的性能因素是数据行使用的存储总量。由于CHAR平均占用的空间多于VARCHAR,因此使用VARCHAR来最小化需要处理的数据行的存储总量和磁盘I/O是比较好的。
5、枚举类型和集合类型
字段的值只能在给定范围中选择,如单选框,多选框
enum 单选 只能在给定的范围内选一个值,如性别 sex 男male/女female
set 多选 在给定的范围内可以选择一个或一个以上的值(爱好1,爱好2,爱好3...)
4.4.3修改字段类型
语句格式:ALTER TABLE 表名 MODIFY 字段名 数据类型;
在上面语句格式中,“表名”指定要修改的是哪个表,“MODIFY”表示要修改表中字段数据类型,“字段名”指定要修改表中哪个字段(的数据类型),“数据类型”指定表中字段要修改成的新数据类型。
下面截图中的“ALTER TABLE”语句将t_dept表中deptno字段数据类型由原来的 int(10)修改为varchar(20)。
Online DDL 工具:pt-osc
对于 MySQL Online DDL 目前主流的有三种工具:
原生 Online DDL;
pt-osc(online-schema-change),
gh-ost
本文主要讲解 pt-online-schema-change 的使用以及三种工具的简单对比。
一、原理及限制
1.1 原理
1. 创建一个与原表结构相同的空表,表名是 _new 后缀;
2. 修改步骤 1 创建的空表的表结构;
3. 在原表上加三个触发器:delete/update/insert,用于 copy 数据过程中,将原表中要执行的语句在新表中执行;
4. 将原表数据以数据块(chunk)的形式 copy 到新表;
5. rename 原表为 old 表,并把新表 rename 为原表名,然后删除旧表;
6. 删除触发器。
修改mysql数据库表的方法:使用“ALTER TABLE”语句,可以改变原有表的结构,例如增加字段或删减字段、修改原有字段数据类型、重新命名字段或表、修改表字符集等;语法“ALTER TABLE 表名 [修改选项]”。
修改数据表的前提是数据库中已经存在该表。修改表指的是修改数据库中已经存在的数据表的结构。修改数据表的操作也是数据库管理中必不可少的,就像画素描一样,画多了可以用橡皮擦掉,画少了可以用笔加上。
不了解如何修改数据表,就相当于是我们只要画错了就要扔掉重画,这样就增加了不必要的成本。
在 MySQL 中可以使用 ALTER TABLE 语句来改变原有表的结构,例如增加或删减列、更改原有列类型、重新命名列或表等。
mysql数据库字段内容批量更新:
利用sql中case
when结构可以根据不同的条件批量更新,举例如下:
update
order
set
display_order
=
case
id
when
1
then
'value'
when
2
then
'value'
when
3
then
'value'
end
where
id
in
(1,2,3)
这句sql的意思是,更新display_order
字段,如果id=1
则display_order
的值为3,如果id=2
则
display_order
的值为4,如果id=3
则
display_order
的值为5。