MySQL学习笔记(十七)—— MySQL的命令集(7)
时间:2008-06-05 来源:lavostar
19) 创建表
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] table
(create_clause, …)
[table_options]
[[IGNORE | REPLACE] select]
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] table LIKE old_table
该命令用来定义数据库中表的结构。如果使用了TEMPORARY关键字,该表只在当前客户端连接存在时存在。而IF NOT EXISTS表示MySQL仅在表不存在时才创建,如果表存在,而又没有指定IF NOT EXISTS和TEMPORARY,则系统会报错。如果指定了TEMPORARY没指定IF NOT EXISTS,而表又存在,那么此时已存在的表将对当前客户端隐藏。
CREATE子句可以定义特定列的结构,也可以定义该列的元结构。定义列的子句包含任意数目的字段定义,其语法如下:
column type [NOT NULL | NULL] [DEFAULT value] [AUTO_INCREMENT] [PRIMARY KEY] [reference]
其标识符含义如下:
⑴AUTO_INCREMENT:表示列使用其当前最大值自增,只有数值型列才适用。
⑵DEFAULT value:为字段分配默认值。
⑶NOT NULL:保证每个值都不为空。
⑷NULL:表示字段可包含空值,如果字段是主关键字或SPATIAL索引,则不能使用该选项。
⑸PRIMARY KEY:表示该字段是主关键字。
⑹REFERENCE table [(column, …)] [MATCH FULL | MATCH PARTIAL] [ON DELETE option] [ON UPDATE option]:创建外关键字引用,仅对InnoDB表适用。
可以通过以下子句来设置元结构如索引和约束:
⑴FULLTEXT (column, …):创建全文本的索引。
⑵INDEX [name] (column, …):创建常规索引。
⑶KEY [name] (column, …):等价于INDEX。
⑷PRIMARY KEY:创建表的主关键字。
⑸UNIQUE [name] (column, …):创建值必须唯一的特殊索引。
从MySQL 3.23开始,可以在CREATE TABLE语句末尾指定表选项,它们包括:
⑴AUTO_INCREMENT = start
指定用于自增列的起始值,适用于MyISAM、InnoDB和MEMORY表。
⑵AVG_ROW_LENGTH = length
对于包含大量变长数据的表,平均行长可用于MySQL对这些数据进行优化。
⑶CHECKSUM = 0 or 1
当设置为1时,则强制MySQL对表进行校验以提升数据的一致性,会对性能有所影响。
⑷COMMENT = comment
为表提供注释,一般不超过60个字符。
⑸DELAY_KEY_WRITE = 0 or 1
仅适用于MyISAM。如果设置为1,则当表关闭时,才执行更新。
⑹ENGINE = engine
指定数据库的表类型。如果选定的表类型不存在,则使用最相近的表类型。
⑺MAX_ROWS = rowcount
指定表中存放的最大行数。
⑻MIN_ROWS = rowcount
指定表中存放的最小行数。
⑼PACK_KEYS = 0 or 1
仅适用于MyISAM表。该选项可对读操作多的表提供性能改善,当设置为1时,会创建更小的关键字,这样写操作会慢而读操作会加速。
⑽PASSWORD = ‘password’
仅有包含特殊商业许可的用户才能使用。该选项会使用指定密码加密表的.frm文件。
⑾ROW_FORMAT = DYNAMIC or STATIC (MyISAM) COMPACT or REDUNDANT (InnoDB)
定义行如何存储在表中。
可以直接由SQL查询创建表。当创建表时,必须拥有数据库的CREATE权限。
示例: CREATE TABLE emp (id INT, name CHAR(50) );
CREATE TABLE IF NOT EXISTS emp_review (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
emp_id INT NOT NULL REFERENCES emp (id),
review TEXT NOT NULL,
INDEX (emp_id),
FULLTEXT (review)
) AUTO_INCREMENT = 1, ENGINE = MyISAM;
CREATE TABLE Stadium
SELECT stadiumName, stadiumLocation
FROM City;
相关阅读 更多 +