1.创建表:
格式:
create table 表名(
列名 类型 是否可以为空,
列名 类型 是否可以为空,
) engine=innodb default charset=utf8;
例子:
create table t_article (
article_id INT (11) NOT NULL auto_increment,
article_name VARCHAR (200) NOT NULL,
article_author VARCHAR (100) NOT NULL,
article_src VARCHAR (1000) DEFAULT ‘文章来自万方库‘,
create_time TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘创建时间‘,
primary key (article_id)
) engine=innodb default charset=utf8;
对以上表结构的解释:
not null表示该字段的值不能为null.
auto_increment表示该字段是自动递增的,一张表仅能有一个自增递增字段,并且该自动递增的字段同时必须是主键,自动递增列还可以设置步长与初始值.
刚才上面创建了表t_article,article_id字段为递增字段,在此重新设置递增列.
2.删除表:
drop table 表名; 例子:drop table t_article;
#表如果存在则删除
drop table if exists 表名;例子:drop table if exists t_article;
#清空表
delete * from t_article;(存在递增字段的话,递增字段的初始值不为1,执行该删除语句后,id的初始值不会重置为1).
truncate table t_article;(存在递增字段的话,递增字段的初始值不为1,执行该删除语句后,id的初始值会重置为1).
3.修改表
#添加列
alter table 表名 add 列名 列类型; 例子: alter table t_article add article_keywords varchar(20);
#删除列
alter table 表名 drop column 列名; 例子: alter table t_article drop column article_keywords;
#修改列
alter table 表名 modify column 列名 类型; 例子: alter table t_article modify column article_src varchar(100);
alter table 表名 change 原列名 新列名 类型; 例子: alter table t_article change article_src article_source varchar(200);
#添加主键:
alter table 表名 add primary key(列名);
例子:alter table t_aricle add primary key(article_name); 执行此语句的时候会发生错误,提示如下:
发生以上错误的原因是:在创建t_article表的时候已经将article_id设置为了主键,但mysql的表只能有一个主键,不能有两个主键,因此这样的设置是错误的.
要想设置article_name为主键,可以使用以下两种解决方案.
方法1:去除t_artilce表的article_id主键,执行:alter table t_article drop primary key;继续执行,发生如下错误:
错误原因已经很明显了,以上的命令是去掉article_id,但是article_id字段被设置为了自动递增,递增列是必须要被设置为主键的,也就是
说递增列是无法解除其主键功能的,那该怎么办? 很简单,去掉article_id字段的自动递增功能呗,去除命令如下:
alter table t_article modify column article_id int(11) not null first;
去除表t_article中article_id的自动递增功能,再去除字段article_id的主键功能,执行结果如下:
very good,这样就可以赋予表t_article中article_name的主键功能了,执行结果如下:
完美,第一种方法演示结束.
方法2:将article_id与article_name设置为联合主键.按照下面四个步骤进行.
第一步: alter table t_article modify column article_id int(11) not null first; --删除article_id自动递增功能.
第二步: alter table t_article drop primary key; --删除article_id字段的主键特性.
第三步 : alter table t_article add primary key(article_id,article_name); --设置article_id与article_name为联合主键.
第四步 : alter table t_article modify column article_id int(11) not null auto_increment; --恢复article_id的自动递增功能.
操作结果如下:
#删除主键
alter table 表名 drop primary key; ----alter table t_article drop primary key;(存在递增列,一定要先删除递增列的自动递增功能,再执行此语句).
原文地址:https://www.cnblogs.com/renwujie/p/10316555.html