数据库表中字段类型有哪些?

To put it bluntly, choosing a field type in a database table is very simple. The key lies in what type of data you want to store.其实字段数据的类型可以分为以下几种类型:
我们说的是最原始的、二进制类型,比如Binary、Varbinary和Image。
二进制数据是固定长度的二进制,适合容纳固定大小的二进制数据,例如图片; varbinary 是可变长度的,可容纳可变大小的二进制数据; An image is used to store very large binary data, such as video files or audio files.
另外一点,字符数据类型,Char、Varchar和Text。
Char is a fixed-length string, while Varchar is a variable-length string.两者主要用于存储文本数据。
Text can store very large amounts of text data and is suitable for storing large amounts of text content.
又一个伟大的作品。
Unicode 数据类型包括 Nchar、Nvarchar 和 Ntext。
这些类型与 Char、Varchar 和 Text 类似,但它们支持 unicode 字符,这意味着可以存储国际字符集中存储的任何字符。
Date and time data types are also critical, such as Datetime and Smalldatetime. Datetime可以存储完整的日期和时间,而Smalldate只存储年、月、日、时,不存储分、秒。

数字数据类型包括正数和负数、小数和整数。
这些类型,如int、decimal、float等,适合对各种数字进行计数。

一种货币通常代表正数或负数的货币,通常用于金融应用。

最后,特殊数据类型包括时间戳、位和唯一标识符。
表示数据的最后更新时间,Bit存储一位数据,Uniqueidentifier用于唯一标识每条记录。

等一下,还有一件事。
我一开始以为所有的时间数据和数据类型都可以精确到秒,后来发现分钟时间只能精确到分钟。
Many people do not pay attention to this point, which can lead to errors during the process.
所以,选择合适的数据库字段类型主要是根据要存储的数据的特点。
我认为根据店铺的特点和要求选择不同类型的领域是值得尝试的。

五种主流数据库:常用数据类型

等等,我昨天在调试代码时发现了一些奇怪的情况。
users表中的手机号字段原本设计为VARCHAR(1 1 ),但是导入任务突然报错说数据类型不匹配。
我立即查看日志,发现某些链接在手机号码前面多加了一个0,比如“008 6 1 3 xxxxxxxx”,而数据库直接将其与字符串进行比较,不符合VARCHAR(1 1 )规则。
这让我想起当我使用SQLite作为笔记应用程序时,在复制粘贴时,存储地址的文本字段有时会包含隐藏字符,这导致查询时很难匹配地址。
注意这些细节。

五种主流数据库:常用数据类型

说实话,刚入行的时候,对于数据库类型我是很困惑的。
但经过多年的努力,我学会了一些技巧。
你列出的类别已经很齐全了,我就根据自己的理解多说几句。

数字类型是最有趣的事情。
MySQL的TINYINT到BIGINT系列在我接手一个老项目的时候用得很好——有一个库存系统表使用了SMALLINT库存,但是当举办某些促销活动时,整数溢出了。
老实说,在这种情况下,Oracle 的 NUMBER 类型可能更稳定。
虽然不是很详细,但是兼容性确实很强。
SQL Server 的 INT 和 BIGINT 经常与 NUMERIC/DECIMAL 结合使用。
之前在开发财务报告系统时,我必须使用 DECIMAL(2 8 , 4 ) 作为货币字段。

字符串类型最让我印象深刻的是 CHAR 和 VARCHAR 之间的选择。
有一次,我在给客户做一个系统时,他要求产品名称的长度固定为8 个字符。
结果,如果我保存“Apple”,我必须填写六个空格。
不仅浪费存储,而且查询速度也很慢。
当时我直接建议他改用VARCHAR,客户端还瞪着我。
现在想想,MySQL和PostgreSQL设计统一调用CHAR/VARCHAR是完全省心的。
对于大对象类型,Oracle 的 CLOB 和 NCLOB 支持 Unicode,这在构建多语言网站时特别有用。
我之前做电商项目的时候就是这么用的。

最常见的日期和时间类型是时区问题。
有一个项目使用了MySQL TIMESTAMP,但是跨时区调试时数据确实很乱。
然后,我转向 TIMESTAMP WITH TIME ZONE Oracle 来解决它。
SQL Server的DATETIME2 精度很高,但是SQL Server在SQL Server 2 008 之前并没有实现ISO 8 6 01 标准,参与国际项目时一定要注意。

我对二进制类型没有太多了解,但是 PostgreSQL 的 BYTEA 是最容易使用的。
有一个存储图像的项目。
它连续存储二进制流并快速读取它们。
与 MySQL BLOB 不同,BLOB 需要自行处理。
SQLite BLOB 实际上非常易于使用,并且非常适合在轻量级数据库中使用。

说实话,选择品种就像买菜一样——菜市场里什么都有,关键是你懂得如何选择。
如果您要给出一个字段来存储手机号码,我绝对建议使用 VARCHAR(2 0),但如果您正在开发物联网系统来存储传感器数据,则应该使用 NUMERIC 或 REAL。
我个人从来没有跑过这方面的大数据项目,但是听说PostgreSQL的NUMERIC类型支持任意精度,在做金融风控的时候用得很多。
我记得数据可以达到9 9 9 9 位左右,但具体情况还需要确认。

您制定的分类其实很好,但是您在选择业务类型时需要考虑“未来规模”。
有个客户用MySQL INT来存储订单号,结果一年后表就爆炸了——这个教训太惨痛了。
所以现在设计的时候,我建议他们保留BIGINT。
空间虽然大了,却省去了无穷无尽的麻烦。