MySQL

MySQL 知识量:16 - 40 - 165

8.2 更新和删除表><

更新表- 8.2.1 -

在表创建完成后,可能还需要进行结构上的修改,这称之为更新表。更新表可以使用alter table语句,在更新时以下信息是必须的:

  • 在alter table后给出要更改的表的名称,当然,这个表必须是已经存在的。

  • 给出更改的列的具体新的定义。

1、添加列

示例:给学生表student添加一个phone列。

alter table student add phone char(11) null;

添加成功后,查询学生表结果为:

+----+-------+-----+--------+-------+
| id | name  | age | sex    | phone |
+----+-------+-----+--------+-------+
|  1 | Susan |  11 | female | NULL  |
|  2 | Jame  |  12 | male   | NULL  |
|  3 | Bob   |  11 | male   | NULL  |
|  4 | Robot |  10 | male   | NULL  |
|  5 | Jen   |  11 | female | NULL  |
|  6 | Toney |  10 | male   | NULL  |
+----+-------+-----+--------+-------+

添加列的关键语法是:add+新列定义。

2、删除列

示例:删除学生表student的sex列。

alter table student drop column sex;

删除成功后,查询学生表结果为:

+----+-------+-----+-------+
| id | name  | age | phone |
+----+-------+-----+-------+
|  1 | Susan |  11 | NULL  |
|  2 | Jame  |  12 | NULL  |
|  3 | Bob   |  11 | NULL  |
|  4 | Robot |  10 | NULL  |
|  5 | Jen   |  11 | NULL  |
|  6 | Toney |  10 | NULL  |
+----+-------+-----+-------+

删除列的关键语法是:drop column+要删除的列。

3、添加外键

示例:添加课程表course的id_student列和id_lesson列为外键,分别关联学生表student的id列和课程科目表lesson的id列。

alter table course
add constraint fk_id_student foreign key(id_student) references student(id)
on delete cascade on update cascade,
add constraint fk_id_lesson foreign key(id_lesson) references lesson(id)
on delete cascade on update cascade;

添加外键成功后,查询课程表的创建语句(show create table course;),结果为:

CREATE TABLE `course` (
    `id`         int(11) NOT NULL AUTO_INCREMENT,
    `id_student` int(11) NOT NULL,
    `id_lesson`  int(11) NOT NULL,
    PRIMARY KEY (`id`),
    KEY `fk_student` (`id_student`),
    KEY `fk_lesson2` (`id_lesson`),
    CONSTRAINT `fk_lesson2` FOREIGN KEY (`id_lesson`)
    REFERENCES `lesson` (`id`)
    ON DELETE CASCADE ON UPDATE CASCADE,
    CONSTRAINT `fk_student` FOREIGN KEY (`id_student`)
    REFERENCES `student` (`id`)
    ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8

添加外键的关键语法是:add constraint+自定义外键名+foreign key(外键列)+references+被关联的表名(被外键关联的列)。

此外,on delete cascade on update cascade表示约束规则,即如果被关联的表被删除或修改,包含外键的表也会随着删除或修改。

删除表- 8.2.2 -

要删除表(删除表本身,不只是其数据)是非常简单的,使用drop table语句即可,例如删除表poeple:

drop table people;

删除操作是不能撤销的,执行后,删除的表就永久的不存在了。

重命名- 8.2.3 -

修改表的名字可以使用rename table语句。例如重命名表people为person:

rename table people to person;

如果要重命名多个表,只需要用逗号分隔多个表的重命名即可。例如:

rename table A to B,C to D;