欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据库的操作之高级查询修改表

程序员文章站 2024-03-08 15:15:40
...

修改表

前面简单介绍了修改表,对数据库的操作,主要就是增删改查。

修改表名

在一个数据库中,表名是唯一的。可以通过SQL语句对以创建的表修改表名,语法如下。
ALTER TABLE<旧表名> rename [to] <新表名>;
其中,to为可选参数,使用与否不影响结果。仅修改表名,表结构不变。
例如,实现在test 数据库中创建表demo1,将其改名为demo2,SQL语句如下。

DROP TABLE IF EXISTS ` demo1`;
create table if not exists `demo1`(
	`id` int(10) not null AUTO_INCREMENT,
	`name` varchar(8) not null,
	primary key(id)
);

#修改表名
ALTER TABLE `demo1` RENAME `dome2`;

数据库的操作之高级查询修改表

添加字段

随着我们业务的需求的变化,可能需要向已存在的表中添加新的字段,添加新字段的语法如下。

语法:
ALTER TABLE 表名 add 字段名 数据类型 [属性];
例如:我们向demo2表中添加密码字段,sql语句如下。

/*添加数据*/
ALTER TABLE dome2 add `password` VARCHAR (32) not null;

结果如下:
数据库的操作之高级查询修改表

修改字段

数据表中一个字段中包含字段名和数据类型,因此如果实现修改字段,可以包括修改字段名和修改数据存储的类型。下面来介绍其SQL语句的写法。
语法:

ALTER TABLE 表名 CHANGE  原字段名 新字段名 数据类型[属性]

其中,“原字段名” 指修改前的字段名,“新字段名”指修改后的字段名,“数据类型”指修改后的数据类型,如果不需要修改数据类型,则和原数据类型是一致的,但“数据类型”不能为空。
例如:将demo2表中name字段名改为username,数据类型改为CHAR(10),sql语句如下。

/*修改字段名*/
ALTER TABLE  dome2 CHANGE `name` `username` CHAR(10) not null;

数据库的操作之高级查询修改表
从结果我们可以看到,name已经改成为username,且数据类型为CHAR类型。

注意: 由于不同类型的数据存储方式和长度不同,修改数据类型可能会影响数据表宏已有的数据,因此此种情况下不应该轻易修改数据类型。

删除字段

删除字段就是将数据库中的某个字段从表中移除,语法如下。
语法:

ALTER TABLE 表名 drop 字段名;

例如我们删除demo2表中的password字段。sql如下:

ALTER TABLE dome2 drop `password`;

数据库的操作之高级查询修改表

添加主外键

以上我们列举了部分常用的使用ALTER TABLE修改表结构的SQL语句,在实际应用中,也许还会用到其他修改表结构的SQL语句,这时可以通过查看系统帮助来找到它们。“help ALTER TAble”;
数据库的操作之高级查询修改表

1.添加主键约束

语法:

ALTER TABLE 表名 add constraint  主键名 primary key 表名(主键字段);

例如:将grade表中的gradeld设置为主键,语句如下。

ALTER TABLE `grade` add constraint  'pk_grade' primary key `grade`(`gradeId`);

2.添加外键约束

ALTER TABLE 表名 add constraint 外键名 FROEIGN KEY (外键字段) PEFERENCES 关联表名 (关联字段)

例如 ,设置student表的gradld字段与grade表的gradeld字段建立主外键关联,语句如下。

ALTER TABLE `student` add constraint fk_student_grade FROEIGN KEY (`gradeId`) PEFERENCES `grade` (`gradeId`);

**提示:**在MySQL中,InnDB存储类型的表支持外键,MyISAM存储类型的表不支持外键,因此对于MyISAM存储类型的表,也可以通过建立逻辑关联的方式保证数据的完整性和一致性,这种关联实际上是依照设计之初就定义好的固有逻辑,按照这种固有逻辑存储数据即可,不需要在数据库层面进行“硬绑定”。

相关标签: sql mysql