不同软件中的数据类型

来源:互联网 发布:物流管理信息系统软件 编辑:程序博客网 时间:2024/05/19 20:37

1、python中的数据类型

1.1数据的组成

python中数据包含三部分: 身份类型
身份-例如给变量a赋值,a=1,id(a)可得到a的身份,为长整型,代表内存地址。

1.2数据类型

python中不需要声明数据类型,在给变量赋值;时自动生成数据类型。
python中的数据类型包括:
数值型(int,long,float,complex)、
布尔型(boolean)、
字符串(string)、
列表(list)、
元组(tuple)、
字典(dict)
python中通过第三方库可以引入更复杂的数据类型,如矩阵,但都是通过这些基本类型衍生出来的。

1.2.1 列表

列表的合并 append()向原列表的尾部追加一个列表,该列表作为一个元素占一个索引位 extend()向原列表的尾部追加另一个列表中的元素,另一列表有几个元素就占几个索引位 +看起来和extend()一个效果,但是生成了一个新的列表来存放 +=和extend一个效果

1.3数据的可变与不可变

变量被创建时存于内存之中,变量被赋值指的是变量指向了该内存地址。数据的不可变指的是内存中的数据不会变,当变量被赋予新值时,变量指向了新的地址。而列表和字典这两种可变类型,当变量被赋新值时,变量指向的地址不变,地址中的内容变化。

1.4变量类型转换

对有些操作如字符串拼接会自动类型转换进行输出,而有些类型不同类型混合操作则会出错,如a=“1”,b=a+3 此时就需要类型转换

2、mysql中的数据类型

2.1、字符数据

BINARY(N)
VARBINARY(N)
BINARY和VARBINARY存储的是二进制的字符串,而非字符型字符串。也就是说,BINARY和VARBINARY没有字符集的概念,对其排序和比较都是按照二进制值进行对比。BINARY(N)和VARBINARY(N)中的N指的是字节长度,对于BINARY(10),其可存储的字节固定为10。
CHAR(N)
VARCHAR(N)
CHAR(N)和VARCHAR(N)中N指的是的字符长度。对于CHAR(10),其可存储的字节视字符集的情况而定。

2.2、日期时间数据

日期和时间类型 字节 最小值 最大值 零值表示 date 4 1000-01-01 9999-12-31 0000-00-00 datetime 8 1000-01-01 00:00:00 9999-12-31 23:59:59 0000-00-00 00:00:00 timestamp 4 19700101080001 2038年的某个时刻 0000000000000000 time 3 -838:59:59 838:59:59 00:00:00 year 1 1901 2155 0000

每种日期时间类型都有一个有效值范围,拆除这个范围系统就会进行错误提示,并将以零值(上表为零值展示表)进行存储
timestamp
1.若想将timestamp查询的值返回为数字,应在timestamp列后添加”+0”。
2.系统会为timestamp字段自动创建默认值”current_timestamp(系统日期)”。如果有第二个timestamp,则默认值为零值。
3.MySQL规定timestamp类型字段只能有一列默认值为current_timestamp。
4.时区相关。当插入日期时,会先转换成本地时区后存放;从数据库取出时,需要将日期转换为本地时区后显示。
5.timestamp受MySQL版本和服务器SQLMode影响较大。本文是以MySQL5.0为例。
year
1.当应用只需要记录年份时,year比date更省空间
2.year有两种格式:yy和yyyy。yyyy的范围是1901~2155,yy的范围是1970~2069
00~69表示2000~2069,70~99表示1970~1999。
datetime
1.不严格语法:任何标点符号都可以做日期部分或时间部分的间隔符 eg:’38[11&23 11&30+12’ 等同于 ‘38-11-23 11:30:12’ 多能够正常插入。
2.没有间隔符的字符串,如果是合法的,也将成功保存。eg:19961119083028将会被成功保存为 1996-11-19 08:30:28
3.输入错误的时间将会报错并保存为零值。eg:1998-13-23 11:30:12 没有13月份,所以这是个错误的时间,将会报错,并保存为零值

2.3、数值型数据

DECIMAL
DECIMAL从MySQL 5.1引入,列的声明语法是DECIMAL(M,D)。在MySQL 5.1中,参量的取值范围如下:
·M是数字的最大数(精度)。其范围为1~65(在较旧的MySQL版本中,允许的范围是1~254),M 的默认值是10。
·D是小数点右侧数字的数目(标度)。其范围是0~30,但不得超过M。
说明:float占4个字节,double占8个字节,decimail(M,D)占M+2个字节。
如DECIMAL(5,2) 的最大值为9 9 9 9 . 9 9,因为有7 个字节可用。
M 与D 对DECIMAL(M, D) 取值范围的影响
类型说明取值范围(MySQL < 3.23)取值范围(MySQL >= 3.23)
MySQL < 3.23 MySQL >=3.23
DECIMAL(4, 1) -9.9 到 99.9 -999.9 到 9999.9
DECIMAL(5,1) -99.9 到 999.9 -9999.9 到 99999.9
DECIMAL(6,1) -999.9 到 9999.9 -99999.9 到 999999.9
DECIMAL(6,2) -99.99 到 999.99 -9999.99 到 99999.99
DECIMAL(6,3) -9.999 到 99.999 -999.999 到 9999.999
在MySQL 3.23 及以后的版本中,DECIMAL(M, D) 的取值范围等于早期版本中的DECIMAL(M + 2, D) 的取值范围。
当数值在其取值范围之内,小数位多了,则直接截断小数位。
若数值在其取值范围之外,则用最大(小)值对其填充。

2.4、正负数问题

SIGNED [INTEGER]
UNSIGNED [INTEGER]
拿tinyint字段来举例,unsigned后,字段的取值范围是0-255,而signed的范围是-128 - 127。 那么如果我们在明确不需要负值存在的情况下,通常是不要设置signed来支持负数的。 因为只支持正数会让存储空间大一倍(当然我这种表达可能不准确)。
严格讲,在性能上是有细微的差别的。 unsigned的性能更好。

原创粉丝点击