mysql alter算法_MySQL ALTER命令_mysql alter_添加_删除_修改
MySQL ALTER命令
当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令。
开始本章教程前让我们先创建一张表,表名为:testalter_tbl。
root@host# mysql -u root -p password;
Enterpassword:*******mysql> useCDADATA;
Databasechanged
mysql>create table testalter_tbl-> (
->i INT,
->c CHAR(1)
-> );
QueryOK, 0rows affected(0.05sec)mysql>SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
|i| int(11) |YES| |NULL| |
|c| char(1) |YES| |NULL| |
+-------+---------+------+-----+---------+-------+
2rowsin set (0.00sec)
删除,添加或修改表字段
如下命令使用了 ALTER 命令及 DROP 子句来删除以上创建表的 i 字段:
mysql>ALTER TABLE testalter_tbl DROP i;
如果数据表中只剩余一个字段则无法使用DROP来删除字段。
MySQL 中使用 ADD 子句来想数据表中添加列,如下实例在表 testalter_tbl 中添加 i 字段,并定义数据类型:
mysql>ALTER TABLE testalter_tbl ADD i INT;
执行以上命令后,i 字段会自动添加到数据表字段的末尾。
mysql>SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
|c| char(1) |YES| |NULL| |
|i| int(11) |YES| |NULL| |
+-------+---------+------+-----+---------+-------+
2rowsin set (0.00sec)
如果你需要指定新增字段的位置,可以使用MySQL提供的关键字 FIRST (设定位第一列), AFTER 字段名(设定位于某个字段之后)。
尝试以下 ALTER TABLE 语句, 在执行成功后,使用 SHOW COLUMNS 查看表结构的变化:
ALTER TABLE testalter_tbl DROP i;ALTER TABLE testalter_tbl ADD i INT FIRST;ALTER TABLE testalter_tbl DROP i;ALTER TABLE testalter_tbl ADD i INT AFTER c;
FIRST 和 AFTER 关键字只占用于 ADD 子句,所以如果你想重置数据表字段的位置就需要先使用 DROP 删除字段然后使用 ADD 来添加字段并设置位置。
修改字段类型及名称
如果需要修改字段类型及名称, 你可以在ALTER命令中使用 MODIFY 或 CHANGE 子句 。
例如,把字段 c 的类型从 CHAR(1) 改为 CHAR(10),可以执行以下命令:
mysql>ALTER TABLE testalter_tbl MODIFY c CHAR(10);
使用 CHANGE 子句, 语法有很大的不同。 在 CHANGE 关键字之后,紧跟着的是你要修改的字段名,然后指定新字段的类型及名称。尝试如下实例:
mysql>ALTER TABLE testalter_tbl CHANGE i j BIGINT;
mysql>ALTER TABLE testalter_tbl CHANGE j j INT;
ALTER TABLE 对 Null 值和默认值的影响
当你修改字段时,你可以指定是否包含只或者是否设置默认值。
以下实例,指定字段 j 为 NOT NULL 且默认值为100 。
mysql>ALTER TABLE testalter_tbl->MODIFY j BIGINT NOT NULL DEFAULT100;
如果你不设置默认值,MySQL会自动设置该字段默认为 NULL。
修改字段默认值
你可以使用 ALTER 来修改字段的默认值,尝试以下实例:
mysql>ALTER TABLE testalter_tbl ALTER i SET DEFAULT1000;mysql>SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
|c| char(1) |YES| |NULL| |
|i| int(11) |YES| | 1000 | |
+-------+---------+------+-----+---------+-------+
2rowsin set (0.00sec)
你也可以使用 ALTER 命令及 DROP子句来删除字段的默认值,如下实例:
mysql>ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;mysql>SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
|c| char(1) |YES| |NULL| |
|i| int(11) |YES| |NULL| |
+-------+---------+------+-----+---------+-------+
2rowsin set (0.00sec)
ChangingaTable Type:
修改数据表类型,可以使用 ALTER 命令及 TYPE 子句来完成。尝试以下实例,我们将表 testalter_tbl 的类型修改为 MYISAM :
注意:查看数据表类型可以使用 SHOW TABLE STATUS 语句。
mysql>ALTER TABLE testalter_tbl TYPE=MYISAM;mysql>SHOW TABLE STATUS LIKE'testalter_tbl'\G*************************** 1.row****************
Name:testalter_tblType: MyISAM
Row_format: Fixed
Rows: 0
Avg_row_length: 0
Data_length: 0
Max_data_length: 25769803775
Index_length: 1024
Data_free: 0
Auto_increment:NULLCreate_time: 2007-06-03 08:04:36
Update_time: 2007-06-03 08:04:36
Check_time:NULLCreate_options:
Comment:
1rowin set (0.00sec)
修改表名
如果需要修改数据表的名称,可以在 ALTER TABLE 语句中使用 RENAME 子句来实现。
尝试以下实例将数据表 testalter_tbl 重命名为 alter_tbl:
mysql>ALTER TABLE testalter_tbl RENAME TO alter_tbl;
ALTER 命令还可以用来创建及删除MySQL数据表的索引,该功能我们会在接下来的章节中介绍。
喜欢 (1)or分享 (0)
mysql alter算法_MySQL ALTER命令_mysql alter_添加_删除_修改相关推荐
- mysql修改表结构 删除字段_mysql更改表结构:添加、删除、修改字段、调整字段顺序...
添加字段: alter table `user_movement_log` Add column GatewayId int not null default 0 AFTER `Regionid` ( ...
- mysql增删改查的命令_MySql增删改查命令
5.1 创建数据表 命令:create table ( [,.. ]); 例如,建立一个名为MyClass的表, 字段名 数字类型 数据宽度 是否为空 是否主键 自动增加 默认值 id int 4 否 ...
- mysql的-x是什么命令_Mysql常用命令
7.1 一个建库和建表的实例1 drop database if exists school; //如果存在SCHOOL则删除 create database school; //建立库SCHOOL ...
- MySQL中外键的定义、作用、添加和删除
1 简介 在实际开发的项目中,一个健壮数据库中的数据一定有很好的参照完整性.例如学生档案和成绩单两张表,如果成绩单中有张三的成绩,学生档案中张三的档案却被删除了,这样就会产生垃圾数据或者错误数据.为了 ...
- 【k8s】kubectl label命令(对node添加、删除label)
文章目录 添加 查询 删除 修改 添加 语法: kubectl label nodes kube-node label_name=label_value 样例: 先查看node列表 [root]$ k ...
- MySQL与优化有关的命令_MySQL优化全攻略-相关数据库命令
MySQL优化全攻略-相关数据库命令 更新时间:2006年11月25日 00:00:00 作者: 接下来我们要讨论的是数据库性能优化的另一方面,即运用数据库服务器内建的工具辅助性能分析和优化. ▲ ...
- mysql可能锁的表命令_mysql 默许是表级锁一些不太常用命令
mysql 默认是表级锁一些不太常用命令 1,mysql默认的是表级锁.如果是启用InnoDB存储引擎那么该数据库支持行级锁. 2,查看数据库是否支持innodb的命令 SHOW variables ...
- 查看mysql主从复制是否成功的命令_mysql主从复制 - hong查理的个人空间 - OSCHINA - 中文开源技术交流社区...
1.配置 my.cof 服务器A(192.168.1.2)配置如下 log-bin = mysql-bin server-id = 1 expire-logs-days = 7#日志设置最高7天 ...
- mysql分库分表配置命令_mysql分库分表中间件Heisenberg
"trans_shard"> "trans_online, trans_content, trans_tb "dataNode="transDN ...
最新文章
- Redis在windows实现将数据缓存起来定时更新读取
- Sql2000命名中的’_’好象会引发问题
- IDE-Android Studio -FAQ-使用习惯(不断更新 欢迎留言)
- 每天一道LeetCode-----找到一个字符串在另一个字符串出现的位置,字符串内部顺序无要求
- 程序员35岁真的是分水岭吗?小白也能看明白
- TRex 学习(3) -- stateful ( detail )
- Codeforces Round #173 (Div. 2) E. Sausage Maximization —— 字典树 + 前缀和
- 为什么在java中不能创建泛型数组
- 私信(聊天)功能 ajax长轮询实现
- 速腾(RoboSense)16线激光雷达调试出点云图(Ubuntu1804和windows系统都已经显示点云),包含各种遇见的坑【避坑指南】{[driver][socket]Rslidar poll}
- 快速实现ARM和DSP的通信和协同工作
- pragma HLS interface 端口综合
- 郑大计算机专业英语01章,郑州大学远程教育 《大学英语II》第01章在线测试
- Heiro试用失败记
- loj 3090 「BJOI2019」勘破神机 - 数学
- VC6/VS6定制应用程序按键与贴图错位问题的排查及解决
- 根据开始时间与结束时间,计算季度
- 高等代数_第6章:二次型·矩阵的合同
- pytorch中用plt画图需要转换为numpy格式
- 东软python培训班
热门文章
- Sql2008R2 日志无法收缩解决方案
- bindService初步了解
- android 用命令行打包生成 apk
- 不能在构造函数中接收通过QueryString传递的数值
- InnoDB存储引擎对MVCC的实现
- Qt Creator如何恢复默认布局
- 阿联酋宣布成立全球首所人工智能大学
- #pragma pack(1)的作用
- import java.util.calendar_Java.util.Calendar.setTimeInMillis()
- feignclient url_Spring Cloud Feign 请求动态URL