MySQL 中基于另一列自动计算列
在数据库编程领域,表是数据存储的基石,但有时需要从现有列中导出附加信息。这就是计算列发挥作用的地方,它提供了一种创建新列的方法,这些新列的值会根据另一列自动更新。
数据库设置
考虑以下表格:
<code>id | value -------------- 1 6 2 70</code>
问题陈述
任务是添加一个名为“calculated”的列,该列是“value”列的一半。当“value”列更改时,此计算列应自动更新。
解决方案:生成列
MySQL 5.7.6 及更高版本引入了名为“生成列”的功能。这些列允许根据现有列进行动态计算,类似于视图,但作为表的一个组成部分。
生成列有两种类型:
- 虚拟 (默认): 从表中读取记录时即时计算。
- 存储: 在表中插入或更新新记录时计算。
实现
在本例中,我们将使用存储的生成列。以下是添加它的 SQL 语句:
<code>ALTER TABLE table_name ADD COLUMN calculated AS (value / 2) STORED;</code>
这将创建一个名为“calculated”的新列,其值为每一行的“value”列的一半。
优点和注意事项
生成列具有以下优点:
- 自动更新: 当源列更改时,计算列会自动更新,确保值始终准确。
- 可索引: 存储的生成列可用作索引的一部分,从而提高查询性能。
- NOT NULL 限制: 虚拟和存储的生成列都可以具有 NOT NULL 限制,从而确保数据完整性。
示例
添加计算列后,表将如下所示:
<code>id | value | calculated ----------------------- 1 6 3 2 70 35</code>
结论
生成列提供了一种向表添加计算列的强大方法。通过利用“stored”选项,它确保计算列自动更新并可以建立索引,从而在数据管理中提供更高的灵活性和效率。
以上是MySQL中如何根据另一列自动计算一列?的详细内容。更多信息请关注PHP中文网其他相关文章!

mysqloffersvariouscharactersetsforstringdatatypes:1)latin1 forwesterneuropeanlanguages,2)utf8 formultingualsupport,3)utf8mb4f OREXTEDENDENDENENICODECLUDINGEMOJIS,4)UCS2FORIXED-WIDTHENCODING,5)assiiforbasiclatin.ChoosideStherightStetSetensensersdaintegrity

流式传输BLOB确实比直接存储更好,因为它能减少内存使用和提高性能。1)通过逐步读取和处理文件,避免了数据库膨胀和性能下降。2)流式传输需要更复杂的代码逻辑,且可能增加I/O操作次数。

mySqlStringTypesimpactStorageAndPerformanCeaseAsfollows:1)长度,始终使用theSamestoragespace,whatcanbefasterbutlessspace-felfficity.2)varCharisvariable varcharisvariable length,morespace-morespace-morespace-effficitybuteftife buteftife butfority butfority textifforlyslower.3)

mySqlStringTypesIncludeVarChar,文本,char,enum和set.1)varCharisVersAtileForvariable-lengthStringStringSuptOptoPeptoPepecifientlimit.2)textisidealforlargetStortStorStoverStorextorewiteWithoutAdefinedLengthl.3)charlisfixed-Length

MySQLoffersvariousstringdatatypes:1)CHARforfixed-lengthstrings,2)VARCHARforvariable-lengthtext,3)BINARYandVARBINARYforbinarydata,4)BLOBandTEXTforlargedata,and5)ENUMandSETforcontrolledinput.Eachtypehasspecificusesandperformancecharacteristics,sochoose

TograntpermissionstonewMySQLusers,followthesesteps:1)AccessMySQLasauserwithsufficientprivileges,2)CreateanewuserwiththeCREATEUSERcommand,3)UsetheGRANTcommandtospecifypermissionslikeSELECT,INSERT,UPDATE,orALLPRIVILEGESonspecificdatabasesortables,and4)

toadduserInmysqleffectection andsecrely,theTheSepsps:1)USEtheCreateuserStattoDaneWuser,指定thehostandastrongpassword.2)GrantNectalRevileSaryPrivilegesSustate,usiveleanttatement,AdheringTotheTeprinciplelastPrevilegege.3)

toaddanewuserwithcomplexpermissionsinmysql,loldtheSesteps:1)创建eTheEserWithCreateuser'newuser'newuser'@''localhost'Indedify'pa ssword';。2)GrantreadAccesstoalltablesin'mydatabase'withGrantSelectOnMyDatabase.to'newuser'@'localhost';。3)GrantWriteAccessto'


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

记事本++7.3.1
好用且免费的代码编辑器

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境