在数据库中定义表时,我们将列类型设置为int
/ varchar
等。
为什么不能设置为自动?
数据库将从输入中识别并设置类型本身,就像php处理变量一样。此外,youtube不必崩溃他们的统计数据。
答案 0 :(得分:0)
在某些情况下,您可以(例如SQL Server的sql_variant或Oracle的ANYDATA)。
这是一个好主意是另一回事......
首先,没有显式模式(在数据库中),并不意味着您可以避免隐式模式(隐含在您的客户端应用程序期望的模式)。例如,仅仅因为您在数据库中有一个字符串,并不意味着您的应用程序将能够使用它,如果它最初实现为期望一个数字。这实际上是动态与静态类型的争论,静态类型通常被认为是非平凡程序的优势。
此外,这些“变体”类型通常具有显着的开销,并且从索引和sargability角度来看存在问题。例如,2小于10吗?是的,如果这些是数字,如果它们是字符串则不是!
因此,如果你知道你对数据库的期望(你在99%的情况下做了什么),请告诉数据库,以便它可以为你进行类型检查和优化!