时间:2021-07-01 10:21:17 帮助过:25人阅读
可利用C R E ATE TA B L E、DROP TABLE 和A LTER TABLE 语句创建表,然后,对它们进行删除,更改它们的结构。对于它们中的每一条语句,存在MySQL 专有的扩充,这些扩充使各语句更为有用。C R E ATE INDEX 和DROP INDEX 语句使您能够增加或删除现有表上的索引。
3.4.1 CREATE TABLE 语句
用CREATE TABLE 语句创建表。此语句的完整语法是相当复杂的,因为存在那么多的可选子句,但在实际中此语句的应用相当简单。如我们在第1 章中使用的所有CREATE TABLE 语句都不那么复杂。有意思的是,大多数复杂东西都是一些子句,这些子句MySQL在分析后扔掉。参阅附录D 可看到这些复杂的东西。看看CREATE TABLE 语句的各项条款,注意该语句有多少语法是用于REFERENCES CONSTRAINT 和CHECK 子句的。这些子句涉及外部键、引用完整性及输入值约束。MySQL 不支持这些功能,但它分析其语法使其更容易利用在其他数据库系统中建立的表定义。(可以用较少的编辑工作更容易地利用该代码。)如果您从头开始编写自己的表描述,可以完全不管这些子句。本节中我们对它们也不多做介绍。CREATE TABLE 至少应该指出表名和表中列的清单。例如:
除构成表的列以外,在创建表时还可以说明它应该怎样索引。另一个选择是创建表时不进行索引,以后再增加索引。如果计划在开始将表用于查询前,用大量的数据填充此表,以后再创建索引是一个好办法。在插入每一行时更新索引较装载数据到一个未索引的表中然后再创建索引要慢得多。我们已经在第1章中介绍了C R E ATE TABLE 语句的基本语法,并在第2章讨论了怎样描述列类型。这里假定您已经读过了这两章,因此我们就不重复这些内容了。在本节下面,我们将介绍一些MySQL 3.23 中对C R E ATE TABLE 语句的重要扩充,这些扩充在构造表方面提供了很大的灵活性,这些扩充为:
■ 表存储类型说明符。
■ 仅当表不存在时才进行创建。
■ 在客户机会话结束时自动删除临时表。
■ 通过选择希望表存储的数据来创建一个表。
1. 表存储类型说明符
在MySQL 3.23 之前,所有用户创建的表都利用的是ISAM 存储方法。在MySQL 3.23中,可在CREATE TABLE 语句的列的列表之后指定TYPE = type,以三种类型明确地创建表。其中type 可以为MYISAM、ISAM 或HEAP。例如: