增删查改
(重定向自建立、讀取、更新、刪除)
增删查改(英语:CRUD[注 1]),全称增加(Create,意为“建立”)、删除(Delete)、查询(Read,意为“读取”)、改正(Update,意为“更新”),在计算机程序语言中是一连串常见的动作行为,而其行为通常是为了针对某个特定资源所作出的举动(例如:建立资料、读取资料等)。这四个行为最常见的用途是在使用SQL数据库与网站的API的时候。这个词语(CRUD)最早被记载于James Martin所撰写的Managing the Data-base Environment[1][2]书中。
基本用途与别名
编辑在不同情况下,原本的“增删查改”所对应的英文词汇会因此而改名,而不再对应CRUD。例如 HTTP 中,原本“增删查改”所对应的英文词汇被改名,比如“查”不再是Read,而改为GET;“增”不再是Create,而改为POST;“改”不再是Update,而改为PUT等等,这个现象也出现在 SQL 数据库中。话虽如此,虽然有着不同名称,但底层的概念都基本相同。
中文 | 英文 | 意义 | SQL | HTTP | 表现层状态转换(REST) | 资料分散服务 | MongoDB |
---|---|---|---|---|---|---|---|
增加 | Create | 建立 | INSERT | PUT / POST | POST | WRITE | Insert |
删除 | Delete | 删除 | DELETE | DELETE | DELETE | DISPOSE | Remove |
查询 | Read | 读取 | SELECT | GET | GET | READ / TAKE | Find |
改正 | Update | 更新 | UPDATE | PUT / POST / PATCH | PUT | WRITE | Update |
类型变化
编辑随着时间的演进,原本的“增删查改”(CRUD)已经不再能够满足大部分的需求了,因此有些人会修改部分词语来更符合当下的动作名称。例如说:BREADS、ACID、ABCD[3]。虽然这些用法多了一些行为,但实际上也只是某些基础行为(CRUD)的变化,例如:BREADS 中的“浏览(Browse)”其实是会回传多笔资料的“读取(Read)”行为。
- BREADS(也译作:面包)[4]
- 浏览(Browse)、读取(Read)、编辑(Edit)、建立(Add)、删除(Delete)、搜索(Search)
- ICRUD[3]
- 索引(Index)、建立(Create)、读取(Read)、更新(Update)、删除(Delete)
- CRAP(也译作:垃圾)[5]
- 建立(Create)、复制(Replicate)、写入(Append)、处理(Process)
- DAVE[6]
- 删除(Delete)、建立(Add)、查看(View)、更新(Edit)
- ABCD[3]
- 建立(Add)、浏览(Browse)、更新(Change)、删除(Delete)
- ACID(也译作:盐酸, 注意这里和保证数据库可靠性的ACID不是一回事)
- 建立(Add)、更新(Change)、查询(Inquire)、删除(Delete)
注释
编辑- ^ 英语中因为CRUD比中文所对应的CDRU易读易记而将“删除”(Delete)放置于最后。但是英文小写的crud,是指渣滓、水垢、腐蚀污泥。
参考资料
编辑- ^ Managing the Data-base Environment,第381页,载于Google图书
- ^ Martin, James. Managing the Data-base Environment. Englewood Cliffs, New Jersey: Prentice-Hall. 1983: 381. ISBN 0-135-50582-8.
- ^ 3.0 3.1 3.2 BREAD, not CRUD | Paul M. Jones. [2019-01-12]. (原始内容存档于2019-05-08) (美国英语).
- ^ Paul M. Jones. BREAD, not CRUD. 2008 [2019-01-12]. (原始内容存档于2019-05-08).
- ^ CRAP and CRUD: From Database to Datacloud - Direct2DellEMC. Direct2DellEMC. 2012-11-13 [2018-01-30]. (原始内容存档于2020-08-11) (美国英语).
- ^ McGaw, James. Beginning Django E-Commerce. : 41 [2019-01-12]. (原始内容存档于2020-06-11).