当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令。

1)修改表名:表名可以在数据库中唯一标识一个table

命令格式:ALTER TABLE 旧名 RENAME 新名;

mysql> alter table course rename courses;
Query OK, rows affected (0.00 sec)

2)修改属性的数据类型

命令格式:ALTER TABLE 表名 MODIFY 属性名 数据类型 [完整性约束条件]

mysql> describe num;
+--------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------+------+-----+---------+----------------+
| num_id | int() | NO | PRI | NULL | auto_increment |
| stu_id | int() | NO | PRI | NULL | |
| name | int() | YES | | NULL | |
+--------+---------+------+-----+---------+----------------+
rows in set (0.00 sec) mysql> alter table num modify name char(20); //改变属性的数据类型
Query OK, rows affected (0.05 sec)
Records: Duplicates: Warnings: mysql> describe num;
+--------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+----------------+
| num_id | int() | NO | PRI | NULL | auto_increment |
| stu_id | int() | NO | PRI | NULL | |
| name | char() | YES | | NULL | |
+--------+----------+------+-----+---------+----------------+
rows in set (0.00 sec)
mysql> alter table num modify sex char() not null default 'male'; //改变属性的完整性约束条件
Query OK, rows affected (0.08 sec)
Records: Duplicates: Warnings: mysql> describe num;
+--------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+----------------+
| num_id | int() | NO | PRI | NULL | auto_increment |
| stu_id | int() | NO | PRI | NULL | |
| name | char() | NO | | male | |
+--------+----------+------+-----+---------+----------------+
rows in set (0.00 sec)

3)修改属性的默认值

命令格式1:ALTER TABLE 表名 MODIFY 属性名 数据类型 DEFAULT value;

命令格式2:ALTER TABLE 表名 ALTER 属性名 SET DEFAULT value

mysql> describe num;
+--------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+----------------+
| num_id | int() | NO | PRI | NULL | auto_increment |
| stu_id | int() | NO | PRI | NULL | |
| sex | char() | NO | | male | |
+--------+----------+------+-----+---------+----------------+
rows in set (0.00 sec) mysql> alter table num modify sex char() default 'female'; //修改属性的默认值
Query OK, rows affected (0.03 sec)
Records: Duplicates: Warnings: mysql> describe num;
+--------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+----------------+
| num_id | int() | NO | PRI | NULL | auto_increment |
| stu_id | int() | NO | PRI | NULL | |
| sex | char() | YES | | female | |
+--------+----------+------+-----+---------+----------------+
rows in set (0.00 sec)

注意:上述示例说明,在对属性做更改使,如果不指定NOT NULL参数,命令会按照“允许为空”的操作进行设置;

而且,若不指定DEFAULT参数,MySQL会自动设置该字段默认为 NULL,即便执行命令之前,其有非NULL默认值。

4)修改字段名

命令格式:ALTER TABLE 表名 CHANGE 属性名 新属性名 新数据类型

mysql> describe num;
+--------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+----------------+
| num_id | int() | NO | PRI | NULL | auto_increment |
| stu_id | int() | NO | PRI | NULL | |
| name | char() | YES | | NULL | |
+--------+----------+------+-----+---------+----------------+
rows in set (0.00 sec) mysql> alter table num change name sex char(); //修改属性名称
Query OK, rows affected (0.04 sec)
Records: Duplicates: Warnings: mysql> describe num;
+--------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+----------------+
| num_id | int() | NO | PRI | NULL | auto_increment |
| stu_id | int() | NO | PRI | NULL | |
| sex | char() | YES | | NULL | |
+--------+----------+------+-----+---------+----------------+
rows in set (0.00 sec)

5)增加字段

命令格式:alter table 表名 ADD 属性名1 [完整性约束条件] [FIRST | AFTER 属性名2]

其中,FIRST参数表示将新加的属性设置为该表的第一个字段;AFTER 属性名2表示将新加的字段置于属性名2(已存在)之后。

mysql> describe num;
+--------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+----------------+
| num_id | int() | NO | PRI | NULL | auto_increment |
| stu_id | int() | NO | PRI | NULL | |
| sex | char() | YES | | NULL | |
+--------+----------+------+-----+---------+----------------+
rows in set (0.00 sec) mysql> alter table num add name char() NOT NULL FIRST; //新增一个属性
Query OK, rows affected (0.05 sec)
Records: Duplicates: Warnings: mysql> describe num;
+--------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+----------------+
| name | char() | NO | | NULL | |
| num_id | int() | NO | PRI | NULL | auto_increment |
| stu_id | int() | NO | PRI | NULL | |
| sex | char() | YES | | NULL | |
+--------+----------+------+-----+---------+----------------+
rows in set (0.00 sec)

6)删除字段

命令格式:ALTER TABLE 表名 DROP 属性名;

mysql> describe num;
+--------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+----------------+
| name | char() | NO | | NULL | |
| num_id | int() | NO | PRI | NULL | auto_increment |
| stu_id | int() | NO | PRI | NULL | |
| sex | char() | YES | | NULL | |
+--------+----------+------+-----+---------+----------------+
rows in set (0.00 sec) mysql> alter table num drop name; //删除属性name
Query OK, rows affected (0.09 sec)
Records: Duplicates: Warnings: mysql> describe num;
+--------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+----------------+
| num_id | int() | NO | PRI | NULL | auto_increment |
| stu_id | int() | NO | PRI | NULL | |
| sex | char() | YES | | NULL | |
+--------+----------+------+-----+---------+----------------+
rows in set (0.00 sec)

MySQL_ALTER命令的更多相关文章

  1. Cmder--Windows下命令行利器

    cmder cmder是一个增强型命令行工具,不仅可以使用windows下的所有命令,更爽的是可以使用linux的命令,shell命令. 安装包 安装包链接 下载后,直接解压即用. 修改命令提示符λ为 ...

  2. 【每日一linux命令4】常用参数:

     下面所列的是常见的参数(选项)义: --help,-h                              显示帮助信息 --version,-V                        ...

  3. .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门

    2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文章,原因是.NET Core的入门门槛相当高, ...

  4. MVVM模式解析和在WPF中的实现(三)命令绑定

    MVVM模式解析和在WPF中的实现(三) 命令绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...

  5. SQLServer执行命令出现“目录无效的提示”

    异常处理汇总-数据库系列  http://www.cnblogs.com/dunitian/p/4522990.html 一般都是清理垃圾清理过头了,把不该删的目录删了 网上说法: 问题描述: 1.s ...

  6. SQLServer文件收缩-图形化+命令

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 收缩前 图形化演示: 不仅仅可以收缩日记文件,数据库文件也是可以收缩的,只不过日记收缩比 ...

  7. 让 windows 下的命令行程序 cmd.exe 用起来更顺手

    在 Windows 下使用 Larave 框架做开发,从 Composer 到 artisan 总是避免不了和 cmd.exe 打交道,系统默认的命令行界面却是不怎么好看,且每行显示的字符数是做了限制 ...

  8. [版本控制之道] Git 常用的命令总结(欢迎收藏备用)

    坚持每天学习,坚持每天复习,技术永远学不完,自己永远要前进 总结日常开发生产中常用的Git版本控制命令 ------------------------------main-------------- ...

  9. git 命令

    切换仓库地址: git remote set-url origin xxx.git切换分支:git checkout name撤销修改:git checkout -- file删除文件:git rm  ...

随机推荐

  1. cadence分列元件原理图库的设计

  2. swust oj 983

    利用二叉树中序及后序遍历确定该二叉树的先序序列 1000(ms) 10000(kb) 2606 / 4908 已知二叉树的中序和先序遍历可以唯一确定后序遍历.已知中序和后序遍历可以唯一确定先序遍历,但 ...

  3. ASP.NET JS调用WebService——简单例子

    一.创建好WebService 二.编辑页面与js 三. 运行页面并点击按钮,结果如下 简单调用吧!

  4. ELK之使用packetbeat分析网络包流量

    介绍 packbeat是一个开源的实时网络抓包与分析框架,内置了很多常见的协议捕获及解析,如HTTP.MySQL.Redis等.在实际使用中,通常和Elasticsearch以及kibana联合使用, ...

  5. 已知两点经纬度(百度地图),用js求解两点之间的角度

    采用的网址:https://my.oschina.net/boogoogle/blog/740478

  6. C和C++字符串处理整理

    在刷leetcode题目的过程中,发现自己对于c和c++字符串的处理并不是很拿手,处理起来比较费劲,而且,算法题似乎很中意字符串的处理,有很多题目都涉及到它.字符串处理比较基础,但是很重要,因此,整理 ...

  7. python练习题-day23

    1.人狗大战(组合) class Person: def __init__(self,name,hp,aggr,sex,money): self.name=name self.hp=hp self.a ...

  8. (4.11)mysql备份还原——mysql闪回技术(基于binlog)

    0.闪回技术与工具简介 mysql闪回工具比较流行三大类: [0.1]官方的mysqlbinlog:支持数据库在线/离线,用脚本处理binlog的输出,转化成对应SQL再执行.通用性不好,对正则.se ...

  9. log4j日志输出框架

    什么是log4j框架呢? log4j是一个日志输出框架,用于输出日志的.比如MyBatis的日志就是通过log4j输出的,主流框架都是log4j输出的,Spring框架 也可以通过log4j输出日志! ...

  10. 013-mac重做系统后的软件安装

    一.系统设置 1.屏幕设置:系统偏好设置→显示器→排列,多个显示器可以排列组合 2.touch bar功能键设置:系统偏好设置→键盘→键盘,触控栏设置 F1 3.程序坞[dock]设置:系统偏好设置→ ...