4.4
创新互联基于分布式IDC数据中心构建的平台为众多户提供四川乐山服务器托管 四川大带宽租用 成都机柜租用 成都服务器租用。
MySQL数据表的修改
在MySQL中,允许对创建好的数据表进行修改,修改时可以有以下几种形式:修改表名、修改字段名、修改字段类型、修改字段排列位置、添加字段、删除字段、添加字段约束、删除约束等,它们一般都是使用“Alter table表名”命令,但后跟的具体参数不同,下面分别介绍其语句格式。
4.4.1修改表名
语句格式一:Alter table表名RENAME [TO] 新表名;
语句格式二:RENAME TABLE 表名 TO 新表名;
在上面语句格式中,“表名”为要更名的表,“新表名”为要更改成的表名,格式一中参数“TO”可以省略。
下面截图中的“ALTER TABLE”语句将dept更名为t_dept。
1. 修改表的名字
alter table table_name rename table_new_name;
其中,table_name是旧表名,table_new_name是新表名。
2.修改字段的数据类型
语法: alter table 表名 modify 字段名 数据类型
3.修改字段名
语法: alter table 表名 change 旧字段名 新字段名 新数据类型
可以。使用phpmyadmin,可以直接修改Mysql库的user表。user表是MySQL中最重要的一个权限表,用来记录允许连接到服务器的账号信息。需要注意的是,在user表里启用的所有权限都是全局级的,适用于所有数据库。
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. 删除触发器。
工具/材料
Navicat For MySQL
01
打开Navicat for MySQL,找到一个数据库,然后右键单击表,选择新建表选项,如下图所示
02
在弹出的新建表界面,我们给表建一些字段,如下图所示,建好之后保存即可
03
建好的表会在数据库的右侧界面显示出来,需要查看哪个表直接选择即可
04
下面我们在test数据库中新建一个查询,通过alter table语句修改表中的age字段不为空,如下图所示
以windows为例
方法一(假设mysql在d:\mysql目录下)
1、用系统管理员登陆windows系统。
2、停止MySQL的服务。
3、运行cmd进入dos命令窗口,然后进入MySQL的安装目录,比如安装目录是d:\mysql,进入d:\mysql\bin (如果是c:\Program Files\mysql目录,目录包含空格,使用cd "c:\Program Files\mysql"进入mysql目录)
4、跳过权限检查启动MySQL(关键的一步)
d:\mysql\binmysqld-nt --skip-grant-tables(会占用一个dos控制台窗口,不能关闭)
5、重新打开一个dos控制台窗口,进入d:\mysql\bin目录,设置root的新密码
d:\mysql\binmysqladmin -u root flush-privileges password 【新密码】
(注意:这条命令如果重复执行,可能需要关闭4的窗口并重新运行)
d:\mysql\binmysqladmin -u root -p shutdown(或直接关闭第一个dos控制台窗口)
将【新密码】替换为你要用的root的密码,第二个命令可能会提示你输入新密码,重复第一个命令输入的密码。
6、关闭MySQL的控制台窗口,用正常模式启动Mysql
7、你可以用新的密码链接到Mysql了。
方法二
1、停止mysql服务
2、找到mysql数据的data目录,将另外一个mysql的data目录下的mysql目录覆盖过来(如果知道root密码)
(操作之前先备份mysql\data\mysql目录的所有文件)
这种方法缺点:覆盖掉其他的用户,mysql的版本需相同
3、重新启动mysql服务