没错:将数据类型分配给列是实现细节,与数据库引擎背后的集合论或演算无关。作为一个理论模型,数据库应该是“无类型的”,并且能够存储我们扔给它的任何东西。
但是我们必须在具有实际约束的真实计算机上实现数据库。从性能的角度来看,让计算机动态尝试找出如何最好地存储数据是不切实际的。
例如,假设您有一个表,其中存储了几百万个整数。计算机可以-正确地- 弄清楚它应该将每个数据存储为整数值。但是,如果您有一天突然尝试在该表中存储字符串,那么数据库引擎是否应该停止所有操作,直到它将所有数据转换为更通用的字符串格式?
不幸的是,指定数据类型是必不可少的。