精华内容
下载资源
问答
  • MySQL级联操作

    2020-04-11 14:58:15
    当有了外键约束的时候,...可以使用级联操作实现 级联修改:on update cascade 级联删除:on delete cascade 示例: 创建一个父表(部门表)和子表(员工表) //父表 CREATE TABLE dept(id INT PRIMARY KEY AUTO...

    当有了外键约束的时候,必须先修改或删除副表中的所有关联数据,才能修改或删除主表!但是,我们希望直接修改或删除主表数据,从而影响副表数据。可以使用级联操作实现

    • 级联修改:on update cascade
    • 级联删除:on delete cascade

    示例:

    创建一个主表(部门表)和从表(员工表)

    //主表
    CREATE TABLE dept(id INT PRIMARY KEY AUTO_INCREMENT,
    `name` VARCHAR(50));
    
    //从表
    CREATE TABLE emp(id INT PRIMARY KEY AUTO_INCREMENT,
    `name` VARCHAR(50) NOT NULL UNIQUE,
    did INT,
    FOREIGN KEY(did) REFERENCES dept(id)
    )

    添加几条数据

    INSERT INTO dept VALUES(NULL,'a');
    INSERT INTO dept VALUES(NULL,'b');
    
    INSERT INTO emp VALUES(NULL,'zs',2);
    INSERT INTO emp VALUES(NULL,'ls',1);
    INSERT INTO emp VALUES(NULL,'ww',2);

    dept表:

    emp表:

     

    如果没有级联是 删除 或 更新 不了dept部门表中的数据的,可以试一下

    DELETE FROM dept WHERE id=2;

    关联删除

    ALTER TABLE emp ADD FOREIGN KEY(did) REFERENCES dept(id) ON DELETE CASCADE

    关联删除后再删除dept部门表的数据

    DELETE FROM dept WHERE id=2;

    dept表:

    emp表:

    删除成功,主表删除数据后,从表对应的数据也删除了

    展开全文
  • mysql ajax 级联操作。本案例可以很灵活的使用任何级别的级联操作.基于ssh框架的
  • mysql级联操作(实例)

    千次阅读 2015-05-19 15:23:07
    MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引。在创建索引的时候,可以指定在删除、更新父表时,对子表进行的相应操作,包括...

                MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引。在创建索引的时候,可以指定在删除、更新父表时,对子表进行的相应操作,包括RESTRICT、NOACTION、SET NULL和CASCADE。其中RESTRICT和NO ACTION相同,是指在子表有关联记录的情况下父表不能更新;CASCADE表示父表在更新或者删除时,更新或者删除子表对应记录;SET NULL则是表示父表在更新或者删除的时候,子表的对应字段被SET NULL。下面以一个新闻表说明,该新闻数据库的结构如下:


    create database yynews;
    use yynews;
    #新闻类别表
    create table categories(
    catId int AUTO_INCREMENT primary key,
    catName varchar(40) not null unique
    )charset utf8;
    #新闻表:
    create table news(
    newsId int AUTO_INCREMENT primary key,
    title varchar(100) not null unique,
    content text not null,
    createTime timestamp not null,
    catId int
    )charset utf8;
    #添加外键的引用
    alter table news add constraint foreign key(catid) references categories(catid);
    #评论表:
    create table comments(
    commId int AUTO_INCREMENT primary key,
    content text not null,
    createTime timestamp not null,
    newsId int not null,
    userIP char(15) not null
    )charset utf8;
    #添加外键的引用
    alter table comments add constraint foreign key(newsid) references news(newsid);
    #插入测试数据
    insert into categories(catname) values("娱乐新闻");
    insert into categories(catname) values("国际新闻");
    insert into news(title,content,createTime,catId) values('test1','test1',now(),1);
    insert into news(title,content,createTime,catId) values('test2','test2',now(),2);
    insert into news(title,content,createTime,catId) values('test3','test3',now(),1);
    insert into comments(content,createTime,newsId,userIP) values('you',now(),1,'127.0.0.1');
    insert into comments(content,createTime,newsId,userIP) values('you',now(),2,'127.0.0.1');
    insert into comments(content,createTime,newsId,userIP) values('you',now(),3,'127.0.0.1');
    insert into comments(content,createTime,newsId,userIP) values('you',now(),1,'127.0.0.1');
    如下:
    mysql> select * from categories;
    +-------+--------------+
    | catId | catName      |
    +-------+--------------+
    |     2 | 国际新闻     |
    |     1 | 娱乐新闻     |
    +-------+--------------+
    2 rows in set (0.00 sec)

    mysql> select * from news;
    +--------+-------+---------+---------------------+-------+
    | newsId | title | content | createTime          | catId |
    +--------+-------+---------+---------------------+-------+
    |      1 | test1 | test1   | 2015-05-19 15:22:53 |     1 |
    |      2 | test2 | test2   | 2015-05-19 15:22:53 |     2 |
    |      3 | test3 | test3   | 2015-05-19 15:22:53 |     1 |
    +--------+-------+---------+---------------------+-------+
    3 rows in set (0.00 sec)

    mysql> select * from comments;
    +--------+---------+---------------------+--------+-----------+
    | commId | content | createTime          | newsId | userIP    |
    +--------+---------+---------------------+--------+-----------+
    |      1 | you     | 2015-05-19 15:22:53 |      1 | 127.0.0.1 |
    |      2 | you     | 2015-05-19 15:22:53 |      2 | 127.0.0.1 |
    |      3 | you     | 2015-05-19 15:22:53 |      3 | 127.0.0.1 |
    |      4 | you     | 2015-05-19 15:22:54 |      1 | 127.0.0.1 |
    +--------+---------+---------------------+--------+-----------+
    4 rows in set (0.00 sec)
    在还没有添加任何的级联操作的时,删除有关联的数据会报错。
    mysql> delete from categories where catid=1;
    ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`yynews`.
    `comments`, CONSTRAINT `comments_ibfk_1` FOREIGN KEY (`newsId`) REFERENCES `news` (`newsId`))
    数据库报错告诉你有个外键阻止了你的操作。所以我们可以添加级联操作。也可以再创建数据库的时候就指定级联操作
    如下:
    #级联操作
    alter table news add constraint foreign key(catid) references categories(catid) on delete cascade
    on update cascade;
    alter table comments add constraint foreign key(newsid) references news(newsid) on delete cascade
    on update cascade;
    #上面这句的这两个语句就是在添加外键的时候为该表和表之间添加级联操作,即,数据表在删除或更新数据表时,相
    关连的表也会同时更新或删除。
    例如:
    mysql> delete from categories where catid=1;
    Query OK, 1 row affected (0.03 sec)
    我们删除了类别catid为1的数据即:娱乐新闻,那么有关娱乐新闻的news中的数据double将会被删除,新闻被删除的同时,新闻下的评论也会被同时删除。
    如下所示:
    mysql> select * from news;
    +--------+-------+---------+---------------------+-------+
    | newsId | title | content | createTime          | catId |
    +--------+-------+---------+---------------------+-------+
    |      2 | test2 | test2   | 2015-05-19 15:17:03 |     2 |
    +--------+-------+---------+---------------------+-------+
    1 row in set (0.00 sec)

    mysql> select * from comments;
    +--------+---------+---------------------+--------+-----------+
    | commId | content | createTime          | newsId | userIP    |
    +--------+---------+---------------------+--------+-----------+
    |      2 | you     | 2015-05-19 15:17:03 |      2 | 127.0.0.1 |
    +--------+---------+---------------------+--------+-----------+

    1 row in set (0.00 sec)


    展开全文
  • Mysql实现级联操作(级联更新、级联删除)

    万次阅读 多人点赞 2018-09-08 11:48:47
    级联更新:stu表中id为3的学生更改为id为6,该学生在sc表中的对应id也会级联更新 update stu set sid=6 where sid='3';   注意 删除表的时候必须先删除外键表(sc),再删除主键表(stu)   ...

    来源 https://www.cnblogs.com/zxf100/p/6812269.html

    一、首先创建两张表stu,sc

     

    create table stu(
    sid int UNSIGNED primary key auto_increment,
    name varchar(20) not null)
    TYPE=InnoDB charset=utf8;
    }
    create table sc(
    scid int UNSIGNED primary key auto_increment,
    sid int UNSIGNED not null,
    score varchar(20) default '0',
    index (sid),   --外键必须加索引
    FOREIGN KEY (sid) REFERENCES stu(sid) ON DELETE CASCADE ON UPDATE CASCADE)
    TYPE=InnoDB charset=utf8;

    }

     

    注意: 外键建议建立索引;

    FOREIGN key(sid)  设置外键,把sid设为外键

    REFERENCES stu(sid) 引用作用。引用stu表中的sid

    ON DELETE CASCADE 级联删除
    ON UPDATE CASCADE 级联更新

    二、向两张表插入数据

     

    insert into stu (name) value ('zxf');
    insert into stu (name) value ('ls');
    insert into stu (name) value ('zs');
    insert into stu (name) value ('ww');
    
    insert into sc(sid,score) values ('1','98');
    insert into sc(sid,score) values ('1','98');
    insert into sc(sid,score) values ('2','34');
    insert into sc(sid,score) values ('2','98');
    insert into sc(sid,score) values ('2','98');
    insert into sc(sid,score) values ('3','56');
    insert into sc(sid,score) values ('4','78');
    insert into sc(sid,score) values ('4','98');

     

     

    注意:在sc表中插入数据时,若插入的sid为22,则会插入失败,违反外键约束,因为外键sid 
    来自stu表中的id的主键,即stu中的id没有等于22的数据。

    级联删除:将stu表中id为2的学生删除,该学生在sc表中的成绩也会级联删除

    delete from stu where sid = '2';

     


    级联更新:stu表中id为3的学生更改为id为6,该学生在sc表中的对应id也会级联更新

    update stu set sid=6 where sid='3';

     

    注意

    删除表的时候必须先删除外键表(sc),再删除主键表(stu)

     

    上图为违反外键约束,不能删除

    上图为正常删除,先删除sc表,再删除stu表!

    展开全文
  • mysql级联更新和级联删除,区分有级联和没级联操作的区别之处
  • 添加级联操作 语法:ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称) ON UPDATE CASCADE ON DELETE CASCADE ; 分类: 1. 级联更新:ON UPDATE CASCADE ...

    1. 概述

    • 概念: 对表中的数据进行限定,保证数据的正确性、有效性和完整性。

    • 分类
      1. 主键约束:primary key
      2. 非空约束:not null
      3. 唯一约束:unique
      4. 外键约束:foreign key

    2.非空约束

    非空约束:not null,某一列的值不能为null

    • 1. 创建表时添加约束
    CREATE TABLE stu1(
    				id INT,
    				NAME VARCHAR(20) NOT NULL -- name为非空
    			);
    

    在这里插入图片描述

    • 2. 创建表完后,添加非空约束
    ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;
    

    在这里插入图片描述

    • 3. 删除name的非空约束
    ALTER TABLE stu MODIFY NAME VARCHAR(20);
    

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述


    3.唯一约束

    unique,某一列的值不能重复

    • 1. 注意:
      * 唯一约束可以有NULL值,但是只能有一条记录为null
    • 2. 在创建表时,添加唯一约束
    CREATE TABLE stu(
    				id INT,
    				phone_number VARCHAR(20) UNIQUE -- 手机号
    			);
    

    在这里插入图片描述
    在这里插入图片描述

    • 3. 删除唯一约束
    	ALTER TABLE stu DROP INDEX phone_number;
    

    在这里插入图片描述

    • 4. 在表创建完后,添加唯一约束
    ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;
    

    在这里插入图片描述

    4.主键约束:primary key

    • 1. 注意:

        	1. 含义:非空且唯一
        	2. 一张表只能有一个字段为主键
        	3. 主键就是表中记录的唯一标识
      
    • 2. 在创建表时,添加主键约束

    	create table stu(
    				id int primary key,-- 给id添加主键约束
    				name varchar(20)
    			);
    

    在这里插入图片描述

    • 3. 删除主键
    			-- 错误 alter table stu modify id int ;
    			ALTER TABLE stu DROP PRIMARY KEY;
    

    在这里插入图片描述

    • 4. 创建完表后,添加主键
    ALTER TABLE stu MODIFY id INT PRIMARY KEY;
    

    在这里插入图片描述

    • 5. 自动增长:
    1. 概念:如果某一列是数值类型的,使用 auto_increment 可以来完成值得自动增长

    2. 在创建表时,添加主键约束,并且完成主键自增长

    create table stu(
    				id int primary key auto_increment,-- 给id添加主键约束
    				name varchar(20)
    			);
    
    
    • 3. 删除自动增长
    ALTER TABLE stu MODIFY id INT;
    
    • 4. 添加自动增长
    			ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;
    
    

    在这里插入图片描述

    5.外键约束

    外键约束:foreign key,让表与表产生关系,从而保证数据的正确性。

    • 1. 在创建表时,可以添加外键
      语法:
    create table 表名(
    		....
    		外键列
    		constraint 外键名称 foreign key (外键列名称) 
    		references 主表名称(主表列名称)
    );
    
    

    在这里插入图片描述

    • 2. 删除外键
    ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
    
    

    在这里插入图片描述

    • 3. 创建表之后,添加外键
    ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY
     (外键字段名称) REFERENCES 主表名称(主表列名称);
    

    在这里插入图片描述

    • 4. 级联操作
      1. 添加级联操作
    语法:ALTER TABLE 表名 ADD CONSTRAINT 外键名称 
    	FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称) 
    	ON UPDATE CASCADE ON DELETE CASCADE  ;
    
    1. 分类:

       		1. 级联更新:ON UPDATE CASCADE 
       		2. 级联删除:ON DELETE CASCADE 
      

      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    展开全文
  • 主表修改主键值,连带从表相关行的外键值一起修改 做这个之前,首先需要改下外键的约束条件: on delete cascade on update cascade(级联删除,级联更新) 通过命令行查看表结构: 接下来做update操作: 6....
  • MySQL表设置级联操作

    2021-03-23 11:50:44
    MySQL表设置级联操作 主要进行子表操作 一,对已存在的表进行修改 1.先删除约束值(如果存在) ALTER TABLE `子表` DROP FOREIGN KEY `唯一约束值`; 2.更新子表 ALTER TABLE `子表` ADD CONSTRAINT `唯一约束值` ...
  • 主要介绍了MySQL使用外键实现级联删除与更新的方法,详细分析了mysql数据库与表的创建、数据插入、查询以及外链的使用与级联操作相关技巧,需要的朋友可以参考下
  •  如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作   这个是ANSI SQL-92标准,从mysql4.0.8开始支持   . Restrict方式   同no action, 都是立即检查外键约束   . ...
  • MySQL 级联删除

    2019-12-29 15:48:23
    1、创建数据库(create database ......) ①.查看本地有哪些已存在的数据库,避免新建数据库的时候与已存在的重复。 ②.新建数据库(eg:创建一个名为test... ③.使用数据库才能进行下列的增删改查等操作 ...
  • MySQL外键约束 语法:constraint 外键名称 foreign key 列名称 references 主表(列名称); -- 外键约束的操作 -- 关键字 foreighn key -- 概述:就是让两个以及多个表之间建立联系 -- 创建表时加入外键 CREATE ...
  • 约束: 概念:对表中的数据进行限定,保证数据的正确性、有效...(6、级联操作)   一、主键约束:primary key 1、注意:  (1)、含义:非空且唯一  (2)、一张表只能由一个字段为主键  (3)、主键就是表中记录的唯...
  • MySQL基础语法DDL定义创建数据库CREATR DATABASE 数据库名; --直接创建数据库CREATE DATABASE IF NOT EXISTS 数据库名; --判断是否存在并创建CREATE DATABASE 数据库名 CHARACTER SET `GBK`; --创建指定格式数据库...
  • MySQL 外键的级联操作

    2020-04-08 16:59:24
    因此这里就需要在创建表时,加入级联操作级联操作分为级联更新和级联删除。 添加了级联更新后,部门表中id变化了,相应的雇员表中的部门id也会随之变换。 添加了级联更新后,部门表中id被删除了,相应的雇员表中...
  • 引用stu表中的sid ON DELETE CASCADE 级联删除 ON UPDATE CASCADE 级联更新 二、向两张表插入数据 insert into stu (name) value ('zxf'); insert into stu (name) value ('ls'); insert into stu (name) value ('zs...
  • 文章目录级联操作设计表 级联操作 ON DELETE CASCADE ON UPDATE CASCADE -- 级联操作 USE studb; CREATE TABLE IF NOT EXISTS person( id VARCHAR(10) NOT NULL, NAME VARCHAR(20) NOT NULL, PRIMARY KEY(id) )...
  • MySQL触发器 触发器是与表有关的数据库对象,指在 insert/update/delete 之前或之后,触发并执行触发器中定义的SQL语句集 合。触发器的这种特性可以协助应用在数据库端确保数据的完整性 , 日志记录 , 数据校验等操作...
  • mysql级联操作

    千次阅读 2014-03-31 23:08:43
    1.创建表a create table a( name char(20) not null, id char(20) not null primary key); 2.创建表b create table b( ...这里就应用到了级联删除。
  • 留给你们吧 Foreign-Key(w3school) Using FOREIGN KEY Constraints(mysql官网) 原文:用外键的好处我就不多说了,既然是关系型数据库,外键的约束为我们保证了数据主从关系和产生的先后关系,级联操作为我们的update...
  • 这里是数据库添加外键 删除时级联删除 CASCADE 下面是Java代码 <table cellpadding="0px" cellspacing="0px" border="1px"> <tr> <td>业务序号</td> <td>排队号</td> ...
  • MySQL数据库级联删除

    2021-02-05 16:42:49
    级联删除的解释,以及方法步骤
  • 约束(constraint)和级联操作一、什么是约束及为什么要使用约束约束实际上就是表中数据的限制条件表在设计的时候加上约束的目的是为了保证表中的记录完整和有效二、约束的种类非空约束 not null 唯一性约束 unique ...
  • Mysql外键级联操作

    2017-05-19 16:14:47
    在主表上更新或者删除记录时,从表也会执行相应操作   . set null方式 在主表上update/delete记录时,将从表上匹配记录的列设为null(即表示从表数据不指向主表任何记录) 要注意子表的外键列不能为not null  ...
  • MySQL级联删除的问题

    2016-11-08 16:23:00
    表示级联操作,就是说,如果主键表中被参考字段更新,外键表中也更新,主键表中的记录被删除,外键表中改行也相应删除 重点: 一个表只能有一个主键,一个主键又可以分为保存 单个字段(单字段键) 与 多字段...
  • MySQL数据库 建库语句 CREATE DATABASE 数据库名; 使用数据库: USE 数据库名; CREATE DATABASE robowolf_material; USE robowolf_material; 删表语句: DROP TABLE 表名; 建表语句: create table XXX ( 数据名称 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,428
精华内容 9,771
关键字:

mysql级联操作

mysql 订阅