mysql创建table w3c_MySQL ALTER命令

MySQL ALTER命令

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

开始本章教程前让我们先创建一张表,表名为:testalter_tbl。 root@host# mysql -u root -p password;

Enter password:

mysql> use W3CSCHOOL;

Database changed

mysql> create table testalter_tbl

-> (

-> i INT,

-> c CHAR(1)

-> );

Query OK, 0 rows affected (0.05 sec)

mysql> SHOW COLUMNS FROM testalter_tbl;

+-------+---------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+---------+------+-----+---------+-------+

| i | int(11) | YES | | NULL | |

| c | char(1) | YES | | NULL | |

+-------+---------+------+-----+---------+-------+

2 rows in set (0.00 sec)

删除,添加或修改表字段

如下命令使用了 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 | |

+-------+---------+------+-----+---------+-------+

2 rows in set (0.00 sec)

如果你需要指定新增字段的位置,可以使用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;如果你现在想把字段 j 从 BIGINT 修改为 INT,SQL语句如下:

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 DEFAULT 100;

如果你不设置默认值,MySQL会自动设置该字段默认为 NULL。

修改字段默认值

你可以使用 ALTER 来修改字段的默认值,尝试以下实例: mysql> ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;

mysql> SHOW COLUMNS FROM testalter_tbl;

+-------+---------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+---------+------+-----+---------+-------+

| c | char(1) | YES | | NULL | |

| i | int(11) | YES | | 1000 | |

+-------+---------+------+-----+---------+-------+

2 rows in set (0.00 sec)

你也可以使用 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 | |

+-------+---------+------+-----+---------+-------+

2 rows in set (0.00 sec)

Changing a Table 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_tbl

Type: 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: NULL

Create_time: 2007-06-03 08:04:36

Update_time: 2007-06-03 08:04:36

Check_time: NULL

Create_options:

Comment:

1 row in set (0.00 sec)

修改表名

如果需要修改数据表的名称,可以在 ALTER TABLE 语句中使用 RENAME 子句来实现。

尝试以下实例将数据表 testalter_tbl 重命名为 alter_tbl: mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;

ALTER 命令还可以用来创建及删除MySQL数据表的索引,该功能我们会在接下来的章节中介绍。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/498410.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

这几家公司有个梦想:开发AI操作系统,让外行也成为人工智能大师

来源:科技行者 概要:未来几年人工智能会如何发展?除了阿尔法狗令人叹为观止的表现,人工智能确实也正在改变整个行业。但有一点我们是需要注意的,有必要让AI从总体上变得更加易于使用。 严格的说,Scot Barto…

mysql耦合_内聚与耦合

简单理解一下内聚和耦合。什么是模块模块就是从逻辑上将系统分解为更细微的部分,分而治之。复杂问题因为复杂性的问题,比较难解决,但是可以将复杂问题拆解为若干简单问题,逐个击破地解决这些简单问题,最后实现解决复杂…

mysql3.51 密码修改_mysql修改密码

刚初始化的数据库要做的步骤1 为root设置了密码2 删除默认用户3 删除默认的test库修改密码的方法1为管理员设置密码(开始没密码)mysqladmin -uroot password 12qwaszx;2 修改密码方法一: mysqladmin管理工具 (推荐使用)mysqladmin -uroot -p12qwaszx password c110123;注意有空…

Google CEO Sundar Pichai :“谷歌最大的威胁就是自身的成功”

作者:Dude 概要:10月9日,低调的皮柴哥接受了英国卫报的访问,在访谈期间,他分享了谷歌在人工智能上发展,也表达了对谷歌近年来发展的隐忧。 10月9日,低调的皮柴哥接受了英国卫报的访问&#xff0…

python自动客服排班_使用或工具的护士排班问题,在某些日子增加不同的轮班时间...

我正在从here修改代码,我希望能够为某一天添加不同长度的轮班(例如,我希望星期五/第4天只有2个轮班)。我的代码总是以错误代码结尾。我相信这是由于我设定的一些限制的内部问题。在我在类似的程序上看到了一些关于StackOverflow的帖子,但是找…

国防科技大学教授:殷建平——计算机科学理论的过去、现在与未来

来源:图灵人工智能殷建平 教授,博士生导师,国防科学技术大学计算机系主任。研究方向有:模式识别与人工智能、网络算法与信息安全。享受国务院政府特殊津贴。2015年被评为“万人计划”国家级教学名师。2009年被评为“全国优秀教师”…

cmd上打开mysql_cmd连接mysql的方法

连接:mysql -h主机地址 -u用户名 -p用户密码 (注:u与root可以不用加空格,其它也一样)断开:exit (回车)创建授权:grant select on 数据库.* to 用户名登录主机 identified by \"密码\"修改密码:my…

《自然》杂志:关于人类未来的工作,有三个最紧迫的问题

来源:36氪 概要:机器学习会淘汰工人吗?零工经济(Gig Economy)会增加对工人的剥削吗?技能的差距能够弥补吗? 机器学习会淘汰工人吗?零工经济(Gig Economy)会增…

java 冒泡排序的三种写法_冒泡排序的三种实现(Java)

冒泡排序是非常好理解的,以从小到大排序为例,每一轮排序就找出未排序序列中最大值放在最后。设数组的长度为N:(1)比较前后相邻的二个数据,如果前面数据大于后面的数据,就将这二个数据交换。(2)这样对数组的第0个数据到…

有史以来影响世界的颠覆性技术 | 未来的高附加值颠覆性技术产业

来源:DeepTech深科技(ID:mit-tr) 概要:没有工具,人类就是一个脆弱的物种,没有任何人种可以手无寸铁面对自然。技术伴随人类成长,从野蛮走向文明。人类历史就是一部技术史。 人类发展…

redirect java 配置_Java从后台重定向(redirect)到另一个项目的方法

(1)通过ModelAndView跳转RequestMapping("alipayforward")public ModelAndView alipayforward(HttpServletRequest req, HttpServletResponse resp) throwsException {String contNoreq.getParameter("contNo");logger.info("访问/downloadRequestEle…

一文详解脑科学研究与产业发展方向

来源:神经科技、脑计划 概要:大脑是人体最复杂的器官,破译大脑运转密码、揭开生命之谜,是令无数科学家殚精竭虑的艰难课题。脑科学已成为21世纪最前沿的研究领域,尤其与信息科学进行交叉研究已成为脑科学发展的一个重要…

ef生成mysql字段注释_EFcore+MySql 数据迁移的时候,怎么给表结构加注释?

前言:CodeFirst运用的场景比较少,不代表CodeFirst不好,也不能和DbFirst去作比较,本来就是两个东西。吐槽:MySql.Data.EntityFrameworkCore 作为Oracle官方维护的组件,居然对EF很多API不支持或者无效&#x…

10秒一部电影,全球首个5G数据连接完成

作者:李赓 概要:2017年10月17日、也就是上周二,高通在香港高调宣布——其面向移动终端的5G调制解调器芯片组,骁龙X50 5G调制解调器芯片组完成了全球首个5G连接,同时实现了千兆级速率并在28GHz毫米波频段上的数据连接。…

idea 不打开文件提示错误_解决IDEA误删out目录下的文件导致404无法访问的问题

前言有时候IDEA下写Web项目时可能会遇到如下问题:误删out目录下的文件导致开启服务器后无法访问页面的问题新增加一个页面或添加一张图片,在项目编译运行后,未能自动更新到out\artifacts\目录下,从而导致页面无法访问,或者图片未能…

华为生态链的全方位解读

来源: 本翼资本CapitalWings 概要:华为作为目前国内ICT行业的融合性创新龙头企业,其多年经营探索的经营模式和宝贵经验使得其成为传统制造业转型的标杆,而对于新兴企业,能够越过坎坷的探索之路,直接嫁接华…

java jvm对象_Java对象在JVM中长啥样

前言Java 是门面向对象的开发语言,那么我们自己编写的 Java 类生成的对象是什么样的?它肯定保存在虚拟机的内存中,但它以怎样的结构来保存的呢?带着疑问往下看看。关于KlassJava 层的开发可能不太熟悉 Klass,但肯定熟悉…

洪小文:以科学的方式赤裸裸地剖析人工智能

来源: 微软研究院AI头条 概要:要想在未来实现人工智能这项“新”技术的最大化利用,必须清楚认识到人工智能到底是什么,过去我们做了什么,今天能做什么,未来又能有什么新的发展可能。 近两年来,人…

java ee ide 添加spring,如何在Eclipse IDE项目文件夹中为spring添加jar文件

I am going to start MVC with Spring framework, but I am unable to get jar file of spring framework .I have tried in help menu>install new software>add new in Eclipse IDE but I failed. Can anyone please guide me ?解决方案You can try download STS (Spr…

人工智能如何驱动实体经济?六大领域展望

来源:腾讯研究院 概要:科技进步正在成为推进经济发展的重要推动力,对中国经济发展的贡献率已经上升到56.2%。面对正在兴起的人工智能浪潮,如何占据行业发展制高点,如何促进与实体经济深度融合,形成新增长点…