当前位置: 首页 > 编程笔记 >

MySQL中联表更新与删除的语法介绍

孔棋
2023-03-14
本文向大家介绍MySQL中联表更新与删除的语法介绍,包括了MySQL中联表更新与删除的语法介绍的使用技巧和注意事项,需要的朋友参考一下

前言

相信大家在日常使用mysql,可能会遇到需要同时更新两张表时,我会采用在同一个事务中使用2句sql语句分别进行更新。其实,这种需要发送2句sql语句的方法效率相对来说是比较低的,有没有只用1句sql语句就可以完成这个操作的呢?

答案是有的,下面将是代码记录:

假设有2张表:

1,user表,字段为:id,user_name

2,user_role表,字段为:id,role_name,user_id

关联关系是 user.id = user_role.user_id

现要更改某一条user表的数据的的user_name字段以及该user对应的user_role表中的数据的role_name字段,那么用下面的sql就可以实现这个目的了:

update user, user_role set
 user.user_name = ?, user_role.role_name = ? 
where user.id = ? and user.id = user_role.user_id

上面写到联表更新,那么有没有联表删除呢?

答案也是有的,下面将是代码记录:

假设有2张表:

1,user表,字段为:id,user_name

2,user_role表,字段为:id,role_name,user_id

关联关系是 user.id = user_role.user_id

现要删除某一条user表的数据以及该user对应的user_role表中的数据,那么用下面的sql就可以实现这个目的了:

delete u, u_r from user u, user_role u_r 
where u.id = ? and u.id = u.user_id

上述sql中,u是user的别名,u_r是user_role的别名,from语句前面要附上别名,这个别名适用于指定删除哪张表数据的,如果只有u或者u_r,那么仅删除对应的那张表上的数据。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

 类似资料:
  • 本文向大家介绍MySQL使用外键实现级联删除与更新的方法,包括了MySQL使用外键实现级联删除与更新的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了MySQL使用外键实现级联删除与更新的方法。分享给大家供大家参考,具体如下: MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引。在创建索引的时候,可以指定

  • 问题内容: 我不知道是什么问题。使用MySQL 5.0尝试运行以下MYSQL更新语句时出现编译错误 所有字段名称都是正确的。有什么想法吗? 问题答案: 尝试这个: 更新: 既然您说查询产生了语法错误,所以我创建了一些可以对其进行测试的表,并确认查询中没有语法错误: 看到?没有语法错误。我针对MySQL 5.5.8进行了测试。

  • 问题内容: 我想在具有多个联接的语句中更新表。虽然我知道联接的顺序并不重要(除非您使用的是优化程序提示),但我还是以某种最直观的方式对它们进行了排序。但是,这导致我要更新的表不是我开始使用的表,并且我无法更新它。 我想做的一个虚拟例子是: 这里有许多关于使用联接进行更新的帖子,但是它们总是首先更新表。我知道这在SQL Server中是可能的,希望在MySQL中也可能! 问题答案: MySQL中的多

  • 问题内容: 在我的数据库中,我有一个具有递归关联的表(一个雇员可以是其他雇员的老板): 然后插入: 现在我在表中的行之间具有以下层次关系(所有者>老板>工人): 以下是表的Select语句: 现在,我想强加约束,如:。例如,如果我删除,则成为和的老板。 为此,我还编写了一个 触发器 ,如下所示: 但是当我执行一些删除时: 我在这里学到这是因为。 还有 其他可行的方法吗? 有可能使用吗?有人可以建议

  • 数据表之间经常存在外键关联的情况,这时如果直接删除父表,会破坏数据表的完整性,也会删除失败。 删除父表有以下两种方法: 先删除与它关联的子表,再删除父表;但是这样会同时删除两个表中的数据。 将关联表的外键约束取消,再删除父表;适用于需要保留子表的数据,只删除父表的情况。 下面介绍了如何取消关联表的外键约束并删除主表,也就是上面所说的删除父表的第二种方法。   在数据库中创建两个关联表。创建表 tb

  • 问题内容: 我只是尝试在我的应用程序中使用更新,但我不能。在控制台上,此mysql命令有效,但在此无效。 好吧,我在程序中使用了它: 只是提醒一下,codlocal是另一个名为Localidade的表的外键。我看到了一些有关加入的示例,但是我无法想象这对我如何起作用。 我得到这个: 那么,我该怎么办? 问题答案: 您必须使用pstmt.executeUpdate(); 代替pstmt.execut