千家信息网

MySQL中增删改查语法的示例分析

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,这篇文章给大家分享的是有关MySQL中增删改查语法的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。普通的单表更新或删除sql大家肯定滚瓜烂熟,但你有用过连表更新或删
千家信息网最后更新 2024年11月11日MySQL中增删改查语法的示例分析

这篇文章给大家分享的是有关MySQL中增删改查语法的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

普通的单表更新或删除sql大家肯定滚瓜烂熟,但你有用过连表更新或删除的sql吗, 这个在表间关联来做更新和删除操作非常有用.

--------------------------

--------------------------

您也可以执行包括多个表的UPDATE操作。table_references子句列出了在联合中包含的表。该语法在13.2.7.1节,"JOIN语法"中进行了说明。以下是一个例子:

UPDATE items,month SET items.price=month.price

WHERE items.id=month.id;

以上的例子显示出了使用逗号操作符的内部联合,但是multiple-table UPDATE语句可以使用在SELECT语句中允许的任何类型的联合,比如LEFT JOIN。

注释:您不能把ORDER BY或LIMIT与multiple-table UPDATE同时使用。

在一个被更改的multiple-table UPDATE中,有些列被引用。您只需要这些列的UPDATE权限。有些列被读取了,但是没被修改。您只需要这些列的SELECT权限。

如果您使用的multiple-table UPDATE语句中包含带有外键限制的InnoDB表,则MySQL优化符处理表的顺序可能与上下层级关系的顺序不同。在此情况下,语句无效并被 回滚。同时,更新一个单一表,并且依靠ON UPDATE功能。该功能由InnoDB提供,用于对其它表进行相应的修改。请参见15.2.6.4节,"FOREIGN KEY约束"。

目前,您不能在一个子查询中更新一个表,同时从同一个表中选择。

---------------------------------------

举例说明:比如我现在有个主文章表,和一个文章附表,主文章表里存放一些文章的title,category分类,添加时间,和更新时间之类的基本信息,附文章表里放文章的内容.

我现在要更新主,附表里id为1的文章内容,我可以执行以下sql:

update a left join b on a.id=b.a_id set a.title='aaaaa',b.body='bbbb' where a.id=1www~phperz~com

再看delete的联表删除 www~phperz~com

mysql手册中的描述

您可以在一个DELETE语句中指定多个表,根据多个表中的特定条件,从一个表或多个表中删除行。不过,您不能在一个多表DELETE语句中使用ORDER BY或LIMIT。

table_references部分列出了包含在联合中的表。此语法在13.2.7.1节,"JOIN语法"中进行了说明。 www~phperz~com

对于第一个语法,只删除列于FROM子句之前的表中的对应的行。对于第二个语法,只删除列于FROM子句之中(在USING子句之前)的表中的对应的行。作用是,您可以同时删除许多个表中的行,并使用其它的表进行搜索:

DELETE t1, t2 FROM t1, t2, t3 WHERE t1.id=t2.id AND t2.id=t3.id;

或:

DELETE FROM t1, t2 USING t1, t2, t3 WHERE t1.id=t2.id AND t2.id=t3.id;

当搜索待删除的行时,这些语句使用所有三个表,但是只从表t1和表t2中删除对应的行。

以上例子显示了使用逗号操作符的内部联合,但是多表DELETE语句可以使用SELECT语句中允许的所有类型的联合,比如LEFT JOIN。

本语法允许在名称后面加.*,以便与Access相容。

如果您使用的多表DELETE语句包括InnoDB表,并且这些表受外键的限制,则MySQL优化程序会对表进行处理,改变原来的从属关系。在这种情况下,该语句出现错误并返回到前面的步骤。要避免此错误,您应该从单一表中删除,并依靠InnoDB提供的ON DELETE功能,对其它表进行相应的修改。

注释:当引用表名称时,您必须使用别名(如果已给定): php程序员站

DELETE t1 FROM test AS t1, test2 WHERE ...

进行多表删除时支持跨数据库删除,但是在此情况下,您在引用表时不能使用别名。举例说明:phperz~com

DELETE test1.tmp1, test2.tmp2 FROM test1.tmp1, test2.tmp2 WHERE ...

目前,您不能从一个表中删除,同时又在子查询中从同一个表中选择。

------------------------------------

现在我们还对刚才那二个表举例,删除主,附表里id为1的文章内容,我可以执行以下sql:

delete a,b from a left join b on a.id=b.a_id where a.id=1

注意我给加红的地方,如果你只删除多个表中的某个表里的数据,则在delete后面只跟那个表的名子,我举的例子是同时删除a和b中aid=1的数据,也就是同时删二个表的数据. php程序员站

如图:

注:本文以是mysql来讲解的,其他的比如sql server ,access,oracle等也有他们各自不同的语法,用时请各位根据手册上的语法自自己摸索.

感谢各位的阅读!关于"MySQL中增删改查语法的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

语法 语句 文章 同时 更新 联合 内容 多个 例子 子句 数据 功能 程序 表里 附表 示例 分析 不同 别名 名称 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 顺义区正规软件开发售后保障 杰克缝纫机 软件开发咋样 网络安全防护基线管理 创建数据库的方法有 吴江电力监控软件开发 工业网络安全运营方案 英语作文网络安全80字带翻译 宗教领域网络安全隐患 无悔华夏服务器维修会不会删档 保定管理系统软件开发 辽宁专业网络技术服务标准 sql数据库重复的数据 厦门美润网络技术有限公司 太原直销软件开发 池州手机软件开发公司哪家好 云服务器 mysql 江岸区国际网络安全维护怎么样 网络安全是那个部门管理 计算机网络安全技术分值 民生领域软件开发企业 吉林大学网络安全学院招生简章 桓台管理库存软件开发公司 大一网络安全构建和谐校园黑板报 头条服务器最大承载量 广东综合软件开发价格走势 软件开发如何量化质量 珍宝阁五个服务器合并 大专网络技术不学编程 网络安全云计算叠加概念股 景德镇哪家服务器比较好
0