sql数据类型怎么选(sql中定义年龄用什么数据类型,长度为多少)

本文目录
- sql中定义年龄用什么数据类型,长度为多少
- 建SQL表时身份证号码的数据类型最好选什么
- sql server 货币 字段 类型 一般用什么类型
- sql数据库中常用的数据类型有什么
- SQL定义字段时,数据类型是如何确定的
- 从modbus RTU协议的太阳能路灯控制器采集到数据写进SQL数据库类型应该选择怎样的数据类型呢
- MYSQL中如何选择合适的数据类型
- 跟我学SQL:(九)datetime和interval数据类型
- 怎么用sql server 2008建立一个电影数据库用什么数据类型
sql中定义年龄用什么数据类型,长度为多少
sql中定义年龄可以用的用数据类型及长度:
1、char(3) :长度为3的字符串。小于10位且长度基本固定的字符串用char。
2、varchar(3):长度为3的字符串。长度大于10的用varchar,varcha在10以内占用空间比char大。
3、int:长度为4个字节,存储从(-2147483648)到(2147483647)。
4、Smallint:长度为2个字节,存储从-32768到32767。
5、tinyint:长度为1个字节,存储0到255的数字。
扩展资料
sql数据类型使用范围
Text:用于文本或文本与数字的组合。最多255个字符。
Memo:用于更大数量的文本。最多存储65536个字符。
Byte:允许0到255的数字。
Integer:允许介于-32768到32767之间的数字。
Long:允许介于 -2147483648 与 2147483647之间的全部数字。
Single:单精度浮点。处理大多数小数。
Double:双精度浮点。处理大多数小数。
Currency:用于货币。支持15位的元,外加4位小数。
AutoNumber:字段自动为每条记录分配数字,通常从1开始。
Date/Time:用于日期和时间。
Yes/No:逻辑字段,可以显示为Yes/No、True/False或On/Off。在代码中,使用常量True和 False(等价于1和 0);Yes/No字段中不允许Null值。
Ole Object:可以存储图片、音频、视频或其他BLOBs (Binary Large OBjects)。
Hyperlink:包含指向其他文件的链接,包括网页。
建SQL表时身份证号码的数据类型最好选什么
建SQL表时,身份证号码为固定18位长,对该字段最好采用char数据类型。
char类型对英文字符占用1个字节,对一个汉字占用2个字节,而且char存储定长数据很方便,char字段上的索引效率极高。
比如:定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不够的字符用空格去填。因为是固定长度,所以速度效率高。
扩展资料
比较SQL中的char、varchar、nchar、nvarchar的区别
1、前面加“n”与不加“n”
char、varchar这两个只能用于单字节来存储数据,适合英文,中文会不兼容。常用的汉字需要用两个字节来存储,所以就要使用nchar、nvarchar。
char、varchar因为是单字节的所以在存储的时候最大数值可以达到8000,而nchar、nvarchar是最大数值4000。
2、char与varchar的区别
直接举例子:char(10)就是给予一个固定的空间,不管存储的内容有没有到达10个字节,都占用10个字节的空间,同时,varchar(10)和nvarchar(10)的最大空间只能为10字节,如果不到10字节就不占用10字节。
sql server 货币 字段 类型 一般用什么类型
货币的字段类型一般有int,float,money/smallmoney,decimal/numberic。
根据存储数据的精度不同选择:
int只能存储整数的钱。
money/smallmoney 数据类型精确到它们所代表的货币单位的万分之一 。
decimal/numberic 可以自定义小数位和能存储的数据精度, 所以一般使用这种类型的人会多一些。
float 对货币这种需要精确值的数值不合适。
总结:
在财务方面最好实用money与decimal类型。
如果是简单的计算可以使用float类型,不过float类型在有些平台上取出数据并不是那么准确,有可能会丢失精度。所以说如果在性能稳定的平台中,开销不是很大,建议使用以上两种类型。
扩展资料:
SQL数据类型:
1、bit 整型
bit数据类型是整型,其值只能是0、1或空值。这种数据类型用于存储只有两种可能值的数据,如Yes 或No、True 或False 、On 或Off.
注意:很省空间的一种数据类型,如果能够满足需求应该尽量多用。
2、tinyint 整型
tinyint 数据类型能存储从0到255 之间的整数。它在你只打算存储有限数目的数值时很有用。这种数据类型在数据库中占用1 个字节。
3、smallint 整型
smallint 数据类型可以存储从- 2的15次幂(-32768)到2的15次幂(32767)之间的整数。这种数据类型对存储一些常限定在特定范围内的数值型数据非常有用。这种数据类型在数据库里占用2 字节空间。
4、int 整型
int 数据类型可以存储从- 2的31次幂(-2147483648)到2的31次幂 (2147483 647)之间的整数。存储到数据库的几乎所有数值型的数据都可以用这种数据类型。这种数据类型在数据库里占用4个字节。
5、decimal 精确数值型
decimal 数据类型能用来存储从-10的38次幂-1到10的38次幂-1的固定精度和范围的数值型数据。使用这种数据类型时,必须指定范围和精度。 范围是小数点左右所能存储的数字的总位数。精度是小数点右边存储的数字的位数。
6、numeric 精确数值型
numeric数据类型与decimal 相似。
7、smallmoney 货币型
smallmoney 数据类型用来表示钱和货币值。这种数据类型能存储从-214748.3648 到214748.3647 之间的数据,精确到货币单位的万分之一。
8、money 货币型
money数据类型用来表示钱和货币值。这种数据类型能存储从-9220亿到9220 亿之间的数据,精确到货币单位的万分之一。
9、float 近似数值型
float 数据类型是一种近似数值类型,供浮点数使用。说浮点数是近似的,是因为在其范围内不是所有的数都能精确表示。浮点数可以是从-1.79E+308到1.79E+308 之间的任意数。
10、real 近似数值型
real 数据类型像浮点数一样,是近似数值类型。它可以表示数值在-3.40E+38到3.40E+38之间的浮点数。
sql数据库中常用的数据类型有什么
数字数据只包含数字。数字数据类型包括正数和负数、小数(浮点)和整数。整数由正整数和负整数组成,如320-2和33967。在MicrosoftSQLServer中,存储在整数中的数据类型是int、smallint和tinyint。
MySQL数据类型在MySQL中,有三种主要的类型:Text(文本)、Number(数字)和Date/Time(日期/时间)类型。话不多说,直接上图。
整数数据类型整数数据类型是最常用的数据类型之一。int(integer)smallinttinyintbigint浮点数据类型浮点数据类型用于存储十进制小数。
数值类型Mysql支持所有标准SQL中的数值类型,其中包括严格数据类型(INTEGER,SMALLINT,DECIMAL,NUMBERIC),以及近似数值数据类型(FLOAT,REAL,DOUBLEPRESISION),并在此基础上进行扩展。
SQL定义字段时,数据类型是如何确定的
根据你想要存放的数据的类型来确定,使用正确的数据类型,在处理数据时速度上会有优势而且也很方便。比如你想要存放整数,则可以考虑用int类型,如果你要放的数字大小有可能超过int类型的最大允许范围,则考虑用long类型或其他存放大数字的类型;如果你要存放字符串类型,则可以考虑用varchar类型或char类型,varchar和char都可以指定长度,不同的是,varchar存放的数据长度在指定长度内多长就是多长,而char则不足指定长度会以空格填充;如果你要存放日期时间类型的数字,而可以考虑使用datetime类型,以此类推,不一而足。以上说的都是大多数场合常用的字段类型。
从modbus RTU协议的太阳能路灯控制器采集到数据写进SQL数据库类型应该选择怎样的数据类型呢
需要根据modbus协议的寄存器定义来确定。有浮点型、整型、 字符串型等。具体要看通信协议里面的点表定义。
采集过程示意图
MYSQL中如何选择合适的数据类型
MySQL 数据类型细分下来,大概有以下几类:
数值,典型代表为 tinyint,int,bigint
浮点/定点,典型代表为 float,double,decimal 以及相关的同义词
字符串,典型代表为 char,varchar
时间日期,典型代表为 date,datetime,time,timestamp
二进制,典型代表为 binary,varbinary
位类型
枚举类型
集合类型
大对象,比如 text,blob
json 文档类型
一、数值类型(不是数据类型,别看错了)如果用来存放整数,根据范围的不同,选择不同的类型。
以上是几个整数选型的例子。整数的应用范围最广泛,可以用来存储数字,也可以用来存储时间戳,还可以用来存储其他类型转换为数字后的编码,如 IPv4 等。示例 1用 int32 来存放 IPv4 地址,比单纯用字符串节省空间。表 x1,字段 ipaddr,利用函数 inet_aton,检索的话用函数 inet_ntoa。
查看磁盘空间占用,t3 占用最大,t1 占用最小。所以说如果整数存储范围有固定上限,并且未来也没有必要扩容的话,建议选择最小的类型,当然了对其他类型也适用。root@ytt-pc:/var/lib/mysql/3305/ytt# ls -sihl总用量 3.0G3541825 861M -rw-r----- 1 mysql mysql 860M 12月 10 11:36 t1.ibd3541820 989M -rw-r----- 1 mysql mysql 988M 12月 10 11:38 t2.ibd3541823 1.2G -rw-r----- 1 mysql mysql 1.2G 12月 10 11:39 t3.ibd
二、浮点数 / 定点数先说 浮点数,float 和 double 都代表浮点数,区别简单记就是 float 默认占 4 Byte。float(p) 中的 p 代表整数位最小精度。如果 p 》 24 则直接转换为 double,占 8 Byte。p 最大值为 53,但最大值存在计算不精确的问题。再说 定点数,包括 decimal 以及同义词 numeric,定点数的整数位和小数位分别存储,有效精度最大不能超过 65。所以区别于 float 的在于精确存储,必须需要精确存储或者精确计算的最好定义为 decimal 即可。示例 3创建一张表 y1,分别给字段 f1,f2,f3 不同的类型。mysql-(ytt/3305)-》create table y1(f1 float,f2 double,f3 decimal(10,2));Query OK, 0 rows affected (0.03 sec)
三、字符类型字符类型和整形一样,用途也很广。用来存储字符、字符串、MySQL 所有未知的类型。可以简单说是万能类型!
char(10) 代表最大支持 10 个字符存储,varhar(10) 虽然和 char(10) 可存储的字符数一样多,不同的是 varchar 类型存储的是实际大小,char 存储的理论固定大小。具体的字节数和字符集相关。示例 4例如下面表 t4 ,两个字段 c1,c2,分别为 char 和 varchar。mysql-(ytt/3305)-》create table t4 (c1 char(20),c2 varchar(20));Query OK, 0 rows affected (0.02 sec)
所以在 char 和 varchar 选型上,要注意看是否合适的取值范围。比如固定长度的值,肯定要选择 char;不确定的值,则选择 varchar。
四、日期类型日期类型包含了 date,time,datetime,timestamp,以及 year。year 占 1 Byte,date 占 3 Byte。
time,timestamp,datetime 在不包含小数位时分别占用 3 Byte,4 Byte,8 Byte;小数位部分另外计算磁盘占用,见下面表格。
注意:timestamp 代表的时间戳是一个 int32 存储的整数,取值范围为 ’1970-01-01 00:00:01.000000’ 到 ’2038-01-19 03:14:07.999999’;datetime 取值范围为 ’1000-01-01 00:00:00.000000’ 到 ’9999-12-31 23:59:59.999999’。
1. 如果时间有可能超过时间戳范围,优先选择 datetime。2. 如果需要单独获取年份值,比如按照年来分区,按照年来检索等,最好在表中添加一个 year 类型来参与。3. 如果需要单独获取日期或者时间,最好是单独存放,而不是简单的用 datetime 或者 timestamp。后面检索时,再加函数过滤,以免后期增加 SQL 编写带来额外消耗。
建立表 t5,对这些可能需要的字段全部分离开,这样以后写 SQL 语句的时候就很容易了。
当然了,这种情形占用额外的磁盘空间。如果想在易用性与空间占用量大这两点来折中,可以用 MySQL 的虚拟列来实时计算。比如假设 c5 字段不存在,想要得到 c5 的结果。mysql-(ytt/3305)-》alter table t5 drop c5, add c5 year generated always as (year(c1)) virtual;Query OK, 1 row affected (2.46 sec)Records: 1 Duplicates: 0 Warnings: 0
五、二进制类型
binary(10)/varbinary(10) 代表的不是字符个数,而是字节数。
行结束符不一样。char 的行结束符是 \0,binary 的行结束符是 0x00。
由于是二进制存储,所以字符编码以及排序规则这类就直接无效了。
六、位类型
1. 对于 bit(8) 如果单纯存放 1 位,左边以 0 填充 00000001。2. 查询时可以直接十进制来过滤数据。3. 如果此字段加上索引,MySQL 不会自己做类型转换,只能用二进制来过滤。
创建表 c1, 字段性别定义一个比特位。mysql-(ytt/3305)-》create table c1(gender bit(1));Query OK, 0 rows affected (0.02 sec)
mysql-(ytt/3305)-》select cast(gender as unsigned) ’f1’ from c1;+------+| f1 |+------+| 0 || 1 |+------+2 rows in set (0.00 sec)
过滤数据也一样,二进制或者直接十进制都行。mysql-(ytt/3305)-》select conv(gender,16,10) as gender \ -》 from c1 where gender = b’1’; +--------+| gender |+--------+| 1 |+--------+1 row in set (0.00 sec) mysql-(ytt/3305)-》select conv(gender,16,10) as gender \ -》 from c1 where gender = ’1’;+--------+| gender |+--------+| 1 |+--------+1 row in set (0.00 sec)
mysql-(ytt/3305)-》create table c2(gender char(0));Query OK, 0 rows affected (0.03 sec)
mysql-(ytt/3305)-》select count(*) from c1;+----------+| count(*) |+----------+| 33554432 |+----------+1 row in set (1.37 sec)
mysql-(ytt/3305)-》insert into c2 select if(gender = 0,’’,null) from c1;Query OK, 33554432 rows affected (2 min 18.80 sec)Records: 33554432 Duplicates: 0 Warnings: 0
两张表的磁盘占用差不多。root@ytt-pc:/var/lib/mysql/3305/ytt# ls -sihl总用量 1.9G4085684 933M -rw-r----- 1 mysql mysql 932M 12月 11 10:16 c1.ibd4082686 917M -rw-r----- 1 mysql mysql 916M 12月 11 10:22 c2.ibd
检索方式稍微有些不同,不过效率也差不多。所以说,字符类型不愧为万能类型。
七、枚举类型
1. 最大占用 2 Byte。2. 最大支持 65535 个不同元素。3. MySQL 后台存储以下标的方式,也就是 tinyint 或者 smallint 的方式,下标从 1 开始。4. 排序时按照下标排序,而不是按照里面元素的数据类型。所以这点要格外注意。
创建表 t7。mysql-(ytt/3305)-》create table t7(c1 enum(’mysql’,’oracle’,’dble’,’postgresql’,’mongodb’,’redis’,’db2’,’sql server’));Query OK, 0 rows affected (0.03 sec)
1. 最大占用 8 Byte,int64。2. 内部以二进制位的方式存储,对应的下标如果以十进制来看,就分别为 1,2,4,8,...,pow(2,63)。3. 最大支持 64 个不同的元素,重复元素的插入,取出来直接去重。4. 元素之间可以组合插入,比如下标为 1 和 2 的可以一起插入,直接插入 3 即可。
mysql-(ytt/3305)-》create table c7(c1 set(’mysql’,’oracle’,’dble’,’postgresql’,’mongodb’,’redis’,’db2’,’sql server’));Query OK, 0 rows affected (0.02 sec)
mysql-(ytt/3305)-》INSERT INTO c7WITH RECURSIVE ytt_number (cnt) AS ( SELECT 1 AS cnt UNION ALL SELECT cnt + 1 FROM ytt_number WHERE cnt 《 pow(2, 7) )SELECT *FROM ytt_number;Query OK, 128 rows affected (0.01 sec)Records: 128 Duplicates: 0 Warnings: 0
示例 10
mysql-(ytt/3305)-》select ytt_sample_data_type(1111,222) ’result’;+--------------------------+| result |+--------------------------+| The result is: ’246642’. |+--------------------------+1 row in set (0.00 sec)
请点击输入图片描述
请点击输入图片描述
请点击输入图片描述
综上所述,日期这块类型的选择遵循以下原则:
4. 如果有保存毫秒类似的需求,最好是用时间类型自己的特性,不要直接用字符类型来代替。MySQL 内部的类型转换对资源额外的消耗也是需要考虑的。
示例 5
binary 和 varbinary 对应了 char 和 varchar 的二进制存储,相关的特性都一样。不同的有以下几点:
示例 6
来看这个 binary 存取的简单示例,还是之前的变量 @a。
切记!这里要提前计算好 @a 占用的字节数,以防存储溢出。
bit 为 MySQL 里存储比特位的类型,最大支持 64 比特位, 直接以二进制方式存储,一般用来存储状态类的信息。比如,性别,真假等。具有以下特性:
示例 7
其实这样的场景,也可以定义为 char(0),这也是类似于 bit 非常优化的一种用法。
那现在我给表 c1 简单的造点测试数据。
把 c1 的数据全部插入 c2。
枚举类型,也即 enum。适合提前规划好了所有已经知道的值,且未来最好不要加新值的情形。枚举类型有以下特性:
示例 8
八、集合类型
集合类型 SET 和枚举类似,也是得提前知道有多少个元素。SET 有以下特点:
示例 9
定义表 c7 字段 c1 为 set 类型,包含了 8 个值,也就是下表最大为 pow(2,7)。
插入 1 到 128 的所有组合。
九、数据类型在存储函数中的用法
函数里除了显式声明的变量外,默认 session 变量的数据类型很弱,随着给定值的不同随意转换。
定义一个函数,返回两个给定参数的乘积。定义里有两个变量,一个是 v_tmp 显式定义为 int64,另外一个 @vresult 随着给定值的类型随意变换类型。
简单调用下。
总结
本篇把 MySQL 基本的数据类型做了简单的介绍,并且用了一些容易理解的示例来梳理这些类型。我们在实际场景中,建议选择适合最合适的类型,不建议所有数据类型简单的最大化原则。比如能用 varchar(100),不用 varchar(1000)。
跟我学SQL:(九)datetime和interval数据类型
datetime和interval是两种与时间有关的数据类型。它们的作用体现在以下几个方面:创建或者更改记录库中的某条记录、当某个时间发生时运行记录、或者计算某个datetime变量建立后所经历过的时间。本文将介绍SQL92标准对上述两种数据类型的描述。
SQL数据类型
如果你想进一步了解SQL数据类型,请阅读SQL基础:字符串型数据类型,这篇文章的范围覆盖了SQL中的通用数据类型并说明了各种字符串数据类型的用法,SQL基础:数字数据类型详细介绍了数字数据类型。
Datetime
用于表示时间或者日期的数据类型都属于datetime类型。每一种datetime数据类型都有他自己的用于获取值的长度和它所保存信息的手段,如天、月、分钟、秒、秒的小数等等。
实际上,datetime的实现形式随着定义它的标准不同而拥有不同的长度和格式;然而,各个公司定义的类型都内在地符合下述规则。举例来说,时标(timestamp)的某个实现可能没有分隔符,随着细节的规范不同,长度和格式也发生变化,在某些场合以空格做为间隔符。Datetime数据类型包括:DATA、TIME和TIMESTAMP。让我们仔细研究这些分类,首先我们看看DATA。
DATA
用法:DATA
DATA类型允许没有参数,如精度。
DATA的字段包括年、月和日。
DATA的长度为十个字符: YYYY-MM-DD。(Y表示年、M表示月、D表示日。)
它只允许与其它DATA类型字段相比较。
允许的数字必须符合公历的规范。
TIME
用法:TIME(精度)
该类型包含了小时、分和秒,格式为hh:mm:ss(h表示小时、m表示分、s表示秒)
精度可选择,(……)
时间以世界标准时间(Universal Coordinated Time,UTC)为准,即00:00:00表示.格林威治的午夜,服务器的时区隐含的。
如果不需要秒的小数部分,那么TIME的长度为八个字符。否则就是八位长度在加上精度:hh:mm:ss.p。
它只能与其它TIME类型数据进行比较。
如果没有指定精度,精度默认为0。
TIME WITH TIME ZONE
用法:TIME (精度) WITH TIME ZONE
这个值要符合TIME数据类型
TIMEZONE部分表示相对UTC的时差:00:00:00+hh:mm。它的范围为-12:59到13:00。
精度表示秒的小数部分。
带有TIMEZONE的TIME长度为14个字符加上精度,在加上一个分隔符。
只可以与带有TIMEZONE的TIME类型数据进行比较
TIMESTAMP
用法:TIMESTAMP(精度)
该类型包含有年、月、日、时、分、秒,格式为:YYYY-MM-DD hh:mm:ss.。
可以包括秒的小数部分,这由定义的精度决定。
它的日期部分符合公历标准,时间部分为UTC格式。默认为当地时区。
时标的长度为19个字符,加上精度,在加上精度分隔符。
许多系统偏离上述定义的长度,如UNIX风格时标格式为:,YYYY-MM-DD hh:mm:ss.p。
如果没有定义精度,默认值为6,但是许多数据库公司默认为0,所以请参考你的开发文档。
时标只可以与其它TIMESTAMP类型的值相比较。
TIMESTAMP WITH TIME ZONE
怎么用sql server 2008建立一个电影数据库用什么数据类型
创建电影数据库的步骤:1. 打开 SQL Server Management Studio,连接到数据库服务器。2. 在 Object Explorer 中选择要创建数据库的服务器。3. 右键单击“数据库”,然后选择“新建数据库”。4. 在“新建数据库”对话框中,输入数据库名称并选择适当的身份验证和文件路径。5. 点击“选项”选项卡,设置数据库参数,如自增长设置、日志文件、数据文件等。6. 点击“确定”按钮完成数据库创建。在电影数据库中,可以使用以下数据类型:1. VARCHAR:用于储存电影标题、演员名字、导演名字等文本类型数据。2. INT:用于储存电影的年份、时长、票房等整数类型数据。3. FLOAT:用于储存电影的评分、价格等浮点型数据。4. DATE/DATETIME:用于储存电影的上映时间、发行时间等日期类型数据。5. IMAGE:用于储存电影海报等图片类型数据。除此之外,还可以根据具体需要添加其他数据类型。

更多文章:
service pack 3(操作系统版本升级(SP) Service Pack 3当中的“Service Pack 3”是什么意思)
2026年9月22日 10:20
html代码怎么写大佬教程(html网页的题来个大佬,写代码,题目在图上)
2026年9月22日 10:10
结构体内又一个struct(c++ 在结构体中再嵌入一个结构体如何调用)
2026年9月22日 09:40
cocos creator中文(cocoscreator和cocoscreator3d的区别)
2026年9月22日 02:30





