代码编织梦想

创建class表

CREATE TABLE CLASS
(
	classid INT PRIMARY KEY,
	`subject` VARCHAR(20),
	deptname VARCHAR(30) unique,
	enrolltime INT not null,
	num INT not null,
	FOREIGN KEY (deptname) REFERENCES DEPARTMENT(deptname)
)

在修改deptname列从unique到不唯一时,发现由于有外键依赖不能直接删除unique index。

  1. 首先要删除外键,删除外键有两步:
    1. 先要找到外键的约束名称:
      -- 找出约束名:
      SHOW CREATE TABLE 表名;
      -- 在我的情况下:
      SHOW CREATE TABLE class;

      执行该命令后会显示

       将Create Table列的内容复制下来:

      CREATE TABLE `class` (
        `classid` int(11) NOT NULL,
        `subject` varchar(20) COLLATE utf8_bin DEFAULT NULL,
        `deptname` varchar(30) COLLATE utf8_bin DEFAULT NULL,
        `num` int(11) NOT NULL,
        `enrolltime` int(11) DEFAULT NULL,
        PRIMARY KEY (`classid`),
        UNIQUE KEY `deptname` (`deptname`),
        CONSTRAINT `class_ibfk_1` FOREIGN KEY (`deptname`) REFERENCES `department` (`deptname`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
      

      可以在倒数第二行找到外键约束的名称:`class_ibfk_1`

    2. 删除外键约束:
      -- 删除外键
      alter table 表名 drop FOREIGN key 外键约束名称
      -- 在我的情况下
      alter table class drop FOREIGN key class_ibfk_1
  2. 删除unique index:
    -- 删除index
    alter table 表名 drop index index名称;
    -- 在我的情况下
    alter table class drop index deptname;
  3. 重新加上外键约束: 
    -- 添加外键约束:
    alter table 表名 add CONSTRAINT 约束名 FOREIGN key (外键名) REFERENCES 依赖表(依赖项)
    -- 在我的情况下:
    alter table class add CONSTRAINT `class_ibfk_1` FOREIGN key (deptname) REFERENCES department(deptname)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_50801356/article/details/127157150

access建立两个字段唯一索引_MySQL 主键、外键、索引-爱代码爱编程

点击蓝色字免费订阅,每天收到这样的好信息 前言:最近有不少粉丝关注本公众号。并且我已经成功开通了流量主同时会赚一点点广告费,我打算每个月把这部分钱拿出来给大家买点书刊,算是给大家一点福利吧。大家想买什么书扫描下方的加他拉你加群。最后,非常感谢大家的关注。 干货: 主键是关系表中记录的唯一标识。主键的选取非常重

删除 索引 外键 mysql_MySQL无法删除外键约束中所需的索引-爱代码爱编程

MySQL无法删除外键约束中所需的索引 我需要更改现有数据库以添加列。 因此,我还想更新UNIQUE字段以包含该新列。 我试图删除当前索引但仍然收到错误MySQL Cannot drop index needed in a foreign key constraint CREATE TABLE mytable_a ( ID TINYINT NOT

mysql多字段唯一约束_mysql多字段唯一约束-爱代码爱编程

MySQL唯一约束(Unique Key)要求该列唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或者几列不出现重复值。 在创建表时设置唯一约束 在定义完列之后直接使用 UNIQUE 关键字指定唯一约束,语法规则如下: UNIQUE 创建数据表 tb_dept2,指定部门的名称唯一,输入的 SQL 语句和运行结果如下所示。mysql&

mysql外键是唯一索引_MySQL之使用唯一索引约束外键不可以重复 | it运维_it技术_linux运维-追梦人博客...-爱代码爱编程

前面我们介绍了: 今天来介绍下如何通过唯一索引来约束外键不可以重复。 一、场景说明 需要开发有个博客系统,要求用户注册的用户名不能重复,同时每个用户对应一个博客的目录uri地址,用户名和博客目录uri都不可以重复,如何实现? 这里就用到我们今天要介绍的通过唯一索引来约束外键了。 二、实现 2.1、创建用户表 create table us

Mysql完整性约束详解(字段唯一,非空,主键primary key,外键foreign key,自增长auto_increment)-爱代码爱编程

引入 1.什么是完整性约束, 为什么使用 为了规范数据格式, 在用户进行插入、修改、删除等操作时,DBMS(数据库管理系统(Data Base Management System))自动按照约束条件对数据进行监测, 使不符合规范的数据不能进入数据库, 以确保数据的完整性和唯一性 2.约束分类 表完整性约束条件与字段数据类型的宽度一样, 都是可选参数

mysql自增唯一约束_MySQL--唯一约束、自增约束、外键约束说明-爱代码爱编程

字段的唯一约束UNIQUE 字段唯一约束的说明: (1)、唯一约束可以保证记录的唯一性,即就是同一个表中,相同字段的值不会出现重复。 (2)、唯一约束的字段可以为空值(NULL)。 (3)每一张数据表可以存在多个唯一约束字段。 AUTO_INCREMENT自增约束 1、AUTO_INCREMENT可以约束任何一个字段,该字段不一定是PRIM

MySQL基础之主键与唯一(UNIQUE)的区别,外键,视图与存储过程-爱代码爱编程

文章目录 前言一、主键与唯一(UNIQUE)的区别二、视图与存储过程1.视图2.存储过程三、外键1.外键的特点 前言 本文介绍主键与唯一的区别,外键,以及视图与存储过程的使用 提示:以下是本篇文章正文内容,下面案例可供参考 一、主键与唯一(UNIQUE)的区别 二者的共性在于均可保证其约束的字段数据的唯一性 下面讲讲二者的区别: 主键

【MySQL】解决MySQL删除外键(foreign key)时报错问题-爱代码爱编程

【MySQL】解决MySQL删除外键(foreign key)时报错问题 文章目录 【MySQL】解决MySQL删除外键(foreign key)时报错问题一、现象二、分析三、问题解决四、拓展 一、现象   (1) 查看主表class_info和从表student。 MariaDB [class_info]> desc class_

mysql不能删除外键吗,MySQL不能删除外键约束所需的索引-爱代码爱编程

MySQL不能删除外键约束所需的索引 我需要改变现有的数据库添加一列。 因此我也想更新UNIQUE字段来包含这个新列。 我试图删除当前的索引,但不断收到错误MySQL Cannot drop index needed in a foreign key constraint CREATE TABLE mytable_a ( ID TINYINT NO

MySql的创建数据表、约束、外键约束的创建修改删除、级联操作-爱代码爱编程

目录标题 对数据库的操作数据表的操作数据类型约束基本知识外键约束级联操作 DDL 数据定义语言 创建:create 修改:alert 删除:drop 对数据库的操作 数据库的创建:create database 数据库名;数据库如果不存在就创建:create database if not exists 数据库名;更改数据库的字符集:ale

【MySQL】MySQL中的四大约束(非空约束、唯一性约束、主键约束、外键约束)详解【附源码】-爱代码爱编程

文章目录 MySQL约束(constraint)1.非空约束(not null)2.唯一性约束(unique)(1)两个字段联合唯一约束(2)not null与unique联合3.主键约束(primary key)(1)单一主键(2)复合主键(3)自然主键(4)业务主键4.外键约束(foreign key) MySQL约束(constraint

MySQL - 六大约束看这一篇就够了主键、外键、唯一、检查、默认值、非空六大约束-爱代码爱编程

文章目录 约束主键约束外键约束唯一约束检查约束非空约束默认值约束主键自增长小结 约束 在 MySQL 中,约束是指对表中数据的一种约束,能够帮助数据库管理员更好地管理数据库,并且能够确保数据库中数据的正确性和有效性。 例如,在数据表中存放年龄的值时,如果存入 200、300以及一些负数这些无效的值就毫无意义了。因此,使用约束来限定表中

【mysql】(七)sql约束——主键约束、非空约束、唯一约束、默认值约束、外键约束_爱测试的高胖胖的博客-爱代码爱编程

目录 1. 主键约束1.1 SQL 约束1.2 主键约束1.3 添加主键约束1.4 创建主键自增的表1.5 修改主键自增的起始值1.6 删除主键约束1.7 选择主键原则 2. 非空约束2.1 非空约束2.2 添加

mysql的约束——外键约束_二哥别秀了的博客-爱代码爱编程

约束: MySQL的约束的概述: 概念: 约束是作用于表中字段上的规则,用于限制存储在表中的数据 目的: 保证数据库中数据的正确,有效和完整性 分类 1.非空约束 NOT NULL 限制该字段的数据不能为null

整合mybatis、servlet、mysql、axios、filter、session写一个入门级项目:非常适合初接触javaweb的小白白来进阶_游坦之的博客-爱代码爱编程

文章目录 写在前言写作收获&目的目录结构 1 依赖配置1.1 创建一个Web项目1.2 Pom.xml 2 配置Mybatis2.1 Mybatis-config.xml2.2 UserMapper.

java计算机毕业设计物流公司停车位管理源程序+mysql+系统+lw文档+远程调试_崇与科技的博客-爱代码爱编程

java计算机毕业设计物流公司停车位管理源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计物流公司停车位管理源程序+mysql+系统+lw文档+远程调试 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前端技术:Layui、HTML、CSS、JS、JQuery等技术