希望这篇文章能够做到通俗易懂
只针对初学者----这里几乎是初学者日常所使用的数据类型的全部了
如果你现在比较着急,那么我简短来讲:
在建表时不知道数据类型怎么用?
数值类的数据类型用: int (这是整数!比如123456)
小数用:float (小数点 前后位数 加起来不超过38位就好)
时间用:datetime(精确到毫秒 比如:2020-1-1 12:30:59.000)
字符串用varchar就好 (varchar要跟(),()里要有数字,比如varchar(50),这个说明你能插入50个字符长度的数据,这个类型支持汉字,数字,字母,符号)
下面就比较细化了
数值类型:
int: 整数 (例如 1) 范围是: (-2,147,483,648 至 2,147,483,647)
float: 小数 (例如 1.123 ,最大38位,小数点前后位数加起来<=38位就ok )
时间类型:
类型 | 规格 | 举例子 |
---|---|---|
time | 时分秒(纳秒) | 12:30:59.1234567 |
date | 年月日 | 2020-3-25 |
smalldatetime | 年月日 时分秒 | 2020-3-25 12:30:59 |
datetime | 年月日 时分秒(毫秒) | 2020-3-25 12:30:59.000 (较为最常用) |
datetime2 | 年月日 时分秒(纳秒) | 2020-3-25 12:30:59.0000000 |
字符串类型:
(注意:所有字符串类型的后的数值,如 char (100),代表的是容纳字符的长度,如果定义成100,那么就是说你在插入数据时,可以写入100个字符长短的数据,比如可以写入100个1,也就是字符长度,并不是一个数学记录意义上固定数值。
并且我在下面的,每个字符串类型解释中讲到的字节,和字符是不一样的,这二者要区分开来,字符是你在insert时插入几个字符就是几个字符,数据类型后定义几个字符就是几个字符,但是!字节不一样,往下看!)
为考虑连接时的类型兼容,我个人的习惯是:
char 和 nchar 一般用于固定长度数据时使用的英文,符号,数字,汉字
varchar 一般用于不固定长度可变的英文,符号,数字,汉字
char: 固定长度,不可变
范围:1-8000,定义的长度是多少就是多长的字节,
比如:你在创建表时定义了char(100),那么你在插入数据时即使你的数据是“abc”三个字,
那么总体来讲也是占用100个 字节,因为char是固定长度,
当你输入的字节长度超出了100就会报错,
当你输入的字节少于100,会自动补空值到100,所以实质占用的空间也是100个字节。
(空值也会占空间)
支持英文,数字,符号,汉字。(汉字会占两个字节长度)
nchar:固定长度 (双字节数据类型)
范围:1-4000,这个类型下插入的数据,字节数是你肉眼所看到的2倍。任何情况乘2就行了
比如:
你在创建表时定义了nchar(100),在插入数据时你的数据是“abc”,字节长度是100
不管你在这个字符范围内,也就是100以内,插入任何数据,最后整体的实际长度都是200字节,
(空值也会占空间)
支持英文,数字。汉字,符号。
varchar:可变长度(我一般只用这个,除非是要迎合其他表的数据类型)
范围:1-8000,插入的数据是几个字节就是几个字节。(汉字除外,一个汉字两个字节)
比如:你在创建表时定义了 varchar(100),你在插入数据时你的数据是“abc”三个字,
那么总体也是占用3个字节。如果是汉字“我知道”三个字,那么总体就是6个字节。
因为在这个类型下汉字一个字符占用两个字节。
并且这个数据类型下输入的汉字是你定义的长度的二分之一,
比如你定义了 varchar(6) 那么你只能输入3个汉字
支持英文,数字,汉字,字符。
nvarchar:可变长度 (双字节数据类型)
范围:1-4000,这个类型下插入的数据,也是你肉眼所看到的2倍。乘以二。
比如:你在创建表时定义了nvarchar(100),那么你在插入数据时你的数据是“我知道”三个字,
那么总体只是占用6个字节。任何字符都乘以二。
支持英文,数字。汉字,符号
({以上的 char 和 nchar 类型在我们日常的实例中不是很常用,因为固定长度一般会浪费不必要的空间,没有可变长度数据类型来的灵活,但特定情况下需要的固定字节数情况除外。}(还有就是,1个汉字在varchar和nvarchar数据类型下是占2个字节)
text:文本类型
文本类型的数据类型,可以是数字,字母,汉字,符号,一般用于记录比较长的数据,比如一些文章,日记。
最大可存储2GB大小字符数据。
以上就是常用的数据类型,初学者有任何疑问可以加入sql自学群:730986556。一起探讨sql