美文网首页
mysql-修改表结构

mysql-修改表结构

作者: 逗比的一生 | 来源:发表于2019-10-09 10:33 被阅读0次
    表的结构如下:
    
    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不能为空。如果主键约束定义在不止一列,则一列的值可以重复,但是主键约束定义中的所有列组合必须唯一。

    1. 添加主键约束:
        alter table tbl_name add primary key (index_col_name,…);
        #括号中为字段名,可以为一个或者多个
    
    1. 在数据表已存在的情况下,且无主键,添加新的字段作为主键,并将该字段移到表格的第一列
        alter table tbl_name add col_name col_definition (data type, null, default...) primary key first current_first_col_name;
    
    1. 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:

    1. 此时不需要重新声明主键属性primary key,如果添加了则会报错:主键重复;
    2. 如果原有属性中存在auto_increment,修改时需要加上auto_increment,否则auto_increment属性被删除关键字change
        alter table tbl_name change col_name col_name col_definition [first|after col_name]
        #与modify的区别在于列表需要写两次列名,相当于原列名和新列名,所以change也可以用来修改列名
    

    相关文章

      网友评论

          本文标题:mysql-修改表结构

          本文链接:https://www.haomeiwen.com/subject/wxcbuctx.html