首页 理论教育 MySQL数据库表结构修改方法

MySQL数据库表结构修改方法

时间:2023-11-22 理论教育 版权反馈
【摘要】:ALTER TABLE用于更改原有的表结构。ALTER TABLE语句中的修改子句可以包含以下几类:3.8.1 添加、修改、删除字段1.添加新字段向表添加新字段时,通常需要指定新字段在表中的位置。图3.22 表结构中增加字段发现”新增字段”添加在表结构末尾。图3.25 在指定字段之后增加字段再查看xsb表结构,中间字段如图3.26所示。图3.31 修改后字段的顺序注意:属性名1和属性名2必须是表中已存在的字段名。图3.33 修改增加约束2.删除

MySQL数据库表结构修改方法

ALTER TABLE用于更改原有的表结构。例如,可以增加或删减列,创建或取消索引,更改原有列的类型,重新命名列或表,还可以更改表的描述和表的类型。成熟的数据库设计,数据库的表结构一般不会发生变化。数据库的表结构一旦发生变化,基于该表的视图、触发器、存储过程将直接受到影响,甚至导致应用程序的修改。

ALTER TABLE语句的基本格式如下:

其中,table_name为要修改表的表名。

ALTER TABLE语句中的修改子句可以包含以下几类:

3.8.1 添加、修改、删除字段

1.添加新字段

向表添加新字段时,通常需要指定新字段在表中的位置。向表添加新字段的语法格式如下:

alter table 表名 add 新字段名 新数据类型 [新约束条件] [first | after 旧字段名]

其中ADD子句:向表中增加新列。例如,在表t1中增加新的一列a:

ALTER TABLE t1 ADD COLUMN a TINYINT NULL;

(1)增加字段,字段处于最后一个位置。

Alter table 表名add 字段名 数据类型 null/not null;

首先看一下原来的xsb表结构:

Desc xsb;

xsb原表结构如图3.20所示。

图3.20 xsb原表结构

执行命令:Alter table xsb add 新增字段char(10)null;,如图3.21所示。

图3.21 执行命令:Alter table xsb add 新增字段 char(10)null;

新增字段后,再查看xsb表结构,如图3.22所示。

图3.22 表结构中增加字段

发现”新增字段”添加在表结构末尾。

(2)在表的第一个位置增加字段。

Alter table 表名add 字段名 数据类型first;

执行命令:alter table xsb add 首字段char(10)null first;,如图3.23所示。

图3.23 在表第一个位置增加字段

再查看xsb表结构,如图3.24所示。

图3.24 首字段表结构变化

(3)在表的指定字段之后增加字段。

Alter table 表名add 字段名 数据类型 after 列名2;

执行命令:alter table xsb add 中间字段 char(10)null after 专业;,如图3.25所示。

图3.25 在指定字段之后增加字段

再查看xsb表结构,中间字段如图3.26所示。

图3.26 中间字段

2.修改字段名(或者数据类型)

(1)修改字段的名字。

Alter table 表名change旧属性名 新属性名 旧数据类型;

例如,要首先创建表:把一个数据类型为INTEGER列的名称从a变更到b:

create table t1(

aa int null,

name char(20),

csrq datetime

);

执行结果如图3.27所示。

图3.27 创建表

执行命令:ALTER TABLE t1 CHANGE aa bb INTEGER;,如图3.28所示。

图3.28 修改字段名

(2)修改字段的数据类型。

如果仅对字段的数据类型进行修改,可以使用下面的语法格式:

alter table 表名 modify 字段名 新数据类型

MODIFY子句:修改指定列的数据类型。例如,把一个列的数据类型改为BIGINT:(www.xing528.com)

执行命令:ALTER TABLE t1 MODIFY bb BIGINT NOT NULL;,如图3.29所示。

图3.29 修改字段的数据类型

注意:若表中该列所存数据的数据类型与将要修改的列的类型冲突,则发生错误。例如,原来CHAR类型的列要修改成INT类型,而原来列值中有字符型数据“a”,则无法修改。

(3)同时修改字段名字和属性。

Alter table 表名 change 旧属性名 新属性名 新数据类型;

执行Alter table t1 change bb kk char(10);命令语句后,表结构如图3.30所示。

图3.30 同时修改字段名字和属性

(4)修改字段的顺序。

Alter table 表名 modify 属性名1 数据类型 first|after 属性名2;

执行Alter table t1 modify kk char(10)after name;命令语句后,表结构如图3.31所示。

图3.31 修改后字段的顺序

注意:属性名1和属性名2必须是表中已存在的字段名。

(5)删除字段。

删除表字段的语法格式如下:

alter table 表名 drop 字段名;

执行alter table t1 drop kk;命令语句后,表结构如图3.32所示。

图3.32 删除字段KK后的表结构

【例3.7】假设已经在数据库PXSCJ中创建了表XSB,表中存在“姓名”列。在表XSB中增加“奖学金等级”列,并将表中的“姓名”列删除。

参考答案:

3.8.2 修改约束条件

1.添加约束条件

向表的某个字段添加约束条件的语法格式如下(其中约束类型可以是唯一性约束、主键约束及外键约束):

alter table 表名 add constraint 约束名 约束类型(字段名)

(1)创建表时设置外键。

Create table 表名(属性名 数据类型 auto_increment,…..

Constraint 外键约束名 foreign key(列名)references 表名(列名);

(2)对建好的表修改增加约束(外键约束)。

Alter table 表名 add constraint 约束名 foreign key(列名)references 表名(列名);

执行命令语句:Alter table cjb add constraint fk_xh foreign key(学号)references xsb(学号),

add constraint fk_kch foreign key(课程号)references kcb(课程号);,将对cjb表的学号参照xsb表的学号,cjb表的课程号参照kcb表的课程分别建立外键约束fk_xh和fk_kch,如图3.33所示。

图3.33 修改增加约束

2.删除约束条件

删除约束条件的语法格式如下:

Alter table 表名 drop 约束类型 约束名;

(1)删除表的主键约束条件语法格式比较简单,语法格式如下:

alter table 表名 drop primary key;

(2)删除表的外键约束时,需指定外键约束名称,语法格式如下(注意需指定外键约束名):

alter table 表名 drop foreign key 约束名;

(3)若要删除表字段的唯一性约束,实际上只需删除该字段的唯一性索引即可,语法格式如下(注意需指定唯一性索引的索引名):

Alter table 表名 drop index 唯一索引名;

(4)修改表的其他选项:

alter table 表名 engine=新的存储引擎类型

alter table 表名 default charset=新的字符集

alter table 表名 auto_increment=新的初始值

alter table 表名 pack_keys=新的压缩类型

3.8.3 修改表名

修改表名的语法格式较为简单,语法格式如下:

rename table旧表名to新表名

该命令等效于:alter table 旧表名 rename 新表名

RENAME子句:修改该表的表名。例如,将表a改名为b:

ALTER TABLE a RENAME b;

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈