与其他SQL版本相比,SQLite3使用动态类型而不是静态类型.在SQLite的网站上写着:
大多数SQL数据库引擎(除了SQLite之外的每个SQL数据库引擎,据我们所知)都使用静态,严格的类型.使用静态类型时,值的数据类型由其容器(存储值的特定列)确定.
SQLite使用更通用的动态类型系统.在SQLite中,值的数据类型与值本身相关联,而不是与其容器相关联.
在我看来,这正是你不想要的,因为它允许你存储整数列中的字符串.
页面继续:
... SQLite中的动态类型允许它执行传统的刚性类型数据库中无法实现的操作.
我有两个问题:
用例问题:SQLite3的动态类型有哪些例子?
历史/设计问题:使用动态类型实现SQLite的动机是什么?
Mike Cialowi.. 9
这在SQLite中称为类型亲缘关系.
根据SQLite网站的说法,他们这样做是为了"最大化SQLite和其他数据库引擎之间的兼容性".(见上面的链接)
SQLite支持列上的"类型亲和性"概念.列的类型亲缘关系是存储在该列中的数据的推荐类型.这里的重要思想是建议使用类型,而不是必需的.任何列仍然可以存储任何类型的数据.根据选择,某些列更倾向于使用一个存储类而不是另一个存储类.列的首选存储类称为"亲和性".
我的理解是SQLite正是它的名字 - 一个非常轻量级的简约数据库引擎.与强类型相关的开销可能超出了项目的范围,最好留给使用SQLite的应用程序.
但同样,根据他们的网站,他们已经这样做,以最大限度地兼容其他数据库引擎.
这在SQLite中称为类型亲缘关系.
根据SQLite网站的说法,他们这样做是为了"最大化SQLite和其他数据库引擎之间的兼容性".(见上面的链接)
SQLite支持列上的"类型亲和性"概念.列的类型亲缘关系是存储在该列中的数据的推荐类型.这里的重要思想是建议使用类型,而不是必需的.任何列仍然可以存储任何类型的数据.根据选择,某些列更倾向于使用一个存储类而不是另一个存储类.列的首选存储类称为"亲和性".
我的理解是SQLite正是它的名字 - 一个非常轻量级的简约数据库引擎.与强类型相关的开销可能超出了项目的范围,最好留给使用SQLite的应用程序.
但同样,根据他们的网站,他们已经这样做,以最大限度地兼容其他数据库引擎.