3.2.3 管理数据表
1.用alter table语句修改表的结构
有时可能需要改变一下现有表的结构,那么alter table语句将是合适的选择。
(1)增加列
例如,给book Info表增加一列pub:
(2)修改列
例如,改变pub的类型:
另一种方法是:
例如:
(3)删除列
例如,删除列pub:
(4)给表更名
例如,把book Info表更名为booksInfo:
2.利用select查询的结果创建表
关系数据库的一个重要概念是,任何数据都表示为行和列组成的表,而每条select语句的结果也都是一个行和列组成的表。在许多情况下,来自select的“表”仅是一个在显示屏上滚动的行和列的图像。在MySQL 3.23以前,如果想将select的结果保存在一个表中以便以后的查询使用,必须进行特殊的安排:
①运行describe/desc查询,以确定想从中获取信息的表中的列类型。
②创建一个表,明确地指定刚才查看到的列的名称和类型。
③在创建了该表后,发布一条insert…select查询,检索出结果并将它们插入所创建的表中。
现在MySQL中全都做了改动。create table…select语句消除了这些浪费时间的内容,使得能利用select查询的结果直接得出一个新表。只需一步就可以完成任务,不必知道或指定所检索的列的数据类型。这使得很容易创建一个完全用所喜欢的数据填充的表,并且为进一步查询做了准备。
如果在create语句后指定一个select语句,MySQL将为select中所有的列创建新字段。
语句执行效果如下:
注意,在手复制数据进表时发生任何错误,表将自动被删除。可以通过选择一个表的全部内容(无where子句)来复制一个表,或利用一个总是失败的where子句来创建一个空表,例如:
3.用drop table语句删除数据表
语法格式如下:
其中“表1,表2,…表n”指要删除的表的名称,后面可以同时删除多个表,只需将要删除的表名依次写在后面,相互之间用逗号隔开即可。如果要删除的数据表不存在,则MySQL会提示一条错误信息:“ERROR 1051(42S02):Unknown table
”。参数“if exists”用于在删除前判断删除的表是否存在,加上该参数后,在删除表的时候,如果表不存在,SQL语句可以顺利执行,但是会发出警告(warning)。
例如:
表名
或者,也可以同时指定数据库和表:
也可以同时删除多个数据表:
drop table删除一个或多个数据库表。所有表中的数据和表定义均被删除,故小心使用这个命令!