mysql alter table(mysql数据库在已存在表格上增删列,能否用alter table语句实现)

本文目录
- mysql数据库在已存在表格上增删列,能否用alter table语句实现
- 在mysql中增加一列 alter table add ’content’ varchar(2048) default null content ’内容’;为什么报错
- 如何加快MySQL中Alter Table的速度
- mysql修改数据表的语法结构,关键字有哪些
- mysql 怎么给一个表一次增加多个字段
- sql语句中ALTER TABLE MODIFY和ALTER TABLE CHANGE的区别
- mysql 中大表alter已经好几个小时了,进程也杀不掉,一直锁表,请问怎么办
- mysql将一个自定义参数传入ALTER TABLE中
mysql数据库在已存在表格上增删列,能否用alter table语句实现
ALTER TABLE:添加,修改,删除表的列,约束等表的定义。
查看列:desc 表名;
修改表名:alter table t_book rename to bbb;
添加列:alter table 表名 add column 列名 varchar(30);
删除列:alter table 表名 drop column 列名;
修改列名MySQL: alter table bbb change nnnnn hh int;
修改列名SQLServer:exec sp_rename’t_student.name’,’nn’,’column’;
修改列名Oracle:lter table bbb rename column nnnnn to hh int;
修改列属性:alter table t_book modify name varchar(22);
sp_rename:SQLServer 内置的存储过程,用与修改表的定义。
请点击输入图片描述
请点击输入图片描述
删除语句:delete from fatie where id not in(select t.id1 from ( (select max(a.id) id1 from fatie a group by a.name)as t));留下的是各组id号最大的,如果留的是最小的话换成min(a.id)就行了
如果没有加上一个中间表t,即这句话 select t.id from去掉直接写成delete from fatie where id not in(select max(id) a.id1 from fatie a group by a.name);mysql会提示错误:You can’t specify target table ’fatie’ for update in FROM clause (不能先select出同一表中的某些值,再update这个表(在同一语句中)。
在mysql中增加一列 alter table add ’content’ varchar(2048) default null content ’内容’;为什么报错
alter table add ’content’ varchar(2048) default null content ’内容’;
改成
alter table add content varchar(2048) default null content ’内容’;
或
alter table add `content` varchar(2048) default null content ’内容’;
字段名不能用单引号
如何加快MySQL中Alter Table的速度
下面是很慢的方式:
mysql》 ALTER TABLE sakila.film
-》MODIFY COLUMN rental_duration TINYINT(3) NOT NULL DEFAULT 5;
SHOW STATUS 显示这个语句做了1000次读和1000次插入操作。换句话说,它拷贝了整张表到一张新表,甚至列的类型,大小和可否为NULL属性都没改变。
理论上,MySQL可以跳过创建新表的步骤。列的默认值实际上存在表的.frm文件中,所以可以直接修改这个文件而不需要改动表本身。然而MySQL还没有采用这种优化的方法,所有的MODIFY COLUMN操作都将导致表重建。
另外一种方法是通过ALTER COLUMN操作来改变列的默认值:
mysql》ALTER TABLE sakila.film
-》ALTER COLUMN rental_duration SET DEFAULT 5;
这个语句会直接修改.frm文件而不涉及表数据。所以,这个操作是非常快的。
mysql修改数据表的语法结构,关键字有哪些
mysql修改数据表的语法结构一般来说通过alter语句即可。
1、增加列[add 列名]J
例:alter table test add username char(20) not null default ’’;
2、删除列[drop 列名]
alter table test drop pid;
3、修改列[modife 列名]
alter table test modify gender char(4) not null default ’’;
mysql 怎么给一个表一次增加多个字段
一、添加字段的命令如下: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
sql语句中ALTER TABLE MODIFY和ALTER TABLE CHANGE的区别
modify能修改字段类型和约束,而change不能。
change用来字段重命名,不能修改字段类型和约束;
modify不用来字段重命名,只能修改字段类型和约束;
试验比较:
1、字段重命名:
1)change
mysql》 alter table t1 change number id char(2);
Query OK, 0 rows affected (0.08 sec)
Records: 0 Duplicates: 0 Warnings: 0
2)modify
mysql》 alter table t1 modify id num int(2);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ’num int(2)’ at line 1
mysql》
结论:能用change重命名,而modify不能。
2、修改字段类型和约束
1)modify
mysql》 alter table t1 modify id int(2);
Query OK, 0 rows affected (0.06 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql》 alter table t1 modify id int(2) not null;
Query OK, 0 rows affected (0.08 sec)
Records: 0 Duplicates: 0 Warnings: 0
2)change
mysql》 alter table t1 change id char(2);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ’char(2)’ at line 1
mysql》 alter table t1 change id char(2) not null;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ’char(2) not null’ at line 1
结论:modify能修改字段类型和约束,而change不能。
最终结论:change用来字段重命名,不能修改字段类型和约束;
modify不用来字段重命名,只能修改字段类型和约束;
mysql 中大表alter已经好几个小时了,进程也杀不掉,一直锁表,请问怎么办
你是在 什么机器上 运行 MySQL服务的?Linux?Windows?
建议 将 相关 该表使用的,一律 关闭,如 运行web程序(正在查询、删除该表数据),备份终止,正在 运行 删除该表 的窗口等,然后再进行解锁
mysql将一个自定义参数传入ALTER TABLE中
mysql将一个自定义参数传入ALTER TABLE中
CREATE FUNCTION `fristPinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8
BEGIN
DECLARE V_RETURN VARCHAR(255);
SET V_RETURN = ELT(INTERVAL(CONV(HEX(left(CONVERT(P_NAME USING gbk),1)),16,10),
0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7,
0xBFA6,0xC0AC,0xC2E8,0xC4C3,0xC5B6,0xC5BE,0xC6DA,0xC8BB,
0xC8F6,0xCBFA,0xCDDA,0xCEF4,0xD1B9,0xD4D1),

更多文章:
repercussions(都是余波,repercussions和aftermath有什么区别啊)
2026年10月11日 09:00
dropdownlist 绑定(DropDownList 绑定所有项 并 显示指定项)
2026年10月11日 08:50
易语言网页api接口怎么调用(易语言,怎么读取网页json的api)
2026年10月11日 08:00
majority of(the majority of 和 a majority of的区别以及用法例句)
2026年10月11日 07:40
another time(another time和other time的区别)
2026年10月11日 05:00




