MySQL 查看数据库表结构 修改表结构 修改字段 修改约束条件 修改表名 删除数据库表
查看数据库表结构
- 可以使用 describe 语句来查看数据表结构,代码如下:
describe users;
- 在控制台中输入上述语句后的执行结果如下所示:
修改表结构
- 在实际应用中,当发现某个表的结构不满足要求时,可以使用 alter table 语句来修改表的结构,包括修改表的名称、添加新的字段、删除原有的字段、修改字段类型、索引及约束,还可以修改存储引擎及字符集等。修改表的语法格式如下:
alter table 表名 action[,action]...;
- 其中,每个动作(action)是对表所做的修改,MySQL 支持一条 alter table 语句带多个动作,中间用逗号隔开。下面详细介绍一下几种常用的修改
- 1、修改字段
- (1)添加新字段
- 向表里添加新字段可以通过在 action 语句中使用 add 关键字来实现,语法格式如下:
alter table 表名 add 新字段名 数据类型 [约束条件][first|after 字段名];
- 向表中添加新字段时通常需要指定新字段在表中的位置,如果没有指定 first 或者 after 关键字,则在表的末尾添加新字段,否则在指定位置添加新字段
- 例如,为用户表 users 添加一个 address 字段,数据类型为 varchar(50),非空约束,可以使用如下的 SQL 语句:
alter table users add address varchar(50) not null;
- 若要在 users 表中的 sex 字段后增加一个 phone 字段,数据类型为 varchar(20),非空约束,则对应的 SQL 语句如下:
alter table users add phone varchar(20) not null after sex;
- 添加字段后的 users 表的结构如下图所示
- (2)修改字段
- 如果只需要修改字段的数据类型,则使用 change 或者 modify 子句,其语法如下:
alter table 表名 change 原字段名 新字段名 数据类型;
alter table 表名 modify 字段名 数据类型;
- 例如,要修改 users 表中的 phone 字段,将数据类型由 varchar(20) 改为 int,并设置默认值为 0,下面两种方法是等价的:
alter table users change phone phone int unsigned default 0;
alter tablr users modify phone int unsigned default 0;
- 如果需要修改字段的字段名(以及数据类型)这时就只能使用 change 子句了。例如,将 users 表中的 phone 字段修改为 telephone 字段,且数据类型修改为 varchar(20),则可以使用如下 SQL 语句:
alter table users change phone telephone varchar(20);
- (3)删除字段
- 删除表字段的语法格式如下:
alter table 表名 drop 字段名;
- 例如,将 users 表中的 address 字段删除,则可以使用如下 SQL 语句:
alter table users drop address;
- 2、修改约束条件
- (1)添加约束条件
- 向表的某个字段添加约束条件的语法格式如下:
alter table 表名 add constraint 约束名 约束类型(字段名);
- 例如,向用户表 users 的 telephone 添加唯一性约束,且约束名为 phone_unique,可以使用如下 SQL 语句:
alter table users add constraint phone_unique unique(telephone);
- 添加了上述约束条件后,users 表的结构如下所示:
- 如果要向订单表 orders 的 uid 字段添加外键约束,且约束名为 fk_orders_users,可以使用如下 SQL 语句:
alter table users add constraint fk_orders_users foreign key(uid) references users(uid);
- (2)删除约束条件
- 若要删除表的主键约束,其语法格式如下:
alter table 表名 drop primary key;
- 例如,要删除订单表 orders 的主键约束,可以使用如下 SQL 语句:
alter table orders drop primary key;
- 若要删除表的外键约束,其语法格式如下:
alter table 表名 drop foreign key 外键约束名;
- 例如,要删除订单表 orders 的外键约束,可以使用如下 SQL 语句:
alter table drop foreign key fk_orders_users;
- 若要删除字段的唯一性约束,则只需要删除该字段的唯一性索引即可,其语法格式如下:
alter table 表名 drop index 唯一索引名;
- 例如,要删除用户表 users 的 telephone 字段的唯一性索引,可以使用如下 SQL 语句:
alter table users drop index phone_unique;
- 3、修改表名
- 修改表名的语法格式如下:
alter table 原表名 rename to 新表名;
- 还可以使用 rename table 语句,其语法格式如下:
rename table 原表名 to 新表名;
- 例如,将 users 表的表名修改为 tbl_users,可以使用以下代码:
alter table users rename to tbl_users;
rename table users to tbl_users;
- 4、修改表的其他设置
- 修改表的其他设置,常用的操作如修改存储引擎、默认字符集等。例如,修改 users 表的存储引擎和默认字符集:
alter table users engine=MyISAM;
alter table users default charset=utf8;
删除数据库表
- 要删除数据库表,可以使用 drop table 语句实现,例如删除 users 表:
drop table users;
- 在默认情况下,当试图删除一个不存在的表时,系统会报错。例如,以下的情况(orders 表不存在):
drop table orders;
- 系统会出现 Unknown table “orders” 的错误信息,为避免这种错误,可以使用如下语句:
drop table if exists orders;