Chinaunix首页 | 论坛 | 博客
  • 博客访问: 327108
  • 博文数量: 91
  • 博客积分: 5011
  • 博客等级: 大校
  • 技术积分: 657
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-06 05:50
文章分类

全部博文(91)

文章存档

2011年(1)

2010年(4)

2009年(21)

2008年(65)

我的朋友

分类: Mysql/postgreSQL

2008-06-05 17:06:57

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 EXISTSTEMPORARY,则系统会报错。如果指定了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
指定用于自增列的起始值,适用于MyISAMInnoDBMEMORY表。
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;
阅读(627) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~