■ 大小的更改也可能是反方向的。可能创建了一个CHAR(255) 列,但现在发现表中没有比100 个字符更长的串。这时可缩短该列以节省存储空间。ALTER TABLE 的语法如下:
每个action 表示对表所做的一个修改。MySQL扩充了ALTER TABLE 语句,允许指定多个动作,各动作间以逗号分隔。这对于减少键盘输入很有用,但这个扩充的更为重要的原因是,除非能同时将所有VARCHAR 列更改为CHAR 列,否则不可能将表从行可变长的表更改为行定长的表。
下面的例子示出了某些ALTER TABLE 的功能。
■ 对表重新命名。这很简单;只需给出旧表名和新表名即可:
在MySQL3.23 中有临时表,重命名一个临时表为数据库中已经存在的名称将隐藏原始表,只要临时表存在就会隐藏原始表。这类似于通过用相同的名字创建一个临时表来隐藏一个表的方法。
■ 更改列类型。为了更改列的类型,可使用CHANGE 或MODIFY 子句。假如表my _ t b l中的列为SMALLINT UNSIGNED 的,希望将其更改为MEDIUMINT UNSIGNED 的列。用下面的任何一个命令都可完成此项工作:
为什么在CHANGE 命令中给出列名两次?因为CHANGE 可以做的而MODIFY 不能做的一桩事是,除了更改类型外还能更改列名。如果希望在更改类型的同时重新将i 命名为j,可按如下进行:
重要的是命名了希望更改的列,并说明了一个包括列名的列的完整定义。即使不更改列名,也需要在定义中包括相应的列名。
更改列类型的一个重要原因是为了改善比较两个表的连接查询的效率。在两个列的类型相同时,比较更快。假如执行如下的查询:
如果t1.name 为CHAR( 10 ),而t2.name 为CHAR( 15 ),此查询的运行速度没有它们两者都为CHAR(15) 时的快。那么可以用下面的任一条命令更改t1.name 使它们的类型相同:
对于3 . 2 3以前的MySQL版本,所连接的列必须是同样类型的这一点很重要,否则索引不能用于比较。对于版本3.23 或以上的版本,索引可用于不同的类型,但如果类型相同,查询仍然更快。
■ 将表从可变长行转换为定长行。假如有一个表chartbl 具有VARCHAR 列,想要把它转换为CHAR 列,看看能够得到什么样的性能改善。(定长行的表一般比变长行的表处理更快。)这个表如下创建:
上一页 [1] [2] [3] [4] [5] [6] [7] 下一页
Tag:数据库教程,sql数据库教程,access数据库教程,电脑教学 - 数据库教程