MySQL中如何利用代码完成表的创建、复制、修改和删除?下面总结了在创建表的时候各字段的含义以及注意哪些问题,复制和修改及删除常用的代码。

一、创建表

--创建新表,如果存在则覆盖
drop table [if exists] 表名;
--创建新表,如果存在则返回
create table
[if not exists] 表名 -- 不存在才创建,存在就跳过
(<列名1> <数据类型> -- 列名和类型必选
  [ primary key -- 可选的约束,主键
   | foreign key  -- 外键,引用其他表的键值
   | auto_increment -- 自增ID
   | comment <注释> -- 列注释(评论)
   | default <值> -- 默认值
   | unique -- 唯一性约束,不允许两条记录该列值相同
   | not null -- 该列非空,输入空会报错
   | current_timestamp -- 当前时间戳
  ], ...
) [character set <字符集名>] -- 字符集编码
[collate <校对规则名>] -- 列排序和比较时的规则(是否区分大小写等)

二、复制表

  • 复制表的结构
create table 新表名 like 旧表名;
  • 复制表的结构+数据
create table 表名 
select 查询列表 from 旧表名 [where 筛选条件];

三、修改表

  • 直接修改表
alter table 表名 修改选项;
选项集合:
{ add column <新增列名> <类型> after <某一列>  -- 在某一列之后增加列
| change column <旧列名> <新列名> <新列类型> -- 修改列名或类型
| alter column <列名> { set default <默认值> | drop default } -- 修改/删除 列的默认值
| modify column <列名> <类型> -- 修改列类型
| drop column <列名> -- 删除列
| rename to <新表名> -- 修改表名
| character set <字符集名> -- 修改字符集
| collate <校对规则名> } -- 修改校对规则(比较和排序时用到,是否区分大小写等)

建议:修改列属性时使用modify;修改列名使用change。

  • 删除表之后重建表
drop table if exists 表名; 
create table if not exists 表名...;

四、删除表

drop table [if exists] 表名 [,表名1,...];