人们能够非常容易地区分数字与字符,可是计算机并不会。除非是你明确地告诉它,1是数字,“汉”是文本,不然它始终没法分辨1和‘汉’的区别。因而,在每一个计算机语言里都界定了数据类型,实际上便是对常见的各种各样的数据类型进行了明确的区分。你要让计算机计算数值,就传输数字给它,你要让它处理文本,就传字符串类型给他们。
在SQL中,数据类型是一个标签,是一个有利于SQL掌握每列中期望储存什么类型的数据的手册,它也标志了SQL怎样与储存的数据进行交互。SQL中常见的数据类型有多种,本文便介绍一下SQL中基本的数据类型。
1.字符型数据:
char\varchar\text——这几类数据类型是用于储存字符串的,他们的区别在于:
nchar、nvarchar、ntext——这几个是用来储存字符串的,与上面的对应是相同的。唯一的区别是这三类都选用Unicode编号,一般在做国际化的网站时应用。
2.时间日期型数据
datetime、smalldatetime——他们都是用以储存日期和时间信息,其区别在于:
3.整型数据
bigint、int、smallint、tinyint——这四个数据类型是用以存储整数的,其区别在于:
数据库表中的每一个列都规定有名字和数据类型。SQL开发者务必在建立SQL表时声明表格中的每一个列即将储存的数据类型。
下边的表格列举了SQL中通用的数据类型:
数据类型 | 描述 |
CHARACTER(n) | 字符/字符串。固定长度 n。 |
VARCHAR(n) 或CHARACTER VARYING(n) | 字符/字符串。可变长度。最大长度 n。 |
BINARY(n) | 二进制串。固定长度 n。 |
BOOLEAN | 存储 TRUE 或 FALSE 值 |
VARBINARY(n) 或BINARY VARYING(n) | 二进制串。可变长度。最大长度 n。 |
INTEGER(p) | 整数值(没有小数点)。精度 p。 |
SMALLINT | 整数值(没有小数点)。精度 5。 |
INTEGER | 整数值(没有小数点)。精度 10。 |
BIGINT | 整数值(没有小数点)。精度 19。 |
DECIMAL(p,s) | 精确数值,精度 p,小数点后位数 s。例如:decimal(5,2) 是一个小数点前有 3 位数,小数点后有 2 位数的数字。 |
NUMERIC(p,s) | 精确数值,精度 p,小数点后位数 s。(与 DECIMAL 相同) |
FLOAT(p) | 近似数值,尾数精度 p。一个采用以 10 为基数的指数计数法的浮点数。该类型的 size 参数由一个指定最小精度的单一数字组成。 |
REAL | 近似数值,尾数精度 7。 |
FLOAT | 近似数值,尾数精度 16。 |
DOUBLE PRECISION | 近似数值,尾数精度 16。 |
DATE | 存储年、月、日的值。 |
TIME | 存储小时、分、秒的值。 |
TIMESTAMP | 存储年、月、日、小时、分、秒的值。 |
INTERVAL | 由一些整数字段组成,代表一段时间,取决于区间的类型。 |
ARRAY | 元素的固定长度的有序集合 |
MULTISET | 元素的可变长度的无序集合 |
XML | 存储 XML 数据 |
但是总的来说,不同数据库对数据类型的界定是不一样的。下边的表格显示了各种不同数据库里面一些数据类型的通用名称:
数据类型 | Access | SQLServer | Oracle | MySQL | PostgreSQL |
boolean | Yes/No | Bit | Byte | N/A | Boolean |
integer | Number (integer) | Int | Number | IntInteger | IntInteger |
float | Number (single) | FloatReal | Number | Float | Numeric |
currency | Currency | Money | N/A | N/A | Money |
string (fixed) | N/A | Char | Char | Char | Char |
string (variable) | Text (<256)Memo (65k+) | Varchar | VarcharVarchar2 | Varchar | Varchar |
binary object | OLE Object Memo | Binary (fixed up to 8K)Varbinary (<8K)Image (<2GB) | LongRaw | BlobText | BinaryVarbinary |
注意:在不一样的数据库文件,同一种数据类型很可能有不一样的叫法。即便叫法是一样的,其占用内存大小和另外一些细节也可能不同。
MySQL数据类型详见《MySQL数据类型介绍》,还有视频介绍。
评论区(0)