码迷,mamicode.com
首页 > 数据库 > 详细

mysql数据库的基本介绍与操作(第二篇)

时间:2019-01-25 20:26:57      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:ima   自增   rem   重置   author   必须   图片   sql   exists   

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;(存在递增列,一定要先删除递增列的自动递增功能,再执行此语句).

 

        

       

  

mysql数据库的基本介绍与操作(第二篇)

标签:ima   自增   rem   重置   author   必须   图片   sql   exists   

原文地址:https://www.cnblogs.com/renwujie/p/10316555.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!