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,那么要先将这个列的自动增长属性去掉,才可以删除主键。

  • 相关阅读:
    input搜索框实时检索功能实现(超简单,核心原理请看思路即可)
    django blank 和autonow
    dwebsocket的坑
    vue 动态添加active+父子传值
    NO 2,人生苦短,我学python之python+selenium元素定位
    NO 1,人生苦短,我学python之python+selenium自动化环境搭建
    SPU与SKU概念
    数据库,缓存数据一致性常用解决方案总结
    利用注解 + 反射消除重复代码
    Nacos学习与实战
  • 原文地址:https://www.cnblogs.com/FengGeBlog/p/9927888.html
Copyright © 2011-2022 走看看