mysql中多表关联删除,怎样做?谢谢...

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql中多表关联删除,怎样做?谢谢...相关的知识,希望对你有一定的参考价值。

1、首先打开终端窗口。mysql -uroot -p进入mysql。

2、进入数据库,然后查看已有的表格,以免名字重复。

3、创建第一个表格,插入数据。

4、创建第二表格,插入数据。

5、创建第三个表格,并且和第一第二个表格关联。

6、INSERT INTO zoo VALUES(1, 1, 2);INSERT INTO zoo VALUES(1, 2, 1);这个时候就能够把他们直接的数据互相关联删除了。比如dog的1和cat的2。

参考技术A

1、现在我们以查询员工角色和权限为例:select * from member m left join member_role mr on m.mid=mr.mid left join role r on mr.rid=r.rid。

2、执行sql执行计划,查看mysql的sql执行结果。现在表进行了全表扫描了。

3、现在在所有的右表上建立一个索引:create index mr_index on member_role(mid)。

4、建立好索引之后重新执行sql执行计划。 explain select * from member m left join member_role mr on m.mid=mr.mid left join role r on mr.rid=r.rid。

5、因此索引最好设置在需要进场查询的字段中。

6、尽可能减少join语句中循环的总次数,永远用小结果集驱动大的结果集。当无法保证被驱动表的join条件字段被索引且内存资源充足的前提下,不要吝啬JoinBuffer的设置。

参考技术B mysql中多表关联删除,怎样做?
两个表比如delete后面是要删除的表on是关联的字段where是条件
delete a,b from `ecs_goods` as a join `ecs_goods_gallery` as b on a.goods_id = b.goods_id where a.id ='123'
三个表(依次类推)
delete a,b,c from `ecs_goods` as a join
`ecs_goods_gallery` as b on a.goods_id = b.goods_id join
`ecs_goods_cat` as c on a.goods_id = c.goods_id where a.id
='123'
参考技术C 两个表比如delete后面是要删除的表on是关联的字段where是条件
delete a,b from `ecs_goods` as a join `ecs_goods_gallery` as b on a.goods_id = b.goods_id where a.id ='123'
三个表(依次类推)
delete a,b,c from `ecs_goods` as a join
`ecs_goods_gallery` as b on a.goods_id = b.goods_id join
`ecs_goods_cat` as c on a.goods_id = c.goods_id where a.id
='123'
参考技术D 给你举个例子
select * from 表1 join 表2 on 表1.字段名=表2.字段名 join 表3 on 表1.字段名=表3.字段名
你可以用left join ,多一个表 在后面按照规律加上即可

hibernate中多表映射关系配置

1.one-to-many一对多关系的映射配置(在一的一方实体映射文件中配置)

<!-- 
            cascade属性:级联操作属性
                save-update: 级联保存,保存客户时,级联保存客户关联的联系人
                delete:级联删除,删除客户时,级联删除客户关联的联系人
                all:级联保存+级联删除
-->
<!-- 
            inverse属性:设置是否不维护关联关系
                true:不维护关联
                false(默认值):维护关联
 -->
        <!-- 一对多 -->
        <set name="linkMen" inverse="true" >
            <!-- 外键列名 -->
            <key column="lkm_cust_id" ></key>
            <!-- 该集合是一对多关系表达,关联的对象时linkman -->
            <one-to-many class="LinkMan" />
        </set>   

一对多|多对一关系中,放置sql语句冗余.一般选择一的一方放弃维护,inverse属性设置为true.

 

2.many-to-one 多对一关系映射配置(在多的一方实体映射文件中配置)

<!-- 
            cascade属性:级联操作属性
                save-update: 级联保存,保存客户时,级联保存客户关联的联系人
                delete:级联删除,删除客户时,级联删除客户关联的联系人
                all:级联保存+级联删除
 -->
 <!-- 
             没有inverse属性:
                 外键列所在实体,无法放弃维护关联关系.
 -->
        <!-- 多对一 -->
        <many-to-one name="customer"    
         column="lkm_cust_id" 
         class="Customer" ></many-to-one>

 

 3.many-to-many多对多关系映射配置

<!-- 多对多关系配置 
                table:中间表表名
-->
<!-- 
            inverse属性:设置是否不维护关联关系
                true:不维护关联
                false(默认值):维护关联
-->
<!-- 
            cascade属性:级联操作属性
                save-update: 级联保存,保存客户时,级联保存客户关联的联系人
                delete:级联删除,删除客户时,级联删除客户关联的联系人
                all: 级联保存+级联删除
 -->
        <set name="roles" table="sys_user_role"   >
            <!-- 别人引用"我"的外键列名 -->
            <key column="user_id" ></key>
            <!-- 表达集合是多对多关系
                class属性:表达我与谁是多对多
                column属性:表达另外一个外键列名
             -->
            <many-to-many class="Role" column="role_id" ></many-to-many>
        </set>

多对多关系中,选择一方发起维护关系,放置中间表数据录入重复,根据业务逻辑决定,如商品和订单是多对多关系,订单维护商品放弃维护

 

以上是关于mysql中多表关联删除,怎样做?谢谢...的主要内容,如果未能解决你的问题,请参考以下文章

hibernate中多表映射关系配置

hibernate中多表映射关系配置

Mysql中多表删除

多表联查时的sql删除语句的写法,即级联删除,将相关联的数据级联删除

MySQL多表关联数据同时删除

Yii2中多表关联查询(joinjoinwith) with是不执行sql的