在对MySQL数据表进行操作之前,必须首先使用 use 语句选择数据库,才可在指定的数据库中对数据表进行操作。
下面详细说一下对数据表的操作方法。
使用 create table
语句创建数据表。语法如下
create [ TEMPORARY ] table [IF NOT EXISTS] 数据表名
[( create_definition,```)] [ table_options ] [select_statement]
create table
语句的参数说明如下表
参数 | 说明 |
---|---|
TEMPORARY | 如果使用该关键字,表示创建一个临时表 |
IF NOT EXISTS | 该关键字用于避免表存在时MySQL报告的错误 |
create_definition | 这是表的列属性部分。MySQL要求在创建表时,表要至少包含一列 |
table_options | 表的一些特性参数 |
select_statement | SELECT语句描述部分,用它可以快速地创建表 |
下面介绍列属性create_definition
部分,每一列定义的具体格式如下:
col_name type [NOT NULL INULL][DEFAULT default_value][AUTO_INCREMENT]
[PRIMARY KEY ][reference definition]
属性create_definition
的参数说明如下表所示。
参数 | 说明 |
---|---|
col_name | 字段名 |
type | 字段类型 |
NOT NULL l NULL | 指出该列是否允许是空值,系统一般默认允许为空值,所以当不允许为空值时,必须使用NOT NULL |
DEFAULT default_value | 表示默认值 |
AUTO_INCREMENT | 表示是否是自动编号,每个表只能有一个AUTO_INCREMENT列,并且必须被索引 |
PRIMARY KEY | 表示是否为主键。一个表只能有一个PRIMARY KEY。如表中没有一个PRIMARYKEY,而某些应用程序需要PRIMARY KEY,MySQL将返回第一个没有任何NULL列的UNIQUE键,作为PRIMARY KEY |
reference_definition | 为字段添加注释 |
以上是创建一个数据表的一些基础知识,它看起来十分复杂,但在实际的应用中使用最基本的格式创建数据表即可,具体格式如下:
create table table_name(列名1属性,列名2属性…);
【例】使用CREATE TABLE
语句在 MySQL 数据库 test
中创建一个名为 tb_admin
的数据表,该表包括id
、user
、password
和createtime
等字段,如图所示。
show [FULL] columns from 数据表名 [from 数据库名];
或者:
show [FULL] columns from 数据库名.数据表名;
【例】使用 show columns
查看数据表 tb_admin
结构
describe 数据表名;
其中 DESCRIBE 可以简写成DESC 。 在查看表结构时,也可以只列出某一列的信息。其语法格式如下:
describe 数据表名 列名;
【例】使用 describe
语句的简写形式查看数据表 tb_admin
中的某一列信息:
使用 alter table
语句修改表结构。修改表结构指增加或者删除字段、修改字段名称或者字段类型、设置取消主键外键、设置取消索引以及修改表的注释等。
alter [IGNORE] table 数据表名 alter_spec[, alter_spec]```
注意:当指定 IGNORE
时,如果出现重复关键的行,则只执行一行,其他重复的行被删除。
其中, alter_spec
子句定义要修改的内容,其语法如下:
alter_specification:
ADD[COLUMN] create_definition [FIRST |AFTER column_name ] //添加新字段
ADD INDEX [index_name] (index_col_name,…") //添加索引名称
ADD PRIMARY KEY (index_col__name,…) //添加主键名称
ADD UNIQUE [index_name] (index_col_name,…) //添加唯一索引
ALTER [COLUMN] col_name { SET DEFAULT literal | DROP DEFAULT } //修改字段名称
CHANGE [COLUMN] old_col_name create_definition //修改字段类型
MODIFY [cOLUMN] create_definition //修改子句定义字段
DROP [COLUMN] col_name //删除字段名称
DROP PRIMARY KEY //删除主键名称
DROP INDEX index_name //删除索引名称
RENAME [AS]new_tbl_name //更改表名
table_options
alter table
语句允许指定多个动作,其动作间使用逗号分隔,每个动作表示对表的一个修改。
【例】添加一个新的字段email
,类型为varchar(50)
,not null
,将字段user的类型由varchar(30)
改为varchar(40)
,代码如下:
alter table 表名 add email varchar(50) not null, modify user varchar(40);
注意: 通过 alter
修改表列,其前提是必须将表中数据全部删除,然后才可以修改表列。
语法如下:
rename table 数据表名1 to 数据表名2
注意: 该语句可以同时对多个数据表进行重命名,多个表之间以逗号“,”分隔。
【例】对数据表 tb_admin
进行重命名,更名后的数据表为 tb_user
,如下图:
类似删除数据库的操作
drop table 数据表名;
注意:一旦删除了数据表,那么表中的数据将会全部清除,没有备份则无法恢复。
在删除数据表的过程中,删除一个不存在的表将会产生错误,如果在删除语句中加入 if exists
关键字就不会出错了:
drop table if exists 数据表名;