Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 为什么可以';数据库引擎是否使用自动列数据类型?_Sql_Database Design_Theory_Database Engine - Fatal编程技术网

Sql 为什么可以';数据库引擎是否使用自动列数据类型?

Sql 为什么可以';数据库引擎是否使用自动列数据类型?,sql,database-design,theory,database-engine,Sql,Database Design,Theory,Database Engine,在数据库中定义表时,我们将列类型设置为int/varchar等。 为什么不能设置为自动 数据库将从输入中识别并设置类型本身,就像php处理变量一样。此外,youtube不必使其统计计数器崩溃。在某些情况下,您可以(例如SQL Server或Oracle) 那是否是个好主意是另一回事 首先,没有显式模式(在数据库中),并不意味着可以避免隐式模式(客户机应用程序所期望的隐含模式)。例如,仅仅因为数据库中有一个字符串,并不意味着您的应用程序将能够使用它,如果它最初实现为期望一个数字。这实际上是一个动

在数据库中定义表时,我们将列类型设置为
int
/
varchar
等。 为什么不能设置为自动


数据库将从输入中识别并设置类型本身,就像php处理变量一样。此外,youtube不必使其统计计数器崩溃。

在某些情况下,您可以(例如SQL Server或Oracle)


那是否是个好主意是另一回事

首先,没有显式模式(在数据库中),并不意味着可以避免隐式模式(客户机应用程序所期望的隐含模式)。例如,仅仅因为数据库中有一个字符串,并不意味着您的应用程序将能够使用它,如果它最初实现为期望一个数字。这实际上是一个动态类型与静态类型的争论,静态类型通常被认为是非平凡程序的优势

此外,这些“变体”类型通常有很大的开销,并且从索引和角度来看是有问题的。例如,2比10小吗?如果是数字,则为是;如果是字符串,则为否


因此,如果您知道您希望从数据库中得到什么(在99%的情况下都是这样),请告诉数据库,以便它可以键入check并为您优化它

因为SQL是一种强类型语言,在这种语言中,数据类型的选择可以防止将无效值放入数据库@Siyual@cowboysaif所以只要将类型改为
bigint
,而不是
int
,问题就解决了。当您可以严格定义列的类型时,为什么要在尝试确定列的类型时产生如此多的潜在开销?我不希望我的数据库引擎猜测我想要的类型是什么,并可能浪费大量不必要的空间。我更愿意定义每一列,如果有什么东西坏了,修复它。当然他们可以。而且他们(至少在一些数据库管理系统中)的关系型数据库管理系统受到很多意识形态观点的影响。例如,每个人有时都希望将数组存储在列中,但这不是关系!不允许<代码>对象类型化列可能有用,但不受很好的支持。看起来也很意识形态化。