zoukankan      html  css  js  c++  java
  • MySQL基础之 如何删除主键

    我们在一个表中设置了主键之后,那么如何删除主键呢?

    删除主键的语法是:

    ALTER  TABLE  TABLE_NAME  DROP  PRIMARY  KEY;

    在这里我们要考虑两种情况:

    1、可以直接使用drop删除主键的情况。

    mysql> create table test1_3(
        -> id int not null primary key,
        -> name char(10)
        -> );
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> alter table test1_3 drop primary key;
    Query OK, 0 rows affected (0.02 sec)
    Records: 0  Duplicates: 0  Warnings: 0

    2、如果带有主键的列还有AUTO_INCREMENT属性,需要间接方式去掉。

    mysql> create table test1_2(
        -> id int not null  auto_increment,
        -> name char(10),-> primary key(id)
        -> );
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> desc test1_2;+-------+----------+------+-----+---------+----------------+
    | Field | Type     | Null | Key | Default | Extra          |
    +-------+----------+------+-----+---------+----------------+
    | id    | int(11)  | NO   | PRI | NULL    | auto_increment |
    | name  | char(10) | YES  |     | NULL    |                |
    +-------+----------+------+-----+---------+----------------+
    2 rows in set (0.00 sec)
    
    mysql> desc test1_2;
    +-------+----------+------+-----+---------+----------------+
    | Field | Type     | Null | Key | Default | Extra          |
    +-------+----------+------+-----+---------+----------------+
    | id    | int(11)  | NO   | PRI | NULL    | auto_increment |
    | name  | char(10) | YES  |     | NULL    |                |
    +-------+----------+------+-----+---------+----------------+
    2 rows in set (0.00 sec)
    
    mysql> alter table test1_2 drop primary key;
    ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key               #这说明此列是自动增长列,无法直接删除
    mysql> alter table test1_2 modify id int;
    Query OK, 0 rows affected (0.03 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> alter table test1_2 drop primary key;
    Query OK, 0 rows affected (0.02 sec)
    Records: 0  Duplicates: 0  Warnings: 0

    所以说如果列的属性还带有AUTO_INCREMENT,那么要先将这个列的自动增长属性去掉,才可以删除主键。

  • 相关阅读:
    Git: fatal: Pathspec is in submodule
    cnpm不是内部或外部命令 cnpm: command not found
    kubectl top查看k8s pod的cpu , memory使用率情况
    Docker 技巧:删除 Docker 所有镜像
    Docker 快速删除所有容器
    使用Dockerfile文件构建基于centOS系统的nodejs镜像
    CentOS下nodejs最简单的安装方法
    yum安装nodejs 8
    系统空间占用排查 tomcat超大日志catalina.out 删除 与df 状态更新
    用dockerfile构建基于centos系统的jar包的镜像
  • 原文地址:https://www.cnblogs.com/FengGeBlog/p/9927888.html
Copyright © 2011-2022 走看看