mysql-修改表结构
表的结构如下:
mysql> show create table person;
| person | CREATE TABLE `person` (
`number` int(11) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`birthday` date DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
删除列:
ALTER TABLE person DROP COLUMN birthday;
添加列:
ALTER TABLE person ADD COLUMN birthday datetime;
修改列,把number修改为bigint:
ALTER TABLE person MODIFY number BIGINT NOT NULL;
或者是把number修改为id,类型为bigint:
ALTER TABLE person CHANGE number id BIGINT;
添加主键:
ALTER TABLE person ADD PRIMARY KEY (id);
删除主键:
ALTER TABLE person DROP PRIMARY KEY;
添加唯一索引:
ALTER TABLE person ADD UNIQUE name_unique_index (`name`);
为name这一列创建了唯一索引,索引的名字是name_unique_index.
添加普通索引:
ALTER TABLE person ADD INDEX birthday_index (`birthday`);
删除索引:
ALTER TABLE person DROP INDEX birthday_index;
ALTER TABLE person DROP INDEX name_unique_index;
禁用非唯一索引
ALTER TABLE person DISABLE KEYS;
ALTER TABLE...DISABLE KEYS让MySQL停止更新MyISAM表中的非唯一索引。
激活非唯一索引
ALTER TABLE person ENABLE KEYS;
ALTER TABLE ... ENABLE KEYS重新创建丢失的索引。
把表默认的字符集和所有字符列(CHAR, VARCHAR, TEXT)改为新的字符集:
ALTER TABLE person CONVERT TO CHARACTER SET utf8;
修改表某一列的编码
ALTER TABLE person CHANGE name name varchar(255) CHARACTER SET utf8;
仅仅改变一个表的默认字符集
ALTER TABLE person DEFAULT CHARACTER SET utf8;
修改表名
RENAME TABLE person TO person_other;
移动表到其他数据库
RENAME TABLE current_db.tbl_name TO other_db.tbl_name;
以下内容转自:http://www.cnblogs.com/FranklinD/p/4320155.html
MySql数据库在表中添加新字段,设置主键,设置外键,字段移动位置,以及修改数据库后如何进行部署和维护的总结
1,为当前已有的表添加新的字段
alter table student add studentName varchar(20) not null;
2,为当前已有的表中的字段设置为主键自增
alter table student add constraint PK_studentId primaryKey(studentId);
3,为当前已有的表中的字段设置为外键
alter table student add constraint FK_teacherId_studentInfo foreign key (teacherId) references teacherInfo(teacherId)
alter table 表名 add constraint 键名 foreign key (外键字段名) references 主表名(主表主键名)
4,字段移动位置
alter table student modify studentId varchar(20) first
将student表中的studentId字段的位置移动到第一位
5,关于修改数据库结构后,如何部署,以及操作过程的总结
在项目开发过程中补课避免的需要修改数据库的表结构,经过这几天的操作总结的操作流程是
-
将远程服务器上的数据库复制到本地
-
在本地将数据库的结构进行修改,并研发新的项目功能
-
功能研发完毕,对比之前的数据库看修改了哪些结构,然后统一将这些操作利用脚本的方式写出来
-
将本地的数据库恢复成未修改之前的,然后运行脚本,为当前本地的数据库修改结构
-
然后查看新增的功能是否能够正常运行
-
如果出错则重复3,4步,直至利用脚本能够直接完美的修改数据库结构,并再次测试新的功能是否能够正常运行
-
如果功能能够正常运行则进行下一步部署服务器
-
首先将远程服务器中的数据库进行备份
-
部署新增的功能
-
利用脚本修改服务器中的数据库
-
修改完毕后查看新功能是否能够正常运行,如果能够正常运行并且日志文件中没有出错,则表明部署成功!
-
如果有出错的话,则先恢复数据库并且重复8,9,10,11步
以下内容转自:http://www.cnblogs.com/mfryf/p/3457481.html
mysql 如何修改、添加、删除表主键
在我们使用mysql的时候,有时会遇到须要更改或者删除mysql的主键,我们能够简单的使用alter table table_name drop primary key;来完成。以下我使用数据表table_test来作了样例。
1、首先创建一个数据表table_test:
create table table_test(
`id` varchar(100) NOT NULL,
`name` varchar(100) NOT NULL,
PRIMARY KEY (`name`)
)ENGINE=MyISAM DEFAULT CHARSET=gb2312;
2、如果发现主键设置错了,应该是id是主键,但如今表里已经有好多数据了,不能删除表再重建了,仅仅能在这基础上改动表结构。
先删除主键
alter table table_test drop primary key;
然后再增加主键
alter table table_test add primary key(id);
注:在增加主键之前,必须先把反复的id删除掉。
以下内容转自:http://www.cnblogs.com/suiy-160428/p/5649911.html
MySQL修改主键属性:
前言:在学习MySQL的过程中,对于主键的属性以及操作理解较模糊,在输入多条修改主键属性的语句后经常报错,所以想整理一下这个过程中遇到的问题,作为自己的学习记录,可能都是基础知识,但也希望提高自己对数据库的理解,同时也能帮助到其他人。
主键约束在数据表中可以定义一个主键值,唯一确定表中的每一条记录。每张表中只能有一个primary key,并且primary key不能为空。如果主键约束定义在不止一列,则一列的值可以重复,但是主键约束定义中的所有列组合必须唯一。
- 添加主键约束:
alter table tbl_name add primary key (index_col_name,…);
#括号中为字段名,可以为一个或者多个
- 在数据表已存在的情况下,且无主键,添加新的字段作为主键,并将该字段移到表格的第一列
alter table tbl_name add col_name col_definition (data type, null, default...) primary key first current_first_col_name;
- current_first_col_name表示当前数据表的第一列
Notes:关键字first表示位于某一列的前面,如果加入的字段需要位于某一列的后面,可以使用after
数据表已存在,且有主键,修改主键的定义关键字modify
alter table tbl_name modify col_name col_definition [first|after col_name]
#在col_definition 声明要修改的属性,如要添加自动编号auto_increment
Notes:
- 此时不需要重新声明主键属性primary key,如果添加了则会报错:主键重复;
- 如果原有属性中存在auto_increment,修改时需要加上auto_increment,否则auto_increment属性被删除关键字change
alter table tbl_name change col_name col_name col_definition [first|after col_name]
#与modify的区别在于列表需要写两次列名,相当于原列名和新列名,所以change也可以用来修改列名