mysql数据库表增添字段,删除字段,修改字段的排列等操作

 更新时间:2022年07月26日 11:53:29   作者:公号运维家​​​​​​​  
这篇文章主要介绍了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​​为可选参数,其作用是将新添加的字段添加到指定的“已存在字段名” 的后面。

​first​​​或​​after 已存在字段名​​​用于指定新增字段在表中的位置,如果​​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字段操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql回表查询是什么,回表查询的使用

    mysql回表查询是什么,回表查询的使用

    这篇文章主要介绍了mysql回表查询是什么,回表查询的使用方式,具有很好的参考价值,希望对大家有所帮助。
    2022-11-11
  • mysql脏页是什么

    mysql脏页是什么

    本文主要介绍了什么是mysql脏页,为什么会出现脏页,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • mysql条件判断函数的具体使用

    mysql条件判断函数的具体使用

    本文主要介绍了mysql条件判断函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • MySQL 5.6 如何更改安全的处理密码探讨

    MySQL 5.6 如何更改安全的处理密码探讨

    MySQL 5.6将会自动的在日志中隐藏密码信息,接下来为你详细介绍下MySQL 5.6 如何更安全的处理密码,感兴趣的你可以参考下哈,希望可以帮助到你
    2013-03-03
  • 快速修复损坏的MySQL数据库

    快速修复损坏的MySQL数据库

    在长时间使用 MySQL 后,数据库可能会出现一些问题。大多数问题可以通过简单的操作进行快速修复。下面介绍两种快速检修 MySQL 数据库的方法。
    2011-06-06
  • 带你5分钟读懂MySQL字符集设置

    带你5分钟读懂MySQL字符集设置

    本文详细介绍了mysql字符集、字符序的概念与联系,给大家分享了多种方式查看MYSQL支持的字符集。具体内容详情大家参考下本文
    2018-01-01
  • CentOS 7中升级MySQL 5.7.23的坑与解决方法

    CentOS 7中升级MySQL 5.7.23的坑与解决方法

    我们在安装升级的时候会遇到一些问题,不过可能每个人遇到的问题不一样,多找找才能解决问题哟,下面这篇文章主要给大家介绍了关于在CentOS 7中升级MySQL 5.7.23遇到的一个坑与解决方法,需要的朋友可以参考下
    2018-10-10
  • django2.2版本连接mysql数据库的方法

    django2.2版本连接mysql数据库的方法

    这篇文章主要介绍了django2.2版本如何连接mysql数据库,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • MySQL多表关联on和where速度对比实测看谁更快

    MySQL多表关联on和where速度对比实测看谁更快

    这篇文章主要介绍了MySQL多表关联on和where速度对比实测看谁更快问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 教你如何在Mac上安装mysql数据库

    教你如何在Mac上安装mysql数据库

    本文给大家详细介绍了如何在Mac上安装mysql数据库的方法,非常的细致,有需要的小伙伴可以参考下
    2018-05-05

最新评论