创建数据表,查看,修改表结构

创建数据表

在对MySQL数据表进行操作之前我们需要创建数据库,并使用USE语句选择数据库。

创建数据库使用CREATE TABLE语句:

语法:CREATE [TEMPORARY] TABLE [IF NOT EXISTS] 数据表名 [(create_definition,...)][select_statement];

[TEMPORARY]:表示创建一个临时表。

[IF NOT EXISTS]:表示判断表是否存在,不存在即创建,存在则防止报错。

[(create_definition,...)]:表示创建表时,表中每一列的属性,需要注意的是,创建数据表时,必须包含一个列属性,否则会报错。

[select_statement]:SELECT语句描述部分,用于快速创建表。


对于create_define,即创建表的属性,我们来进行单独的说明,因为在创建表,最重要的部分就在于此了。

语法:col_name type [NOT NULL | NULL][DEFAULT default_value][AUTO_INCREMENT][PERIMARY KEY];

col_name:字段名。

type:字段类型。

[NOT NULL | NULL]:指出该列是否允许是空值,系统一般会默认允许为空值,,所以当不允许为空值时,必须使用NOT NULL。

[DEFAULT default_value]:表示默认值是多少。

[AUTO_INCREMENT]:表示自动编号,可以设定从什么值开始自增,每个表只能有一个AUTO_INCREMENT列,并且必须被索引。

[PERIMARY KEY]:主键,一个表只能有一个主键,并且在设置的主键的列中的值必须唯一并且不能为空。


示例:

CREATE TABLE TEXT(ID INT AUTO_INCREMENT PRIMARY KEY,
						NA VARCHAR(30),
						COURSE VARCHAR(30) NOT NULL,
						CREATETIME DATETIME);

首先使用USE语句选择要使用的数据库,再使用上面语句的创建,运行结果如下:

MySQL数据库从入门到精通学习第5天(创建数据表,查看,修改表结构,删除表)-LMLPHP

还可以使用SELECT语句进行快速创建表,他是在一个已经存在的数据表的基础上创建该表的备份,相当于复制一个表的结构。

语法:CREATE TABLE [IF NOT EXISTES] 数据表名 {LIKE 源数据表名}

{LIKE 源数据名}:必选项,表示指定依照哪个数据表来创建新表。

示例:CREATE TABLE IF NOT EXISTES TEXT_1 {LIKE TEXT};

结果如下:

MySQL数据库从入门到精通学习第5天(创建数据表,查看,修改表结构,删除表)-LMLPHP

这里可以看出两个表的结果是一样的,即我们复制表text创建text_1成功了。

查看表结构

通过上面创建数据表,现在我们来查看我们刚创建的数据表,使用SHOW COLUMNS语句来查看表结构。

语句:SHOW COLUMNS FROM 数据库表名 [FROM 数据库名]; 或者 SHOW COLUMNS FROM 数据库表名.数据库名;

示例:SHOW COLUMNS FROM TEXT;

结果如下:

MySQL数据库从入门到精通学习第5天(创建数据表,查看,修改表结构,删除表)-LMLPHP

修改表结构

修改表结构指的是增加或删除字段、修改字段名\类型以及修改表名等,这里可以使用ALTER语句来实现。

语法:ALTER [IGNORE] TABLE 数据表名 alter_spec;

[IGNORE]:如果出现重复关键的行,则只执行一行,其他重复的行被删除。

数据库表名:用于指定要修改的数据表的名称。


对于alter_spec我们单独拿出来说明,因为他涉及到对数据表的结构的修改操作,语句比较多。

  • 添加新字段ADD [COLUMN] create_definition [FIRST | AFTER column_name] >>> create_definition 用于定义列的数据类型和属性。>>> [FIRST | AFTER column_name] 用于指定位于哪个字段的前面(FIRST)或者后面(AFTER),columns_name表示指定名。

  • 添加索引名称ADD INDEX [index_name] (index_col_name,...)>>> [index_name] 用于指定索引名。>>> (index_col_name,…) 指定索引列名。

  • 添加主键名称ADD PRIMARY KEY (index_col_name,...) >>> (index_col_name,…) 指定索引列名。

  • 添加唯一索引ADD UNIQUE [index_name] (index_col_name,...) >>> [index_name] 用于指定索引名。>>> (index_col_name,…) 指定索引列名。

  • 修改字段默认值ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} >>> {SET DEFAULT literal | DROP DEFAULT} 表示字段设置或者删除默认值。

  • 修改字段名/类型CHANGE [COLUMNS] old_col_name create_definition >>> old_col_name用于指定要修改的字段名。>>>create_definition用于定义列的数据类型和属性。

  • 修改子句定义字段MODIFY [COLUMNS] create_definition >>> create_definition用于定义列的数据类型和属性。

  • 删除字段名称DROP [COLUMNS] col_name

  • 删除主键名称DROP PRIMARY KEY

  • 删除索引名称DROP INDEX index_name

  • 更改表名RENAME [AS] new_tbl_name

删除表

语法:DROP TABLE [IF EXISTS] 数据表名;>>> 这里的数据表名可以为多个,他们之间使用英文的“,”隔开

示例:DROP TABLE TEXT_1;

结果如下:

MySQL数据库从入门到精通学习第5天(创建数据表,查看,修改表结构,删除表)-LMLPHP

05-25 01:37