温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

mysql数据库表增添字段,删除字段,修改字段的方法

发布时间:2022-07-26 16:56:30 来源:亿速云 阅读:181 作者:iii 栏目:开发技术

这篇文章主要讲解了“mysql数据库表增添字段,删除字段,修改字段的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql数据库表增添字段,删除字段,修改字段的方法”吧!

    修改表指的是修改数据库之后中已经存在的数据表的结构。mysql使用alter table语句修改表。常用的修改表的操作有修改表名、修改字段数据类型或者字段名、增加和删除字段、修改字段的排列位置、更改表的存储引擎、删除表的外键约束等。

    一、mysql修改表名

    语法:

    ALTER TABLE <旧表名> RENAME [to] <新表名>

    上面语句中的to为可选,存在与否不影响运行结果。

    举个栗子:

    test_user_2这个数据表,改名为test_user_two

    首先我们查看下原来的内容;

    mysql> show tables;
    +-------------------+
    | Tables_in_test_db |
    +-------------------+
    | test_dept |
    | test_user |
    | test_user_2 |
    | test_user_3 |
    | test_user_4 |
    | test_user_5 |
    | test_user_6 |
    | test_user_7 |
    | test_user_8 |
    | test_user_9 |
    +-------------------+
    10 rows in set (0.00 sec)
    
    mysql>

    然后我们执行语句:

    mysql> alter table test_user_2 rename test_user_two;
    Query OK, 0 rows affected (0.03 sec)
    
    mysql>

    然后再看下是否修改完毕了;

    mysql> show tables;
    +-------------------+
    | Tables_in_test_db |
    +-------------------+
    | test_dept |
    | test_user |
    | test_user_3 |
    | test_user_4 |
    | test_user_5 |
    | test_user_6 |
    | test_user_7 |
    | test_user_8 |
    | test_user_9 |
    | test_user_two |
    +-------------------+
    10 rows in set (0.00 sec)
    
    mysql>

    注意:修改的只是数据表名,实际上字段和数据内容都没有发生变化。

    二、mysql修改数据的字段类型

    修改字段的数据类型,就是把字段的数据类型转换成另一种数据类型。

    语法:

    alter table <表名> modify <字段名> <数据类型>

    举个栗子:

    修改test_user_two这个表中的money字段的数据类型,由float改为int类型。

    首先看下这个表中的数据结构;

    mysql> desc test_user_two;
    +--------+-------------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +--------+-------------+------+-----+---------+-------+
    | id | int | NO | PRI | NULL | |
    | name | varchar(25) | YES | | NULL | |
    | deptid | int | YES | | NULL | |
    | money | float | YES | | NULL | |
    +--------+-------------+------+-----+---------+-------+
    4 rows in set (0.01 sec)
    
    mysql>

    然后执行如下语句进行修改;

    mysql> alter table test_user_two modify money int;
    Query OK, 0 rows affected (0.09 sec)
    Records: 0 Duplicates: 0 Warnings: 0
    
    mysql>

    修改完毕之后我们再看下test_user_db这个表中的数据结构是否发生变化了。

    mysql> desc test_user_two;
    +--------+-------------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +--------+-------------+------+-----+---------+-------+
    | id | int | NO | PRI | NULL | |
    | name | varchar(25) | YES | | NULL | |
    | deptid | int | YES | | NULL | |
    | money | int | YES | | NULL | |
    +--------+-------------+------+-----+---------+-------+
    4 rows in set (0.00 sec)
    
    mysql>

    三、mysql修改字段名

    语法:

    alter table <表名> change <旧字段名> <新字段名> <新数据类型>;

    举个栗子:

    test_user_two表中的money字段改成howmoney,数据类型为int;

    执行语句:

    mysql> alter table test_user_two change money howmoney int;
    Query OK, 0 rows affected (0.03 sec)
    Records: 0 Duplicates: 0 Warnings: 0
    
    mysql>

    然后我们再看下此时这个test_user_two数据库的数据结构是什么;

    mysql> desc test_user_two;
    +----------+-------------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +----------+-------------+------+-----+---------+-------+
    | id | int | NO | PRI | NULL | |
    | name | varchar(25) | YES | | NULL | |
    | deptid | int | YES | | NULL | |
    | howmoney | int | YES | | NULL | |
    +----------+-------------+------+-----+---------+-------+
    4 rows in set (0.00 sec)
    
    mysql>

    可以看到,已经将字段修改完毕了。

    四、mysql添加字段

    语法:

    alter table <表名> add <新字段名> <数据类型> [约束条件] [first | after 已存在字段名]

    新字段名为需要添加的字段的名称;first为可选参数,其作用是将新添加的字段设置为表的第一个字段;after为可选参数,其作用是将新添加的字段添加到指定的“已存在字段名” 的后面。

    firstafter 已存在字段名用于指定新增字段在表中的位置,如果SQL语句中没有这两个参数,则默认将新添加的字段设置为数据表的最后一列。

    举几个栗子:

    1、添加没有约束性的字段

    在数据表test_user_two中添加一个没有完整性约束的int类型的字段year(入职几年);

    执行sql如下:

    mysql> alter table test_user_two add year int;
    Query OK, 0 rows affected (0.04 sec)
    Records: 0 Duplicates: 0 Warnings: 0
    
    mysql>

    然后我们查看下修改之后的表结构;

    mysql> desc test_user_two;
    +----------+-------------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +----------+-------------+------+-----+---------+-------+
    | id | int | NO | PRI | NULL | |
    | name | varchar(25) | YES | | NULL | |
    | deptid | int | YES | | NULL | |
    | howmoney | int | YES | | NULL | |
    | year | int | YES | | NULL | |
    +----------+-------------+------+-----+---------+-------+
    5 rows in set (0.00 sec)
    
    mysql>

    2、添加一个有约束性的字段

    test_user_two表中添加一个名为year1,数据类型是int,且不可为空的字段;

    执行相关sql语句;

    mysql> alter table test_user_two add year1 int not null;
    Query OK, 0 rows affected (0.02 sec)
    Records: 0 Duplicates: 0 Warnings: 0
    
    mysql>

    看下表结构;

    mysql> desc test_user_two;
    +----------+-------------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +----------+-------------+------+-----+---------+-------+
    | id | int | NO | PRI | NULL | |
    | name | varchar(25) | YES | | NULL | |
    | deptid | int | YES | | NULL | |
    | howmoney | int | YES | | NULL | |
    | year | int | YES | | NULL | |
    | year1 | int | NO | | NULL | |
    +----------+-------------+------+-----+---------+-------+
    6 rows in set (0.00 sec)
    
    mysql>

    3、在表的第一列添加一个字段

    test_user_two数据表第一列添加一个名字year2,数据类型是int的字段。

    执行相关sql语句;

    mysql> alter table test_user_two add year2 int first;
    Query OK, 0 rows affected (0.02 sec)
    Records: 0 Duplicates: 0 Warnings: 0
    
    mysql>

    看下修改之后的表结构是什么;

    mysql> desc test_user_two;
    +----------+-------------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +----------+-------------+------+-----+---------+-------+
    | year2 | int | YES | | NULL | |
    | id | int | NO | PRI | NULL | |
    | name | varchar(25) | YES | | NULL | |
    | deptid | int | YES | | NULL | |
    | howmoney | int | YES | | NULL | |
    | year | int | YES | | NULL | |
    | year1 | int | NO | | NULL | |
    +----------+-------------+------+-----+---------+-------+
    7 rows in set (0.00 sec)
    
    mysql>

    4、在数据表中指定列之后添加一个字段

    test_user_two这个数据库中name字段之后,添加一个名为name2,数据类型是varchar(50)的字段;

    执行sql语句;

    mysql> alter table test_user_two add name2 varchar(50) after name;
    Query OK, 0 rows affected (0.02 sec)
    Records: 0 Duplicates: 0 Warnings: 0
    
    mysql>

    可以再次看下表结构;

    mysql> desc test_user_two;
    +----------+-------------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +----------+-------------+------+-----+---------+-------+
    | year2 | int | YES | | NULL | |
    | id | int | NO | PRI | NULL | |
    | name | varchar(25) | YES | | NULL | |
    | name2 | varchar(50) | YES | | NULL | |
    | deptid | int | YES | | NULL | |
    | howmoney | int | YES | | NULL | |
    | year | int | YES | | NULL | |
    | year1 | int | NO | | NULL | |
    +----------+-------------+------+-----+---------+-------+
    8 rows in set (0.00 sec)
    
    mysql>

    可以看到,每次我们都会对这个表结构进行相关的修改。

    五、mysql删除字段

    语法:

    alter table <表名> drop <字段名>;

    举个栗子;

    比如我们想将test_user_two数据库中刚添加的year2字段删除;

    执行sql语句为:

    看下表结构;

    mysql> desc test_user_two;
    +----------+-------------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +----------+-------------+------+-----+---------+-------+
    | id | int | NO | PRI | NULL | |
    | name | varchar(25) | YES | | NULL | |
    | name2 | varchar(50) | YES | | NULL | |
    | deptid | int | YES | | NULL | |
    | howmoney | int | YES | | NULL | |
    | year | int | YES | | NULL | |
    | year1 | int | NO | | NULL | |
    +----------+-------------+------+-----+---------+-------+
    7 rows in set (0.00 sec)
    
    mysql>

    可以看到已经将名为year2的字段进行删除了。

    六、mysql修改字段的排列位置

    有时候我们会面临修改数据表中某些字段的排列位置,比如说将某一个字段排到第一个,或者是将某个字段后移,看下如何操作。

    语法:

    alter table <表名> modify <字段1> <数据类型> first | after <字段2>;

    “字段1” 指要修改位置的字段;“数据类型” 指 “字段1” 的数据类型;“First” 为可选参数,指将 “字段1” 修改为表的第一个字段;“after 字段2” 指将 “字段1” 插入到 “字段2” 后面。

    举两个栗子;

    1、修改字段为表的第一个字段

    比如我们将test_user_two这个数据表中名为name2的字段,修改成这个对应数据表中第一个字段;

    执行sql语句;

    mysql> alter table test_user_two modify name2 varchar(50) first;
    Query OK, 0 rows affected (0.08 sec)
    Records: 0 Duplicates: 0 Warnings: 0
    
    mysql>

    查看下表结构;

    mysql> desc test_user_two;
    +----------+-------------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +----------+-------------+------+-----+---------+-------+
    | name2 | varchar(50) | YES | | NULL | |
    | id | int | NO | PRI | NULL | |
    | name | varchar(25) | YES | | NULL | |
    | deptid | int | YES | | NULL | |
    | howmoney | int | YES | | NULL | |
    | year | int | YES | | NULL | |
    | year1 | int | NO | | NULL | |
    +----------+-------------+------+-----+---------+-------+
    7 rows in set (0.00 sec)
    
    mysql>

    可以看到我们已经成功将name2这个字段修改成第一个字段了;

    2、修改字段为指定列后面

    比如我们将test_user_two这个表中的name2字段,让他移动到year这个字段后面;

    执行sql语句;

    mysql> alter table test_user_two modify name2 varchar(50) after year;
    Query OK, 0 rows affected (0.06 sec)
    Records: 0 Duplicates: 0 Warnings: 0
    
    mysql>

    看下表结构;

    mysql> desc test_user_two;
    +----------+-------------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +----------+-------------+------+-----+---------+-------+
    | id | int | NO | PRI | NULL | |
    | name | varchar(25) | YES | | NULL | |
    | deptid | int | YES | | NULL | |
    | howmoney | int | YES | | NULL | |
    | year | int | YES | | NULL | |
    | name2 | varchar(50) | YES | | NULL | |
    | year1 | int | NO | | NULL | |
    +----------+-------------+------+-----+---------+-------+
    7 rows in set (0.00 sec)
    
    mysql>

    可以发现,已经将test_user_two这个数据库中的name2字段,移动到了year字段之后。

    七、mysql更改表的存储引擎

    存储引擎是mysql中的数据存储在文件或者内存中时采用的不用技术实现。可以根据自己所需,选择不同的引擎,也可以为每一张表选择不用的存储引擎。可以使用show engines;语句来查看系统支持的存储引擎。

    mysql> show engines;
    +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
    | Engine | Support | Comment | Transactions | XA | Savepoints |
    +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
    | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
    | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
    | CSV | YES | CSV storage engine | NO | NO | NO |
    | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
    | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
    | MyISAM | YES | MyISAM storage engine | NO | NO | NO |
    | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
    | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
    | ARCHIVE | YES | Archive storage engine | NO | NO | NO |
    +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
    9 rows in set (0.00 sec)
    
    mysql>

    更改表的存储引擎的语法:

    alter table <表名> engine=<更改后的存储引擎名>

    感谢各位的阅读,以上就是“mysql数据库表增添字段,删除字段,修改字段的方法”的内容了,经过本文的学习后,相信大家对mysql数据库表增添字段,删除字段,修改字段的方法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI