创建数据表,查看,修改表结构
- 创建数据表
- 查看表结构
- 修改表结构
- 删除表
创建数据表
在对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语句选择要使用的数据库,再使用上面语句的创建,运行结果如下:
还可以使用SELECT语句进行快速创建表,他是在一个已经存在的数据表的基础上创建该表的备份,相当于复制一个表的结构。
语法:CREATE TABLE [IF NOT EXISTES] 数据表名 {LIKE 源数据表名}
{LIKE 源数据名}
:必选项,表示指定依照哪个数据表来创建新表。
示例:CREATE TABLE IF NOT EXISTES TEXT_1 {LIKE TEXT};
结果如下:
这里可以看出两个表的结果是一样的,即我们复制表text创建text_1成功了。
注意:这里我们虽然复制了表的结构,但是并不能对表的内容进行复制,即新复制的表为空表,如果要复制源数据表的内容,可以通过
AS
语句来实现,如:CREATE TABLE TEXT_1 AS SELECT * FROM TEXT
,这里的SELECT我们后面会讲该语句。
查看表结构
通过上面创建数据表,现在我们来查看我们刚创建的数据表,使用SHOW COLUMNS语句来查看表结构。
语句:SHOW COLUMNS FROM 数据库表名 [FROM 数据库名];
或者 SHOW COLUMNS FROM 数据库表名.数据库名;
示例:SHOW COLUMNS FROM TEXT;
结果如下:
修改表结构
修改表结构指的是增加或删除字段、修改字段名\类型以及修改表名等,这里可以使用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
提示:ALTER TABLE语句允许指定多个动作,其动作间使用逗号分隔,每个动作表示对表的结构进行修改。这里更改表名还可以直接使用
RENAME TABLE old_tbl_name TO new_tbl_name;
语句。
删除表
语法:DROP TABLE [IF EXISTS] 数据表名;
>>> 这里的数据表名可以为多个,他们之间使用英文的“,”
隔开
示例:DROP TABLE TEXT_1;
结果如下: