MySQL学习笔记(十二)—— MySQL的命令集(2)
时间:2008-06-05 来源:lavostar
5) 更改表
ALTER [IGNORE] TABLE table action_list
更改表结构。可对表进行许多更改操作,如添加/删除列、删除索引等。其执行原理如下:MySQL创建一个表的副本并对其进行修改,同时将所有更改操作入队,当修改完成时,原表即删除并用新表替换,此时这些更改操作执行完毕。如果这些入队的操作引入了重复的关键字,ALTER语句会滚回并取消。如果设置了IGNORE关键字,ALTER语句会继续执行。
action_list可能的选项有:
⑴ADD [COLUMN] create_clause [FIRST | AFTER column]
ADD [COLUMN] (create_clause, create_clause, …)
描述:在表中添加新的一列。这里的create_clause定义了列在表中创建的SQL(参看CREATE TABLE)。如果使用了FIRST关键字,该列创建为表的第一列;如果使用了AFTER关键字,则表示新创建的列在某列之后;如果这两个关键字都没有,新创建的列默认为表的最后一列。也可以同时添加多个列。
⑵ADD [CONSTRAINT symbol] FOREIGN KEY name (column, …) [reference]
描述:仅对InnoDB表(可支持外关键字)适用,它会在表中添加一个外关键字引用。
⑶ADD FULLTEXT [name] (column, …)
描述:添加一个使用指定列的完全文本索引。
⑷ADD INDEX [name] (column, …)
描述:添加一个使用指定列的索引,如果没有指定名称,MySQL会自动选择一个。
⑸ADD PRIMARY KEY (column, …)
描述:添加一个由指定列组成的主关键字,如果表中已有主关键字,执行该命令会报错。
⑹ADD UNIQUE [name] (column, …)
描述:添加一个使用指定列的唯一性索引。
⑺ALTER [COLUMN] column SET DEFAULT value
描述:为指定列赋一个新的默认值,这里的COLUMN关键字是可选的,对命令也没有影响。
⑻ALTER [COLUMN] column DROP DEFAULT
描述:对指定列删除当前默认值,这里的COLUMN关键字是可选的,对命令也没有影响。
⑼CONVERT TO CHARACTER SET charset [COLLATE collation]
[DEFAULT] CHARACTER SET charset [COLLATE collation]
描述:根据指定的校准(collation)将列转换为指定字符集。
⑽CHANGE [COLUMN] column create_clause
MODIFY [COLUMN] create_clause [FIRST | AFTER column]
描述:更改列的定义。将指定列由一种数据类型转换为其它数据类型(尽可能不影响数据)。关于create_clause参看CREATE TABLE命令。CHANGE可表示将某列修改为新的一列,而MODIFY只能在同一列上修改(列的名字不能改变)。这里的COLUMN关键字是可选的,对命令也没有影响。MySQL会尝试最合理的转换方案,如果确实无法转换,则会给出错误提示,最好在转换前对数据进行备份,这样可以最大程度地保障数据的安全。
⑾DISABLE KEYS
描述:停止对MyISAM表更新索引。该命令仅对非唯一性索引适用。当需要向数据执行大量插入操作时,可能希望屏蔽关键字,这样可以使得MySQL的处理效率更高。
⑿DISCARD TABLESPACE
描述:对于InnoDB表,如果使用了表空间,那么该命令可用来删除底层的.idb文件。在运行此命令之前最好先备份原.idb文件。
⒀DROP [COLUMN] column
描述:在表中删除一列。该命令可使一列及该列中的数据一并永久删除,如果没有备份,这些数据是无法再恢复的。此外,索引中所有对该列的引用也会被删除掉。这里的COLUMN关键字是可选的,对命令也没有影响。
⒁DROP PRIMARY KEY
描述:在表中删除主关键字。
⒂DROP INDEX KEY
描述:在表中删除一个索引。索引的删除不会影响到表中的数据,因此,删除的索引可以通过ALTER TABLE … ADD INDEX命令再重新创建。
⒃ENABLE KEYS
描述:DISABLE KEYS的反操作。
⒄IMPORT TABLESPACE
描述:由备份或其他数据源导入存储为.idb文件的数据。
⒅ORDER BY column [ASC | DESC]
描述:按指定列对表进行排序。如果新行加入,排序可能就会发生变化。该命令可以针对常见排序请求实现表的优化。可以指定多个列。
⒆RENAME [AS] new_table
RENAME [TO] new_table
描述:修改表的名称。该命令不会影响表的数据及索引。如果单独执行该命令,MySQL不会创建临时表,而是直接更改表文件在操作系统中的名称。
⒇table_options
描述:对表选项(如表类型等)的重定义。
(注意:多个ALTER命令可以使用逗号组合在一起。对于ALTER TABLE操作,必须有相应的表操作权限。)
相关阅读 更多 +