




已阅读5页,还剩171页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
13.1.1.ALTER DATABASE语法ALTER DATABASE | SCHEMA db_name alter_specification , alter_specification .alter_specification: DEFAULT CHARACTER SET charset_name | DEFAULT COLLATE collation_nameALTER DATABASE用于更改数据库的全局特性。这些特性储存在数据库目录中的db.opt文件中。要使用ALTER DATABASE,您需要获得数据库ALTER权限。CHARACTER SET子句用于更改默认的数据库字符集。COLLATE子句用于更改默认的数据库整序。在第10章:字符集支持中对字符集和整序名称进行了讨论。数据库名称可以忽略,此时,语句对应于默认数据库。也可以使用ALTER SCHEMA。13.1.2.ALTER TABLE语法ALTER IGNORE TABLE tbl_name alter_specification , alter_specification .alter_specification: ADD COLUMN column_definition FIRST | AFTER col_name | ADD COLUMN (column_definition,.) | ADD INDEX index_name index_type (index_col_name,.) | ADD CONSTRAINT symbol PRIMARY KEY index_type (index_col_name,.) | ADD CONSTRAINT symbol UNIQUE index_name index_type (index_col_name,.) | ADD FULLTEXT|SPATIAL index_name (index_col_name,.) | ADD CONSTRAINT symbol FOREIGN KEY index_name (index_col_name,.) reference_definition | ALTER COLUMN col_name SET DEFAULT literal | DROP DEFAULT | CHANGE COLUMN old_col_name column_definition FIRST|AFTER col_name | MODIFY COLUMN column_definition FIRST | AFTER col_name | DROP COLUMN col_name | DROP PRIMARY KEY | DROP INDEX index_name | DROP FOREIGN KEY fk_symbol | DISABLE KEYS | ENABLE KEYS | RENAME TO new_tbl_name | ORDER BY col_name | CONVERT TO CHARACTER SET charset_name COLLATE collation_name | DEFAULT CHARACTER SET charset_name COLLATE collation_name | DISCARD TABLESPACE | IMPORT TABLESPACE | table_options | partition_options | ADD PARTITION partition_definition | DROP PARTITION partition_names | COALESCE PARTITION number | REORGANIZE PARTITION partition_names INTO (partition_definitions) | ANALYZE PARTITION partition_names | CHECK PARTITION partition_names | OPTIMIZE PARTITION partition_names | REBUILD PARTITION partition_names | REPAIR PARTITION partition_namesALTER TABLE用于更改原有表的结构。例如,您可以增加或删减列,创建或取消索引,更改原有列的类型,或重新命名列或表。您还可以更改表的评注和表的类型。允许进行的变更中,许多子句的语法与CREATE TABLE中的子句的语法相近。其中包括table_options修改,选项有ENGINE, AUTO_INCREMENT和AVG_ROW_LENGTH等。请见13.1.5节,“CREATE TABLE语法”。存储引擎不支持有些操作,如果进行这些操作,会出现警告。使用SHOW WARNINGS可以显示出这些警告。请参见13.5.4.22节,“SHOW WARNINGS语法”。如果您使用ALTER TABLE更改列规约,但是DESCRIBEtbl_name提示您列规约并没有改变,则可能是因为MySQL忽略了您所做的更改。忽略更改的原因见13.1.5.1节,“沉寂的列规格变更”。例如,如果您试图把VARCHAR列更改为CHAR列,此时,如果表包含其它长度可变的列,则MySQL仍会使用VARCHAR。ALTER TABLE运行时会对原表进行临时复制,在副本上进行更改,然后删除原表,再对新表进行重命名。在执行ALTER TABLE时,其它用户可以阅读原表,但是对表的更新和修改的操作将被延迟,直到新表生成为止。新表生成后,这些更新和修改信息会自动转移到新表上。注意,如果您在执行ALTER TABLE时使用除了RENAME以外的选项,则MySQL会创建一个临时表。即使数据并不需要进行复制(例如当您更改列的名称时),MySQL也会这么操作。对于MyISAM表,您可以通过把myisam_sort_buffer_size系统变量设置到一个较高的值,来加快重新创建索引(该操作是变更过程中速度最慢的一部分)的速度。要使用ALTER TABLE,您需要获得表的ALTER, INSERT和CREATE权限。IGNORE是MySQL相对于标准SQL的扩展。如果在新表中有重复关键字,或者当STRICT模式启动后出现警告,则使用IGNORE控制ALTER TABLE的运行。如果没有指定IGNORE,当重复关键字错误发生时,复制操作被放弃,返回前一步骤。如果指定了IGNORE,则对于有重复关键字的行,只使用第一行,其它有冲突的行被删除。并且,对错误值进行修正,使之尽量接近正确值。您可以在一个ALTER TABLE语句里写入多个ADD, ALTER, DROP和CHANGE子句,中间用逗号分开。这是MySQL相对于标准SQL的扩展。在标准SQL中,每个ALTER TABLE语句中每个子句只允许使用一次。例如,在一个语句中取消多个列: mysql ALTER TABLE t2 DROP COLUMN c, DROP COLUMN d;CHANGEcol_name,DROPcol_name和DROP INDEX是MySQL相对于标准SQL的扩展。MODIFY是Oracle对ALTER TABLE的扩展。COLUMN只是自选项目,可以忽略。如果您使用ALTER TABLEtbl_nameRENAME TOnew_tbl_name并且没有其它选项,则MySQL只对与tabletbl_name相对应的文件进行重命名。不需要创建一个临时表。(您也可以使用RENAME TABLE语句对表进行重命名。请参见13.1.9节,“RENAME TABLE语法”。)column_definition子句使用与CREATE TABLE中的ADD和CHANGE子句相同的语法。注意,此语法包括列名称,而不只是列类型。请参见13.1.5节,“CREATE TABLE语法”。您可以使用CHANGEold_col_namecolumn_definition子句对列进行重命名。重命名时,需给定旧的和新的列名称和列当前的类型。例如:要把一个INTEGER列的名称从a变更到b,您需要如下操作: mysql ALTER TABLE t1 CHANGE a b INTEGER;如果您想要更改列的类型而不是名称,CHANGE语法仍然要求旧的和新的列名称,即使旧的和新的列名称是一样的。例如:mysql ALTER TABLE t1 CHANGE b b BIGINT NOT NULL;您也可以使用MODIFY来改变列的类型,此时不需要重命名:mysql ALTER TABLE t1 MODIFY b BIGINT NOT NULL;如果您使用CHANGE或MODITY缩短列长时,列中存在有索引,并且缩短后的列长小于索引长度,则MySQL会自动缩短索引的长度。当您使用CHANGE或MODIFY更改列的类型时,MySQL会尽量把原有的列值转化为新的类型。您可以使用FIRST或AFTERcol_name在一个表行中的某个特定位置添加列。默认把列添加到最后。您也可以在CHANGE或MODIFY语句中使用FIRST和AFTER。AFTER COLUMN用于指定列的新默认值,或删除旧的默认值。如果旧的默认值被删除同时列值为NULL,则新的默认值为NULL。如果列值不能为NULL,MySQL会指定一个默认值,请参见13.1.5节,“CREATE TABLE语法”。DROP INDEX用于取消索引。这是MySQL相对于标准SQL的扩展。请参见13.1.7节,“DROP INDEX语法”。如果列从表中被取消了,则这些列也从相应的索引中被取消。如果组成一个索引的所有列均被取消,则该索引也被取消。如果一个表只包含一列,则此列不能被取消。如果您想要取消表,应使用DROP TABLE。DROP PRIMAY DEY用于取消主索引。注释:在MySQL较早的版本中,如果没有主索引,则DROP PRIMARY KEY会取消表中的第一个UNIQUE索引。在MySQL 5.1中不会出现这种情况。如果在MySQL 5.1中对没有主键的表使用DROP PRIMARY KEY,则会出现错误信息。如果您向表中添加UNIQUE KEY或PRIMARY KEY,则UNIQUE KEY或PRIMARY KEY会被储存在非唯一索引之前,这样MySQL就可以尽早地检查出重复关键字。ORDER BY用于在创建新表时,让各行按一定的顺序排列。注意,在插入和删除后,表不会仍保持此顺序。当您知道多数情况下您会按照特定的顺序查询各行时,可以使用这个选项;在对表进行了大的改动后,通过使用此选项,您可以提高查询效率。在有些情况下,如果表按列排序,对于MySQL来说,排序可能会更简单。如果您对一个MyISAM表使用ALTER TABLE,则所有非唯一索引会被创建到一个单独的批里(和REPAIR TABLE相同)。当您有许多索引时,这样做可以使ALTER TABLE的速度更快。这项功能可以明确激活。ALTER TABLE.DISABLE KEYS让MySQL停止更新MyISAM表中的非唯一索引。然后使用ALTER TABLE . ENABLE KEYS重新创建丢失的索引。进行此操作时,MySQL采用一种特殊的算法,比一个接一个地插入关键字要快很多。因此,在进行成批插入操作前先使关键字禁用可以大大地加快速度。使用ALTER TABLE . DISABLE KEYS除了需要获得以前提到的权限以外,还需要获得INDEX权限。Innodb存储引擎支持FOREIGN KEY和REFERENCES子句。Innodb存储引擎执行ADD CONSTRAINT symbol FOREIGN KEY (.) REFERENCES . (.)。请参见15.2.6.4节,“FOREIGN KEY约束”。对于其它存储引擎,这些子句会被分析,但是会被忽略。对于所有的存储引擎,CHECK子句会被分析,但是会被忽略。请参见13.1.5节,“CREATE TABLE语法”。接受这些子句但又忽略子句的原因是为了提高兼容性,以便更容易地从其它SQL服务器中导入代码,并运行应用程序,创建带参考数据的表。请参见1.8.5节,“MySQL与标准SQL的差别”。InnoDB支持使用ALTER TABLE来取消外键: ALTER TABLE yourtablename DROP FOREIGN KEY fk_symbol;要了解更多信息,请参见15.2.6.4节,“FOREIGN KEY约束”。ALTER TABLE忽略DATA DIRECTORY和INDEX DIRECTORY表选项。如果您想要把表默认的字符集和所有字符列(CHAR, VARCHAR, TEXT)改为新的字符集,应使用如下语句: ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;警告:前面的操作转换了字符集之间的列类型。如果您有一列使用一种字符集(如latin1),但是存储的值实际上使用了其它的字符集(如utf8),这种情况不是您想要的。此时,您必须对这样的列进行以下操作。ALTER TABLE t1 CHANGE c1 c1 BLOB;ALTER TABLE t1 CHANGE c1 c1 TEXT CHARACTER SET utf8;这种方法能够实现此功能的原因是,当您转换到BLOB列或从BLOB列转换过来时,并没有发生转换。如果您指定CONVERT TO CHARACTER SET为二进制,则TEXT列被转换到相应的二进制字符串类型(BINARY, VARBINARY, BLOB)。这意味着这些列将不再有字符集,接下来的CONVERT TO操作也将不适用于这些列。要仅仅改变一个表的默认字符集,应使用此语句:ALTER TABLE tbl_name DEFAULT CHARACTER SET charset_name;词语DEFAULT为自选项。如果您在向表中添加一个新列时(例如,使用ALTER TABLE.ADD column)没有指定字符集,则此时使用的字符集为默认字符集。警告:ALTER TABLE.DEFAULT CHARACTER SET和ALTER TABLE.CHARACTER SET是等价的,只用于更改默认的表字符集。如果InnoDB表在创建时,使用了.ibd文件中的自己的表空间,则这样的文件可以被删除和导入。使用此语句删除.ibd文件: ALTER TABLE tbl_name DISCARD TABLESPACE;此语句用于删除当前的.ibd文件,所以应首先确认您有一个备份。如果在表空间被删除后尝试打开表格,则会出现错误。要把备份的.ibd文件还原到表中,需把此文件复制到数据库目录中,然后书写此语句:ALTER TABLE tbl_name IMPORT TABLESPACE;见15.2.6.6节,“使用按表的表空间”。使用mysql_info()C API函数,您可以了解有多少记录已被复制,以及(当使用IGNORE时)有多少记录由于重复关键字的原因已被删除。请参见25.2.3.34节,“mysql_info()”。ALTER TABLE也可以用于对带分区的表进行重新分区,功能包括添加、取消、合并和拆分各分区,还可以用于进行分区维护。对带分区的表使用partition_options子句和ALTER TABLE可以对表进行重新分区,使用时依据partition_options定义的分区方法。本子句以PARTITION BY为开头,然后使用与用于CREATE TABLE的partition_options子句一样的语法和规则(要了解详细信息,请参见13.1.5节,“CREATE TABLE语法”)。注释:MySQL 5.1服务器目前接受此语法,但是不实际执行;等MySQL 5.1开发出来后,将执行此语法。用于ALTER TABLE ADD PARTITION的partition_definition子句支持用于CREATE TABLE语句的partition_definition子句的同样名称的选项。(要了解语法和介绍,请参见13.1.5节,“CREATE TABLE语法”。)例如,假设您有一个按照以下方式创建的带分区的表:CREATE TABLE t1 ( id INT, year_col INT)PARTITION BY RANGE (year_col) ( PARTITION p0 VALUES LESS THAN (1991), PARTITION p1 VALUES LESS THAN (1995), PARTITION p2 VALUES LESS THAN (1999); 您可以在表中增加一个新的分区p3,该分区用于储存小于2002的值。添加方法如下:ALTER TABLE t1 ADD PARTITION p3 VALUES LESS THAN (2002);注释:您不能使用ALTER TABLE向一个没有进行分区的表添加分区。DROP PARTITION用于取消一个或多个RANGE或LIST分区。此命令不能用于HASH或KEY分区;用于这两个分区时,应使用COALESCE PARTITION(见后)。如果被取消的分区其名称列于partition_names清单中,则储存在此分区中的数据也被取消。例如,如果以前已定义的表t1,您可以采用如下方法取消名称为p0和p1的分区:ALTER TABLE DROP PARTITION p0, p1;ADD PARTITION和DROP PARTITION目前不支持IF NOT EXISTS。也不可能对一个分区或一个已分区的表进行重命名。如果您希望对一个分区进行重命名,您必须取消分区,再重新建立;如果您希望对一个已分区的表进行重新命名,您必须取消所有分区,然后对表进行重命名,再添加被取消的分区。COALESCE PARTITION可以用于使用HASH或KEY进行分区的表,以便使用number来减少分区的数目。例如,假设您使用下列方法创建了表t2:CREATE TABLE t2 ( name VARCHAR (30), started DATE)PARTITION BY HASH(YEAR(started)PARTITIONS (6);您可以使用以下命令,把t2使用的分区的数目由6个减少到4个:ALTER TABLE t2 COALESCE PARTITION 2;包含在最后一个number分区中的数据将被合并到其余的分区中。在此情况下,分区4和分区5将被合并到前4个分区中(编号为0、1、2和3的分区)。如果要更改部分分区,但不更改所有的分区,您可以使用REORGANIZE PARTITION。这个命令有多种使用方法:o把多个分区合并为一个分区。通过把多个分区的名称列入partition_names清单,并为partition_definition提供一个单一的定义,可以实现这个功能。o把一个原有的分区拆分为多个分区。通过为partition_names命名一个分区,并提供多个partition_definitions,可以实现这个功能。o更改使用VALUES LESS THAN定义的分区子集的范围或更改使用VALUES IN定义的分区子集的值清单。注释:对于没有明确命名的分区,MySQL会自动提供默认名称p0, p1, p2等。要了解有关ALTER TALBE.REORANIZE PARTITION命令的详细信息,请参见18.3节,“分区管理”。多个附加子句用于提供分区维护和修补功能。这些功能与用于非分区表的功能类似。这些功能由CHECK TABLE和REPAIR TABLE等命令(这些命令不支持用于分区表)执行。这些子句包括ANALYZE PARTITION,CHECK PARTITION,OPTIMIZE PARTITION,REBUILD PARTITION和REPAIR PARTITION.每个选项均为一个partition_names子句,包括一个或多个分区名称。需要更改的表中必须已存在这些分区。多个分区名称用逗号分隔。要了解更多信息,或要了解举例说明,请参见18.3.3节,“分区维护”。以下例子展示了ALTER TABLE的使用。首先展示表t1。表t1采用如下方法创建:mysql CREATE TABLE t1 (a INTEGER,b CHAR(10);把表t1重新命名为t2:mysql ALTER TABLE t1 RENAME t2;把列a从INTERGER更改为TINYINT NOT NULL(名称保持不变),并把列b从CHAR(10)更改为CHAR(20),同时把列b重新命名为列c:mysql ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);添加一个新的TIMESTAMP列,名称为d:mysql ALTER TABLE t2 ADD d TIMESTAMP;在列d和列a中添加索引:mysql ALTER TABLE t2 ADD INDEX (d), ADD INDEX (a);删除列c:mysql ALTER TABLE t2 DROP COLUMN c;添加一个新的AUTO_INCREMENT整数列,名称为c:mysql ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT, - ADD PRIMARY KEY (c);注意我们为c编制了索引(作为PRIMARY KEY),因为AUTO_INCREMENT列必须编制索引。同时我们定义c为NOT NULL,因为主键列不能为NULL。当您添加一个AUTO_INCREMENT列时,列值被自动地按序号填入。对于MyISAM表,您可以在ALTER TABLE之前执行SET INSERT_ID=value来设置第一个序号,也可以使用AUTO_INCREMENT=value表选项来设置。请参见13.5.3节,“SET语法”。如果值大于AUTO_INCREMENT列中的最大值,则您可以使用用于InnoDB表的ALTER TALBE.AUTO_INCREMENT=value表选项,来为新行设置序号。如果值小于列中当前的最大值,不会出现错误信息,当前的序列值也不改变。使用MyISAM表时,如果您不更改AUTO_INCREMENT列,则序列号不受影响。如果您取消一个AUTO_INCREMENT列,然后添加另一个AUTO_INCREMENT列,则序号重新排列,从1开始。见A.7.1节,“与ALTER TABLE有关的问题”。13.1.3.CREATE DATABASE语法CREATE DATABASE | SCHEMA IF NOT EXISTS db_name create_specification , create_specification .create_specification: DEFAULT CHARACTER SET charset_name | DEFAULT COLLATE collation_nameCREATE DATABASE用于创建数据库,并进行命名。如果要使用CREATE DATABASE,您需要获得数据库CREATE权限。有关合法数据库名称的规定列于9.2节,“数据库、表、索引、列和别名”。如果存在数据库,并且您没有指定IF NOT EXISTS,则会出现错误。create_specification选项用于指定数据库的特性。数据库特性储存在数据库目录中的db.opt文件中。CHARACTER SET子句用于指定默认的数据库字符集。COLLATE子句用于指定默认的数据库整序。字符集和整序名称在第10章:字符集支持中讨论。有些目录包含文件,这些文件与数据库中的表对应。MySQL中的数据库的执行方法与这些目录的执行方法相同。因为当数据库刚刚被创建时,在数据库中没有表,所以CREATE DATABASE只创建一个目录。这个目录位于MySQL数据目录和db.opt文件之下。如果您手动在数据目录之下创建一个目录(例如,使用mkdir),则服务器会认为这是一个数据库目录,并在SHOW DATABASES的输出中显示出来。也可以使用CREATE SCHEMA。您还可以使用mysqladmin程序创建数据库。请参见8.5节,“mysqladmin:用于管理MySQL服务器的客户端”。13.1.4.CREATE INDEX语法CREATE UNIQUE|FULLTEXT|SPATIAL INDEX index_name USING index_type ON tbl_name (index_col_name,.)index_col_name: col_name (length) ASC | DESCCREATE INDEX被映射到一个ALTER TABLE语句上,用于创建索引。请参见13.1.2节,“ALTER TABLE语法”。通常,当使用CREATE TABLE创建表时,也同时在表中创建了所有的索引。请参见13.1.5节,“CREATE TABLE语法”。CREATE INDEX允许您向已有的表中添加索引。格式为(col1, col2,.)的一个列清单创建出一个多列索引。通过串接给定列中的值,确定索引值的格式。对于CHAR和VARCHAR列,只用一列的一部分就可创建索引。创建索引时,使用col_name(length)语法,对前缀编制索引。前缀包括每列值的前length个字符。BLOB和TEXT列也可以编制索引,但是必须给出前缀长度。此处展示的语句用于创建一个索引,索引使用列名称的前10个字符。CREATE INDEX part_of_name ON customer (name(10);因为多数名称的前10个字符通常不同,所以此索引不会比使用列的全名创建的索引速度慢很多。另外,使用列的一部分创建索引可以使索引文件大大减小,从而节省了大量的磁盘空间,有可能提高INSERT操作的速度。前缀最长为255字节。对于MyISAM和InnoDB表,前缀最长为1000字节。注意前缀的限长以字节计,而CREATE INDEX语句中的前缀长度指的是字符的数目。对于使用多字节字符集的列,在指定列的前缀长度时,要考虑这一点。在MySQL 5.1中:只有当您正在使用MyISAM, InnoDB或BDB表类型时,您可以向有NULL值的列中添加索引。只有当您正在使用MyISAM, BDB或InnoDB表类型时,您可以向BLOB或TEXT列中添加索引。一个index_col_name规约可以以ASC或DESC为结尾。这些关键词将来可以扩展,用于指定递增或递减索引值存储。目前,这些关键词被分析,但是被忽略;索引值均以递增顺序存储。部分储存引擎允许在创建索引时指定索引类型。index_type指定语句的语法是USINGtype_name。不同的储存引擎所支持的type_name值已显示在下表中。如果列有多个索引类型,当没有指定index_type时,第一个类型是默认值。存储引擎允许的索引类型MyISAMBTREEInnoDBBTREEMEMORY/HEAPHASH,BTREE示例:CREATE TABLE lookup (id INT) ENGINE = MEMORY;CREATE INDEX id_index USING BTREE ON lookup (id);TYPEtype_name可以作为USINGtype_name的同义词,用于指定索引类型。但是,USING是首选的格式。另外,在索引规约语法中,位于索引类型前面的索引名称不能使用TYPE。这是因为,与USING不同,TYPE不是保留词,因此会被认为是一个索引名称。如果您指定的索引类型在给定的储存引擎中不合法,但是有其它的索引类型适合引擎使用,并且不会影响查询功能,则引擎应使用此类型。要了解更多有关MySQL如何使用索引的信息,请参见7.4.5节,“MySQL如何使用索引”。FULLTEXT索引只能对CHAR, VARCHAR和TEXT列编制索引,并且只能在MyISAM表中编制。请参见12.7节,“全文搜索功能”。SPATIAL索引只能对空间列编制索引,并且只能在MyISAM表中编制。空间列类型在第19章:MySQL中的空间扩展中进行了描述。13.1.5.CREATE TABLE语法13.1.5.1. 沉寂的列规格变更CREATE TEMPORARY TABLE IF NOT EXISTS tbl_name (create_definition,.) table_options select_statement或:CREATE TEMPORARY TABLE IF NOT EXISTS tbl_name ( LIKE old_tbl_name );create_definition: column_definition | CONSTRAINT symbol PRIMARY KEY index_type (index_col_name,.) | KEY index_name index_type (index_col_name,.) | INDEX index_name index_type (index_col_name,.) | CONSTRAINT symbol UNIQUE INDEX index_name index_type (index_col_name,.) | FULLTEXT|SPATIAL INDEX index_name (index_col_name,.) | CONSTRAINT symbol FOREIGN KEY index_name (index_col_name,.) reference_definition | CHECK (expr)column_definition: col_name type NOT NULL | NULL DEFAULT default_value AUTO_INCREMENT UNIQUE KEY | PRIMARY KEY COMMENT string reference_definitiontype: TINYINT(length) UNSIGNED ZEROFILL | SMALLINT(length) UNSIGNED ZEROFILL | MEDIUMINT(length) UNSIGNED ZEROFILL | INT(length) UNSIGNED ZEROFILL | INTEGER(length) UNSIGNED ZEROFILL | BIGINT(length) UNSIGNED ZEROFILL | REAL(length,decimals) UNSIGNED ZEROFILL | DOUBLE(length,decimals) UNSIGNED ZEROFILL | FLOAT(length,decimals) UNSIGNED ZEROFILL | DECIMAL(length,decimals) UNSIGNED ZEROFILL | NUMERIC(length,decimals) UNSIGNED ZEROFILL | DATE | TIME | TIMESTAMP | DATETIME | CHAR(length) BINARY | ASCII | UNICODE | VARCHAR(length) BINARY | TINYBLOB | BLOB | MEDIUMBLOB | LONGBLOB | TINYTEXT BINARY | TEXT BINARY | MEDIUMTEXT BINARY | LONGTEXT BINARY | ENUM(value1,value2,value3,.) | SET(value1,value2,value3,.) | spatial_typeindex_col_name: col_name (length) ASC | DESCreference_definition: REFERENCES tbl_name (index_col_name,.) MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ON DELETE reference_option ON UPDATE reference_optionreference_option: RESTRICT | CASCADE | SET NULL | NO ACTIONtable_options: table_option table_option .table_option: ENGINE|TYPE = engine_name | AUTO_INCREMENT = value | AVG_ROW_LENGTH = value | DEFAULT CHARACTER SET charset_name COLLATE collation_name | CHECKSUM = 0 | 1 | COMMENT = string | CONNECTION = connect_string | MAX_ROWS = value | MIN_ROWS = value | PACK_KEYS = 0 | 1 | DEFAULT | PASSWORD = string | DELAY_KEY_WRITE = 0 | 1 | ROW_FORMAT = DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT | UNION = (tbl_name,tbl_name.) | INSERT_METHOD = NO | FIRST | LAST | DATA DIRECTORY = absolute path to directory | INDEX DIRECTORY = absolute path to directorypartition_options: PARTITION BY LINEAR HASH(expr) | LINEAR KEY(column_list) | RANGE(expr) | LIST(column_list) PARTITIONS num SUBPARTITION BY LINEAR HASH(expr) | LINEAR KEY(column_list) SUBPARTITIONS(num) (partition_definition), (partition_definition), .partition_definition: PARTITION partition_name VALUES LESS THAN (expr) | MAXVALUE | IN (value_list) STORAGE ENGINE = engine-name COMMENT = comment_text DATA DIRECTORY = data_dir INDEX DIRECTORY = index_dir MAX_ROWS = max_number_of_rows MIN_ROWS = min_number_of_rows TABLESPACE = (tablespace_name) NODEGROUP = node_group_id (subpartition_definition), (subpartition_definition), .subpartition_definition: SUBPARTITION logical_name STORAGE ENGINE = engine-name COMMENT = comment_text DATA DIRECTORY = data_dir INDEX DIRECTORY = index_dir MAX_ROWS = max_number_of_rows MIN_ROWS = min_number_of_rows TABLESPACE = (tablespace_name) NODEGROUP = node_group_idselect_statement: IGNORE | REPLACE AS SELECT . (Some legal select statement)CREATE TABLE用于创建带给定名称的表。您必须拥有表CREATE权限。允许的表名称的规则列于9.2节,“数据库、表、索引、列和别名”中。默认的情况是,表被创建到当前的数据库中。如果表已存在,或者如果没有当前数据库,或者如果数据库不存在,则会出现错误。表名称被指定为db_name.tbl_name,以便在特定的数据库中创建表。不论是否有当前数据库,都可以通过这种方式创建表。如果您使用加引号的识别名,则应对数据库和表名称分别加引号。例如,mydb.mytbl是合法的,但是mydb.mytbl不合法。在创建表格时,您可以使用TEMPORARY关键词。只有在当前连接情况下,TEMPORARY表才是可见的。当连接关闭时,TEMPORARY表被自动取消。这意味着两个不同的连接可以使用相同的临时表名称,同时两个临时表不会互相冲突,也不与原有的同名的非临时表冲突。(原有的表被隐藏,直到临时表被取消时为止。)您必须拥有CREATE TEMPORARY TABLES权限,才能创建临时表。如果表已存在,则使用关键词IF NOT EXISTS可以防止发生错误。注意,原有表的结构与CREATE TABLE语句中表示的表的结构是否相同,这一点没有验证。注释:如果您在CREATE TABLE.SELECT语句中使用IF NOT EXISTS,则不论表是否已存在,由SELECT部分选择的记录都会被插入。MySQL通过数据库目录中的.frm表格式(定义)文件表示每个表。表的存储引擎也可能会创建其它文件。对于MyISAM表,存储引擎可以创建数据和索引文件。因此,对于每个MyISAM表tbl_n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年桂林市临桂区吾悦幼儿园招聘教师考试笔试试题(含答案)
- 动物骨骼在文物保护与修复中的应用创新创业项目商业计划书
- 物体识别AR购物体验创新创业项目商业计划书
- 动物专用止痒产品创新创业项目商业计划书
- 2025年直播电商主播影响力与直播广告营销策略研究报告
- 2025年工业互联网平台数字水印技术在数据安全治理中的应用与效果评估
- 2025年干细胞治疗神经系统疾病临床应用创新案例解析报告
- 2025年城市河道生态修复项目生态修复效果与生态修复实施
- 2026届内蒙古赤峰市宁城县化学高二上期末综合测试试题含答案
- 民法典物业培训课件
- 2025年吉林省中考语文真题(含答案)
- 2025高级会计师考试试题及答案
- 工地建筑钢板租赁合同范本
- 光传输业务配置课件
- (标准)便利店转让合同协议书带烟证
- 2025年辽宁省地质勘探矿业集团有限责任公司校园招聘笔试备考题库带答案详解
- 2025年青海辅警招聘考试题及答案
- 2025新外研版初中英语八年级上全册课文原文翻译
- GB∕T 40753-2021 供应链安全管理体系 ISO 28000实施指南
- GA∕T 1577-2019 法庭科学 制式枪弹种类识别规范
- 福州市长乐区农村宅基地及房屋确权登记
评论
0/150
提交评论