alter add命令用来增加表的字段。alter add命令格式:alter table 表名 add字段 类型 其他;例如,在表MyClass中添加了一个字段passtest,类型为int(4),默认值为0: mysql> alter table MyClass add passtest int(4) default ‘0‘;1) 加索引 mysql> alter table 表名 add index 索引名 (字段名1[,字段名2 …]);例子: mysql> alter table employee add index emp_name (name);2) 加主关键字的索引 mysql> alter table 表名 add primary key (字段名);例子: mysql> alter table employee add primary key(id);3) 加唯一限制条件的索引 mysql> alter table 表名 add unique 索引名 (字段名);例子: mysql> alter table employee add unique emp_name2(cardnumber);4) 删除某个索引 mysql> alter table 表名 drop index 索引名;例子: mysql>alter table employee drop index emp_name;5) 增加字段 mysql> ALTER TABLE table_name ADD field_name field_type;6) 修改原字段名称及类型 mysql> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;7) 删除字段 mysql> ALTER TABLE table_name DROP field_name;
mysql alter add 使用记录
标签:
小编还为您整理了以下内容,可能对您也有帮助:
如何查看mysql数据库操作记录日志
1、首先确认你日志是否启用了mysql>show variables like 'log_bin'。
2、如果启用了,即ON,那日志文件就在mysql的安装目录的data目录下。
3、怎样知道当前的日志mysql> show master status。
4、看二进制日志文件用mysqlbinlog,shell>mysqlbinlog mail-bin.000001或者shell>mysqlbinlog mail-bin.000001 | tail,Windows 下用类似的。
MySQL的日志操作:
1、首先,登陆mysql后,执行sql语句:show variables like 'log_bin'。
2、#错误日志log-errol开启方式:在my.ini的[mysqld]选项下:添加代码:log-error=E:log-error.txt。
记录内容:主要是记录启动、运行或停止mysqld时出现的致命性问题,都是系统级的错误记录。
3、#查询日志:log,开启方式:在my.ini的[mysqld]选项下:添加代码:log=E:/mysql_log.txt。
4、#二进制日志:log-bin,开启方式:在my.ini的[mysqld]选项下:添加代码:log-bin=E:/mysql_log_bin,记录内容:主要是记录所有的更改数据的语句,可使用mysqlbinlog命令恢复数据。
mysql alter table修改表命令整理
本文详细解读了MySql语法中Alter命令的用法,这是一个用法比较多的语法,而且功能还是很强大的。
USE learning;(自己要提前建好)CREATE TABLE student(id INT NOT NULL,name CHAR(10) NOT NULL,class INT NOT NULL,age INT);来看看新建好的表
如下命令使用了 ALTER 命令及 DROP 子句来删除以上创建表的 age字段:
ALTER TABLE student DROP age;来看看结果:
如果数据表中只剩余一个字段则无法使用DROP来删除字段。
MySQL 中使用 ADD 子句来想数据表中添加列,如下实例在表 student 中添加age字段,并定义数据类型:
ALTER TABLE student ADD age INT NOT NULL;执行以上命令后,i 字段会自动添加到数据表字段的末尾。
SHOW COLUMNS FROM student来看表结构
如果你需要指定新增字段的位置,可以使用MySQL提供的关键字 FIRST (设定位第一列), AFTER 字段名(设定位于某个字段之后)。
尝试以下 ALTER TABLE 语句, 在执行成功后,使用 SHOW COLUMNS 查看表结构的变化:
ALTER TABLE student ADD sex CHAR(2) FIRST;
ALTER TABLE student DROP sex;ALTER TABLE student ADD sex CHAR(2) AFTER age;
修改字段类型及名称
如果需要修改字段类型及名称, 你可以在ALTER命令中使用 MODIFY 或 CHANGE 子句 。
例如,把字段 name 的类型从 CHAR(10) 改为 CHAR(100),可以执行以下命令:
ALTER TABLE student MODIFY age CHAR(100);
ALTER TABLE student CHANGE id stu_id BIGINT PRIMARY KEY;
ALTER TABLE 对 Null 值和默认值的影响
当你修改字段时,你可以指定是否包含只或者是否设置默认值。
以下实例,指定字段sex为 NOT NULL 且默认值为男 。
ALTER TABLE sutdent MODIFY sex CHAR(2) NOT NULL DEFAULT ‘男‘;
ALTER TABLE student ALTER sex DROP DEFAULT; SHOW COLUMNS FROM student;
修改数据表类型,可以使用 ALTER 命令及 TYPE 子句来完成。尝试以下实例,我们将表 student的类型修改为 MYISAM :
注意:查看数据表类型可以使用 SHOW CREATE TABLE 语句。
ALTER TABLE student ENGINE = MYISAMSHOW CREATE TABLE student;
如果需要修改数据表的名称,可以在 ALTER TABLE 语句中使用 RENAME 子句来实现。
尝试以下实例将数据表 student 重命名为 student_1:
mysql> ALTER TABLE student RENAME TO student_1;
ALTER TABLE student DROP PRIMARY KEY;
ALTER TABLE student ADD CONSTRAINT PK_STUDENT PRIMARY KEY (id,class);
添加索引
ALTER TABLE student ADD INDEX index_name (name);
查看索引
SHOW INDEX FROM student;
添加唯一限制条件索引
ALTER TABLE student ADD UNIQUE emp_name(age);
删除索引
ALTER TABLE student DROP INDEX index_name;
MySql之ALTER命令用法详细解读
标签:mysql alter命令
mysql alter table修改表命令整理
本文详细解读了MySql语法中Alter命令的用法,这是一个用法比较多的语法,而且功能还是很强大的。
USE learning;(自己要提前建好)CREATE TABLE student(id INT NOT NULL,name CHAR(10) NOT NULL,class INT NOT NULL,age INT);来看看新建好的表
如下命令使用了 ALTER 命令及 DROP 子句来删除以上创建表的 age字段:
ALTER TABLE student DROP age;来看看结果:
如果数据表中只剩余一个字段则无法使用DROP来删除字段。
MySQL 中使用 ADD 子句来想数据表中添加列,如下实例在表 student 中添加age字段,并定义数据类型:
ALTER TABLE student ADD age INT NOT NULL;执行以上命令后,i 字段会自动添加到数据表字段的末尾。
SHOW COLUMNS FROM student来看表结构
如果你需要指定新增字段的位置,可以使用MySQL提供的关键字 FIRST (设定位第一列), AFTER 字段名(设定位于某个字段之后)。
尝试以下 ALTER TABLE 语句, 在执行成功后,使用 SHOW COLUMNS 查看表结构的变化:
ALTER TABLE student ADD sex CHAR(2) FIRST;
ALTER TABLE student DROP sex;ALTER TABLE student ADD sex CHAR(2) AFTER age;
修改字段类型及名称
如果需要修改字段类型及名称, 你可以在ALTER命令中使用 MODIFY 或 CHANGE 子句 。
例如,把字段 name 的类型从 CHAR(10) 改为 CHAR(100),可以执行以下命令:
ALTER TABLE student MODIFY age CHAR(100);
ALTER TABLE student CHANGE id stu_id BIGINT PRIMARY KEY;
ALTER TABLE 对 Null 值和默认值的影响
当你修改字段时,你可以指定是否包含只或者是否设置默认值。
以下实例,指定字段sex为 NOT NULL 且默认值为男 。
ALTER TABLE sutdent MODIFY sex CHAR(2) NOT NULL DEFAULT ‘男‘;
ALTER TABLE student ALTER sex DROP DEFAULT; SHOW COLUMNS FROM student;
修改数据表类型,可以使用 ALTER 命令及 TYPE 子句来完成。尝试以下实例,我们将表 student的类型修改为 MYISAM :
注意:查看数据表类型可以使用 SHOW CREATE TABLE 语句。
ALTER TABLE student ENGINE = MYISAMSHOW CREATE TABLE student;
如果需要修改数据表的名称,可以在 ALTER TABLE 语句中使用 RENAME 子句来实现。
尝试以下实例将数据表 student 重命名为 student_1:
mysql> ALTER TABLE student RENAME TO student_1;
ALTER TABLE student DROP PRIMARY KEY;
ALTER TABLE student ADD CONSTRAINT PK_STUDENT PRIMARY KEY (id,class);
添加索引
ALTER TABLE student ADD INDEX index_name (name);
查看索引
SHOW INDEX FROM student;
添加唯一限制条件索引
ALTER TABLE student ADD UNIQUE emp_name(age);
删除索引
ALTER TABLE student DROP INDEX index_name;
MySql之ALTER命令用法详细解读
标签:mysql alter命令
MySQL 添加列,修改列,删除列
(推荐教程:mysql视频教程)
修改字段属性--数据类型:
-- 修改字段属性-- ALTER TABLE tb_name MODIFY 字段名称 字段类型 [完整性约束条件]-- 将email字段 VARCHAR(50)修改成VARCHAR(200)-- 注意,修改时如果不带完整性约束条件,原有的约束条件将丢失,如果想保留修改时就得带上完整性约束条件ALTER TABLE user10 MODIFY email VARCHAR(200) NOT NULL DEFAULT 'a@a.com';-- 将card移到test后面ALTER TABLE user10 MODIFY card CHAR(10) AFTER test;-- 将test放到第一个,保留原完整性约束条件ALTER TABLE user10 MODIFY test CHAR(32) NOT NULL DEFAULT '123' FIRST;
修改字段名称和属性:
-- 将test字段改为test1-- ALTER TABLE 表名 CHANGE 原字段名 新字段名 字段类型 约束条件ALTER TABLE user10 CHANGE test test1 CHAR(32) NOT NULL DEFAULT '123';
添加删除默认值:
-- 创建新表CREATE TABLE user11(id TINYINT UNSIGNED KEY AUTO_INCREMENT,username VARCHAR(20) NOT NULL UNIQUE,age TINYINT UNSIGNED);-- 给age添加默认值ALTER TABLE user11 ALTER age SET DEFAUTL 18;-- 添加一个字段ALTER TABLE user11 ADD email VARCHAR(50);-- 给email添加默认值ALTER TABLE user11 ALTER email SET DEFAULT 'a@a.com';-- 删除默认值ALTER TABLE user11 ALTER age DROP DEFAULT;ALTER TABLE user11 ALTER email DROP DEFAULT;
添加主键:
-- 创建一个表CREATE TABLE test12(id INT);-- 添加主键-- ALTER TABLE tb_name ADD [CONSTRAINT [sysmbol]] PRIMARY KEY [index_type] (字段名称,...)ALTER TABLE test12 ADD PRIMARY KEY(id);-- 添加复合主键-- 先创建个表CREATE TABLE test13(id INT,card CHAR(18),username VARCHAR(20) NOT NULL);-- 添加复合主键ALTER TABLE test13 ADD PRIMARY KEY(id,card);
删除主键:
-- 删除主键ALTER TABLE test12 DROP PRIMARY KEY;-- 再给test12添加主键, 完整形式ALTER TABLE test12 ADD CONSTRAINT symbol PRIMARY KEY index_type(id);
在删除主键时,有一种情况是需要注意的,我们知道具有自增长的属性的字段必须是主键,如果表里的主键是具有自增长属性的;那么直接删除是会报错的。如果想要删除主键的话,可以先去年自增长属性,再删除主键
-- 再创建一个表,CREATE TABLE test14(id INT UNSIGNED KEY AUTO_INCREMENT);-- 删除主键,这样会报错,因为自增长的必须是主键ALTER TABLE test14 DROP PRIMARY KEY;-- 先用MODIFY删除自增长属性,注意MODIFY不能去掉主键属性ALTER TABLE test14 MODIFY id INT UNSIGNED;-- 再来删除主键ALTER TABLE test14 DROP PRIMARY KEY;
唯一索引:
-- 添加唯一性约束-- ALTER TABLE tb_name ADD [CONSTANT [symbol]] UNIQUE [INDEX | KEY] [索引名称](字段名称,...)-- 创建测试表CREATE TABLE user12(id TINYINT UNSIGNED KEY AUTO_INCREMENT,username VARCHAR(20) NOT NULL,card CHAR(18) NOT NULL,test VARCHAR(20) NOT NULL,test1 CHAR(32) NOT NULL);-- username添加唯一性约束,如果没有指定索引名称,系统会以字段名建立索引ALTER TABLE user12 ADD UNIQUE(username);-- car添加唯一性约束ALTER TABLE user12 ADD CONSTRAINT symbol UNIQUE KEY uni_card(card);-- 查看索引SHOW CREATE TABLE user12;-- test,test1添加联合uniqueALTER TABLE user12 ADD CONSTRAINT symbol UNIQUE INDEX mulUni_test_test1(test, test1);-- 删除唯一-- ALTER TABLE tb_name DROP {INDEX|KEY} index_name;-- 删除刚刚添加的唯一索引ALTER TABLE user12 DROP INDEX username;ALTER TABLE user12 DROP KEY uni_card;ALTER TABLE user12 DROP KEY mulUni_test_test1;
修改表的存储引擎:
-- 修改表的存储引擎-- ALTER TABLE tb_name ENGINE=存储引擎名称ALTER TABLE user12 ENGINE=MyISAM;ALTER TABLE user12 ENGINE=INNODB;
修改自增长值:
-- 修改自增长的值-- ALTER TABLE tb_name AUTO_INCREMENT=值ALTER TABLE user12 AUTO_INCREMENT=100;
更多编程相关知识,请访问:编程教学!!
MySQL 添加列,修改列,删除列
(推荐教程:mysql视频教程)
修改字段属性--数据类型:
-- 修改字段属性-- ALTER TABLE tb_name MODIFY 字段名称 字段类型 [完整性约束条件]-- 将email字段 VARCHAR(50)修改成VARCHAR(200)-- 注意,修改时如果不带完整性约束条件,原有的约束条件将丢失,如果想保留修改时就得带上完整性约束条件ALTER TABLE user10 MODIFY email VARCHAR(200) NOT NULL DEFAULT 'a@a.com';-- 将card移到test后面ALTER TABLE user10 MODIFY card CHAR(10) AFTER test;-- 将test放到第一个,保留原完整性约束条件ALTER TABLE user10 MODIFY test CHAR(32) NOT NULL DEFAULT '123' FIRST;
修改字段名称和属性:
-- 将test字段改为test1-- ALTER TABLE 表名 CHANGE 原字段名 新字段名 字段类型 约束条件ALTER TABLE user10 CHANGE test test1 CHAR(32) NOT NULL DEFAULT '123';
添加删除默认值:
-- 创建新表CREATE TABLE user11(id TINYINT UNSIGNED KEY AUTO_INCREMENT,username VARCHAR(20) NOT NULL UNIQUE,age TINYINT UNSIGNED);-- 给age添加默认值ALTER TABLE user11 ALTER age SET DEFAUTL 18;-- 添加一个字段ALTER TABLE user11 ADD email VARCHAR(50);-- 给email添加默认值ALTER TABLE user11 ALTER email SET DEFAULT 'a@a.com';-- 删除默认值ALTER TABLE user11 ALTER age DROP DEFAULT;ALTER TABLE user11 ALTER email DROP DEFAULT;
添加主键:
-- 创建一个表CREATE TABLE test12(id INT);-- 添加主键-- ALTER TABLE tb_name ADD [CONSTRAINT [sysmbol]] PRIMARY KEY [index_type] (字段名称,...)ALTER TABLE test12 ADD PRIMARY KEY(id);-- 添加复合主键-- 先创建个表CREATE TABLE test13(id INT,card CHAR(18),username VARCHAR(20) NOT NULL);-- 添加复合主键ALTER TABLE test13 ADD PRIMARY KEY(id,card);
删除主键:
-- 删除主键ALTER TABLE test12 DROP PRIMARY KEY;-- 再给test12添加主键, 完整形式ALTER TABLE test12 ADD CONSTRAINT symbol PRIMARY KEY index_type(id);
在删除主键时,有一种情况是需要注意的,我们知道具有自增长的属性的字段必须是主键,如果表里的主键是具有自增长属性的;那么直接删除是会报错的。如果想要删除主键的话,可以先去年自增长属性,再删除主键
-- 再创建一个表,CREATE TABLE test14(id INT UNSIGNED KEY AUTO_INCREMENT);-- 删除主键,这样会报错,因为自增长的必须是主键ALTER TABLE test14 DROP PRIMARY KEY;-- 先用MODIFY删除自增长属性,注意MODIFY不能去掉主键属性ALTER TABLE test14 MODIFY id INT UNSIGNED;-- 再来删除主键ALTER TABLE test14 DROP PRIMARY KEY;
唯一索引:
-- 添加唯一性约束-- ALTER TABLE tb_name ADD [CONSTANT [symbol]] UNIQUE [INDEX | KEY] [索引名称](字段名称,...)-- 创建测试表CREATE TABLE user12(id TINYINT UNSIGNED KEY AUTO_INCREMENT,username VARCHAR(20) NOT NULL,card CHAR(18) NOT NULL,test VARCHAR(20) NOT NULL,test1 CHAR(32) NOT NULL);-- username添加唯一性约束,如果没有指定索引名称,系统会以字段名建立索引ALTER TABLE user12 ADD UNIQUE(username);-- car添加唯一性约束ALTER TABLE user12 ADD CONSTRAINT symbol UNIQUE KEY uni_card(card);-- 查看索引SHOW CREATE TABLE user12;-- test,test1添加联合uniqueALTER TABLE user12 ADD CONSTRAINT symbol UNIQUE INDEX mulUni_test_test1(test, test1);-- 删除唯一-- ALTER TABLE tb_name DROP {INDEX|KEY} index_name;-- 删除刚刚添加的唯一索引ALTER TABLE user12 DROP INDEX username;ALTER TABLE user12 DROP KEY uni_card;ALTER TABLE user12 DROP KEY mulUni_test_test1;
修改表的存储引擎:
-- 修改表的存储引擎-- ALTER TABLE tb_name ENGINE=存储引擎名称ALTER TABLE user12 ENGINE=MyISAM;ALTER TABLE user12 ENGINE=INNODB;
修改自增长值:
-- 修改自增长的值-- ALTER TABLE tb_name AUTO_INCREMENT=值ALTER TABLE user12 AUTO_INCREMENT=100;
更多编程相关知识,请访问:编程教学!!
mysql数据库的 alter可否批量操作? 例如批量修改,批量删除这样?求思路,求解.!php!
MySQL 的 Binlog 记录着 MySQL 数据库的所有变更信息,了解 Binlog 的结构可以帮助我们解析Binlog,甚至对 Binlog 进行一些修改,或者说是“篡改”,例如实现类似于 Oracle 的 flashback 的功能,恢复误删除的记录,把 update 的记录再还原回去等。本文将带您探讨一下这些神奇功能的实现,您会发现比您想象地要简单得多。本文指的 Binlog 是 ROW 模式的 Binlog,这也是 MySQL 8 里的默认模式,STATEMENT 模式因为使用中有很多,现在用得越来越少了。
Binlog 由事件(event)组成,请注意是事件(event)不是事务(transaction),一个事务可以包含多个事件。事件描述对数据库的修改内容。
现在我们已经了解了 Binlog 的结构,我们可以试着修改 Binlog 里的数据。例如前面举例的 Binlog 删除了一条记录,我们可以试着把这条记录恢复,Binlog 里面有个删除行(DELETE_ROWS_EVENT)的事件,就是这个事件删除了记录,这个事件和写行(WRITE_ROWS_EVENT)的事件的数据结构是完全一样的,只是删除行事件的类型是 32,写行事件的类型是 30,我们把对应的 Binlog 位置的 32 改成 30 即可把已经删除的记录再插入回去。从前面的 “show binlog events” 里面可看到这个 DELETE_ROWS_EVENT 是从位置 378 开始的,这里的位置就是 Binlog 文件的实际位置(以字节为单位)。从事件(event)的结构里面可以看到 type_code 是在 event 的第 5 个字节,我们写个 Python 小程序把把第383(378+5=383)字节改成 30 即可。当然您也可以用二进制编辑工具来改。
找出 Binlog 中的大事务
由于 ROW 模式的 Binlog 是每一个变更都记录一条日志,因此一个简单的 SQL,在 Binlog 里可能会产生一个巨无霸的事务,例如一个不带 where 的 update 或 delete 语句,修改了全表里面的所有记录,每条记录都在 Binlog 里面记录一次,结果是一个巨大的事务记录。这样的大事务经常是产生麻烦的根源。我的一个客户有一次向我抱怨,一个 Binlog 前滚,滚了两天也没有动静,我把那个 Binlog 解析了一下,发现里面有个事务产生了 1.4G 的记录,修改了 66 万条记录!下面是一个简单的找出 Binlog 中大事务的 Python 小程序,我们知道用 mysqlbinlog 解析的 Binlog,每个事务都是以 BEGIN 开头,以 COMMIT 结束。我们找出 BENGIN 前面的 “# at” 的位置,检查 COMMIT 后面的 “# at” 位置,这两个位置相减即可计算出这个事务的大小,下面是这个 Python 程序的例子。
切割 Binlog 中的大事务
对于大的事务,MySQL 会把它分解成多个事件(注意一个是事务 TRANSACTION,另一个是事件 EVENT),事件的大小由参数 binlog-row-event-max-size 决定,这个参数默认是 8K。因此我们可以把若干个事件切割成一个单独的略小的事务
ROW 模式下,即使我们只更新了一条记录的其中某个字段,也会记录每个字段变更前后的值,这个行为是 binlog_row_image 参数控制的,这个参数有 3 个值,默认为 FULL,也就是记录列的所有修改,即使字段没有发生变更也会记录。这样我们就可以实现类似 Oracle 的 flashback 的功能,我个人估计 MySQL 未来的版本从可能会基于 Binlog 推出这样的功能。
了解了 Binlog 的结构,再加上 Python 这把瑞士军刀,我们还可以实现很多功能,例如我们可以统计哪个表被修改地最多?我们还可以把 Binlog 切割成一段一段的,然后再重组,可以灵活地进行 MySQL 数据库的修改和迁移等工作。
mysql 怎么给一个表一次增加多个字段?
一、添加字段的命令如下:alter table tableName add newColumn varchar(8) comment '新添加的字段'
1、添加单行字段:
ALTER TABLE role
ADD `mole` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '模块';
2、添加多行字段:
ALTER TABLE role
ADD COLUMN `mole` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '模块',
ADD COLUMN `type` VARCHAR(30) NOT NULL COMMENT '项目' AFTER `default_mole`;
扩展资料
增加字段注意事项:1、在增加字段的语句中需要注意的是,comment为注释,就像在java中//作用是一样的。
2、comment后需要加单引号将注释引起来。
3、创建新表的脚本中,可在字段定义脚本中添加comment属性来添加注释。
参考资料 百度百科 mySQL