高级查询-修改表

  • 修改表
  • 修改表名
  • 添加字段
  • 修改字段
  • 删除字段
  • 添加主外键
  • 1.添加主键约束
  • 2.添加外键约束


修改表

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

修改表名

在一个数据库中,表名是唯一的。可以通过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`;

SQL SERVER 数据库表名修改字段属性 sql数据库修改表名语句_mysql

添加字段

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

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

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

结果如下:

SQL SERVER 数据库表名修改字段属性 sql数据库修改表名语句_mysql_02

修改字段

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

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

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

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

SQL SERVER 数据库表名修改字段属性 sql数据库修改表名语句_表名_03


从结果我们可以看到,name已经改成为username,且数据类型为CHAR类型。

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

删除字段

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

ALTER TABLE 表名 drop 字段名;

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

ALTER TABLE dome2 drop `password`;

SQL SERVER 数据库表名修改字段属性 sql数据库修改表名语句_字段_04

添加主外键

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

SQL SERVER 数据库表名修改字段属性 sql数据库修改表名语句_mysql_05

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存储类型的表,也可以通过建立逻辑关联的方式保证数据的完整性和一致性,这种关联实际上是依照设计之初就定义好的固有逻辑,按照这种固有逻辑存储数据即可,不需要在数据库层面进行“硬绑定”。