MySQL CREATE TABLE语句
时间:2019-02-04 12:52:27 来源:igfitidea点击:
MySQL CREATE TABLE语句用于创建和定义表。
语法
在最简单的形式中,MySQL中CREATE TABLE语句的语法为:
CREATE TABLE table_name ( column1 datatype [ NULL | NOT NULL ], column2 datatype [ NULL | NOT NULL ], ... );
但是,MySQL CREATE TABLE语句的完整语法为:
CREATE [ TEMPORARY ] TABLE [IF NOT EXISTS] table_name ( column1 datatype [ NULL | NOT NULL ] [ DEFAULT default_value ] [ AUTO_INCREMENT ] [ UNIQUE KEY | PRIMARY KEY ] [ COMMENT 'string' ], column2 datatype [ NULL | NOT NULL ] [ DEFAULT default_value ] [ AUTO_INCREMENT ] [ UNIQUE KEY | PRIMARY KEY ] [ COMMENT 'string' ], ... | [CONSTRAINT [constraint_name]] PRIMARY KEY [ USING BTREE | HASH ] (index_col_name, ...) | [INDEX | KEY] index_name [ USING BTREE | HASH ] (index_col_name, ...) | [CONSTRAINT [constraint_name]] UNIQUE [ INDEX | KEY ] [ index_name ] [ USING BTREE | HASH ] (index_col_name, ...) | {FULLTEXT | SPATIAL} [ INDEX | KEY] index_name (index_col_name, ...) | [CONSTRAINT [constraint_name]] FOREIGN KEY index_name (index_col_name, ...) REFERENCES another_table_name (index_col_name, ...) [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE { RESTRICT | CASCADE | SET NULL | NO ACTION } ] [ ON UPDATE { RESTRICT | CASCADE | SET NULL | NO ACTION } ] | CHECK (expression) {ENGINE | TYPE} = engine_name | AUTO_INCREMENT = value | AVG_ROW_LENGTH = value | [DEFAULT] CHARACTER SET = charset_name | CHECKSUM = {0 | 1} | [DEFAULT] COLLATE = collation_name | COMMENT = 'string' | DATA DIRECTORY = 'absolute path' | DELAY_KEY_WRITE = { 0 | 1 } | INDEX DIRECTORY = 'absolute path' | INSERT_METHOD = { NO | FIRST | LAST } | MAX_ROWS = value | MIN_ROWS = value | PACK_KEYS = {0 | 1 | DEFAULT} | PASSWORD = 'string' | RAID_TYPE = { 1 | STRIPED | RAIDO } RAID_CHUNKS = value RAID_CHUNKSIZE = value | ROW_FORMAT = {DEFAULT | DYNAMIC | FIXED | COMPRESSED} | UNION = (table1, ... ) );
参数 | 说明 |
---|---|
TEMPORARY | 可选的。它指定该表是一个临时表。 |
IF NOT EXISTS | 可选的。如果指定该参数,则如果表已经存在,则CREATE TABLE语句将不会引发错误。 |
table_name | 要创建的表的名称。 |
column1, column2 | 表的字段名。 |
datatype | 字段的数据类型 |
NULL或NOT NULL | 每个字段都要定义为NULL或NOT NULL。如果省略此参数,则数据库将使用NULL作为默认值。 |
DEFAULT default_value | 可选的。指定默认值。 |
AUTO_INCREMENT | 可选的。将列设置为自动编号字段。 |
constraint_name | 可选的。约束的名称(如果定义了主键,唯一约束或外键)。 |
index_col_name 可选的。它的语法:column_name [ (length) ] [ ASC | DESC ] |
注意
在表中只能有一个字段被设置为AUTO_INCREMENT,并且该列必须是主键。
MySQL CREATE TABLE语句示例
CREATE TABLE contacts ( contact_id INT(11) NOT NULL AUTO_INCREMENT, last_name VARCHAR(30) NOT NULL, first_name VARCHAR(25), birthday DATE, CONSTRAINT contacts_pk PRIMARY KEY (contact_id) );
这个MySQL CREATE TABLE示例创建了一个名为contacts的表,该表有4个字段和一个主键:
- 第一字段称为contact_id,它创建为INT数据类型(最大11位数字),并且不能包含NULL值。设置为AUTO_INCREMENT字段,这意味着它是一个自动编号字段(从1开始,以1递增,除非另有说明。)
- 第二字段称为last_name,它是VARCHAR数据类型(最大30个字符),并且不能包含NULL值。
- 第三字段称为first_name,它是VARCHAR数据类型(最多25个字符),并且可以包含NULL值。
- 第四字段称为birthday,它是DATE数据类型,可以包含NULL值(默认)。
- 主键名称设置为contacts_pk,并设置为contact_id列。
CREATE TABLE suppliers ( supplier_id INT(11) NOT NULL AUTO_INCREMENT, supplier_name VARCHAR(50) NOT NULL, account_rep VARCHAR(30) NOT NULL DEFAULT 'YKBJ', CONSTRAINT suppliers_pk PRIMARY KEY (supplier_id) );
这个示例创建了一个具有DEFAULT值的表,该表格有3个字段和一个主键:
- 第一列称为Supplier_id,它是作为INT数据类型创建的(最大长度为11位),并且不能包含NULL值。设置为AUTO_INCREMENT字段。
- 第二列称为Supplier_name,它是VARCHAR数据类型(最大50个字符),并且不能包含NULL值。
- 第三列称为account_rep,它是VARCHAR数据类型(最大30个字符),不能包含NULL值。如果没有为该列提供值,则默认值将为“YKBJ”。主键称为Suppliers_pk,并设置在vendor_id列中。