在 MySQL 中可以使用 ALTER TABLE 语句来改变原有表的结构,例如增加或删减列、更改原有字段类型、设置或删除默认值、重新命名列或表等。
修改表指的是修改数据库中已经存在的数据表的结构。MySQL使用ALTER TABLE语句修改表结构。常用的修改表的操作有增加字段、删除字段、修改字段名或字段类型或字段位置或字段默认值、修改表名等。
常用的语法格式如下:
ALTER TALE <表名> [修改选项];
修改选项的语法格式如下:
{ ADD [COLUMN] <列名> <类型>
| CHANGE [COLUMN] <旧列名> <新列名> <新列类型>
| ALTER [COLUMN] <列名> { SET DEFAULT <默认值> | DROP DEFAULT }
| MODIFY [COLUMN] <列名> <类型>
| DROP [COLUMN] <列名>
| RENAME TO <新表名> }
语法格式如下:
ALTER TABLE <表名> ADD [COLUMN] <新字段名> <数据类型> [约束条件] [FIRST|AFTER 已存在的字段名];
【实例1】在教师表teacher中添加education字段,字段类型为varchar(10)。
ALTER TABLE teacher ADD education VARCHAR(10);

【实例2】在教师表teacher中添加beizhu字段在sex字段后面,字段类型为varchar(20)。
ALTER TABLE teacher ADD beizhu VARCHAR(20) AFTER sex;

语法格式如下:
ALTER TABLE <表名> DROP [COLUMN] <字段名>;
【实例3】将教师表teacher中beizhu字段删除。
ALTER TABLE teacher DROP beizhu;

语法格式如下:
ALTER TABLE <表名> CHANGE [COLUMN] <旧字段名> <新字段名> <新数据类型>;
【实例4】将学生表student的telephone字段名字改为phone,同时字段类型改为varchar(20)。
ALTER TABLE student CHANGE telephone phone VARCHAR(20);

语法格式如下:
ALTER TABLE <表名> MODIFY [COLUMN] <列名> <类型> [约束条件] [FIRST|AFTER 列名];
或
ALTER TABLE <表名> CHANGE [COLUMN] <列名> <列名> <类型> [约束条件] [FIRST|AFTER 列名];
【实例5】将学生表student的address字段的字段长度改为100。
ALTER TABLE student MODIFY address VARCHAR(100);
或
ALTER TABLE student CHANGE address address VARCHAR(100);

语法格式如下:
ALTER TABLE <表名> MODIFY [COLUMN] <列名> <类型> {FIRST|AFTER 列名};
或
ALTER TABLE <表名> CHANGE [COLUMN] <列名> <列名> <类型> {FIRST|AFTER 列名};
【实例6】将教师表teacher中education字段修改为表的第一个字段。
ALTER TABLE teacher MODIFY education VARCHAR(10) FIRST;
或
ALTER TABLE teacher CHANGE education education VARCHAR(10) FIRST;

【实例7】将教师表teacher中education字段修改为profession字段后字段。
ALTER TABLE teacher MODIFY education VARCHAR(10) AFTER profession;
或
ALTER TABLE teacher CHANGE education education VARCHAR(10) AFTER profession;

语法格式如下:
ALTER TABLE <表名> ALTER [COLUMN] <列名> { SET DEFAULT <默认值> | DROP DEFAULT };
【实例8】为教师表teacher中sex字段设置默认值,默认值为男。
ALTER TABLE teacher ALTER sex SET DEFAULT '男';

语法格式如下:
ALTER TABLE <旧表名> RENAME [TO] <新表名>;
【实例9】修改教师表teacher的表名为teachers。
ALTER TABLE teacher RENAME teachers;

我注意到类定义,如果我打开classMyClass,并在不覆盖的情况下添加一些东西我仍然得到了之前定义的原始方法。添加的新语句扩充了现有语句。但是对于方法定义,我仍然想要与类定义相同的行为,但是当我打开defmy_method时似乎,def中的现有语句和end被覆盖了,我需要重写一遍。那么有什么方法可以使方法定义的行为与定义相同,类似于super,但不一定是子类? 最佳答案 我想您正在寻找alias_method:classAalias_method:old_func,:funcdeffuncold_func#similartoca
文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
在添加一些空格以使代码更具可读性时(与上面的代码对齐),我遇到了这个:classCdefx42endendm=C.new现在这将给出“错误数量的参数”:m.x*m.x这将给出“语法错误,意外的tSTAR,期待$end”:2/m.x*m.x这里的解析器到底发生了什么?我使用Ruby1.9.2和2.1.5进行了测试。 最佳答案 *用于运算符(42*42)和参数解包(myfun*[42,42])。当你这样做时:m.x*m.x2/m.x*m.xRuby将此解释为参数解包,而不是*运算符(即乘法)。如果您不熟悉它,参数解包(有时也称为“spl
我想从then子句中访问case语句表达式,即food="cheese"casefoodwhen"dip"then"carrotsticks"when"cheese"then"#{expr}crackers"else"mayo"end在这种情况下,expr是食物的当前值(value)。在这种情况下,我知道,我可以简单地访问变量food,但是在某些情况下,该值可能无法再访问(array.shift等)。除了将expr移出到局部变量然后访问它之外,是否有直接访问caseexpr值的方法?罗亚附注我知道这个具体示例很简单,只是一个示例场景。 最佳答案
如何在Ruby的if语句中检查bash命令的返回值(true/false)。我想要这样的东西,if("/usr/bin/fswscell>/dev/null2>&1")has_afs="true"elsehas_afs="false"end它会提示以下错误含义,它总是返回true。(irb):5:warning:stringliteralincondition正确的语法是什么?更新:/usr/bin/fswscell寻找afs安装和运行状态。它会抛出这样的字符串,Thisworkstationbelongstocell如果afs没有运行,命令以状态1退出 最
我看到其他人也遇到过类似的问题,但没有一个解决方案对我有用。0.3.14gem与其他gem文件一起存在。我已经完全按照此处指示完成了所有操作:https://github.com/brianmario/mysql2.我仍然得到以下信息。我不知道为什么安装程序指示它找不到include目录,因为我已经检查过它存在。thread.h文件存在,但不在ruby目录中。相反,它在这里:C:\RailsInstaller\DevKit\lib\perl5\5.8\msys\CORE\我正在运行Windows7并尝试在Aptana3中构建我的Rails项目。我的Ruby是1.9.3。$gemin
我最近与一位同事讨论了以下Ruby语法:value=ifa==0"foo"elsifa>42"bar"else"fizz"end我个人并没有看到太多这种逻辑,但我的同事指出,这实际上是一种相当普遍的Rubyism。我试着用谷歌搜索这个主题,但没有找到任何文章、页面或SO问题来讨论它,这让我相信这可能是一种非常实际的技术。然而,另一位同事发现语法令人困惑,而是将上面的逻辑写成这样:ifa==0value="foo"elsifa>42value="bar"elsevalue="fizz"end缺点是value=的重复声明和隐式elsenil的丢失,如果我们想使用它的话。这也感觉它与Ruby
我已经开始使用mysql2gem。我试图弄清楚一些基本的事情——其中之一是如何明确地执行事务(对于批处理操作,比如多个INSERT/UPDATE查询)。在旧的ruby-mysql中,这是我的方法:client=Mysql.real_connect(...)inserts=["INSERTINTO...","UPDATE..WHEREid=..",#etc]client.autocommit(false)inserts.eachdo|ins|beginclient.query(ins)rescue#handleerrorsorabortentirelyendendclient.commi
这段代码没有像我预期的那样执行:casewhen->{false}then"why?"else"ThisiswhatIexpect"end#=>"why?"这也不是casewhen->(x){false}then"why?"else"ThisiswhatIexpect"end#=>"why?"第一个then子句在两种情况下都被执行,这意味着我提供给when子句的lambda没有被调用。我知道无论when子句的主题是什么,都应该调用大小写相等运算符===。我想知道当没有为case提供参数时,===的另一边会发生什么。我在想它可能是nil,但它不可能是:->{false}===nil#=>