数据类型

数据类型学习摘要(只记录自己认为难理解的和易忘记的)

一、浮点数(FLOAT/DOUBLE)与定点数(DECIMAL)区别:

1.浮点数的存储空间是默认的,定点数的存储空间由其精度决定

2.当规定了数据的精度时(例如:FLOAT(6,2),DOUBLE(6,2),DECIMAL(6,2)),实际数据超出精度范围后,浮点数四舍五入,无警告,而定点数(DECIMAL(M,D);M代表数据总长度,称为精度,D代表小数点后的长度,称为标度)截断,且有相应警告;

3.当不规定数据精度时,浮点数有默认精度,而DECIMAL型默认整数位为10,小数位为0,即默认为整数,例如c的数据类型为DECIMAL,插入3.1434,显示为3,且有警告

4.在MySQL中,定点数以字符串形式存储,精度比浮点数要高,且浮点数会出现误差,所以选择定点数比较安全

二、日期及时间类型:

YEAR类型占一个字节,即8位,8位范围是0-255,而YEAR范围1901-2155,矛盾了不是?

原来YEAR的表示方法是1900+(0-255),所以才有了1901-2155



DATETIME占8个字节,范围:1000-01-01 00:00:00~9999-12-31 23:59:59

TIMESTAMP占4个字节,范围:19700101080001~20380119111407;零值:00000000000000

DATETIME零值:0000-00-00 00:00:00

TIMESTAMP的几种与DATETIME类型不同的形式:

1.使用CURRENT_TIMESTAM与P来输入当前日期时间

2.输入NULL时,系统会输入系统当前日期与时间

3.无任何输入时,系统会输入系统当前日期与时间

4.TIMESTAMP类型能够根据不同地区的时区来转换时间

三、CHAR与VACHAR:

1.CHAR的长度固定,而VARCHAR长度可变,例如:向CHAR(5)插入“1”,占用5个字节;而VARCHAR(5)中“1”占用2个字节(占用空间为字符串实际长度加 1)

2.CHAR类型自动删除空行,‘123 ’显示‘123’而VARCHAR保留空格,‘123 ’显示‘123 ’

3.CHAR与VARCHAR若插入值超限,系统阻止值的插入并报错

四、ENUM类型:('woman','man')

1.枚举类型,最多有65535个值,列表中每一个值都有一个顺序排列的编号,MySQL中存入的是这个编号,而不是列表中的值;

2.如果ENUM加上了NOT NULL 属性,其默认值为列表的第一个元素;若不加NOT NULL属性,ENUM类型允许插入NULL,且NULL为默认值

3.ENUM只能选取列表的一个值

五、SET类型:('woman','man')

1.枚举,与ENUM类型一致

2.可以取列表中一个元素或多个元素的组合,最多为64个元素构成的组合

3.插入记录时,SET字段中的元素顺序无关紧要,存入MySQL数据库后,数据库系统会自动按照定义时的顺序显示

4.所有的插入值必须是列表的元素,当插入值的一部分元素正确,一部分错误,系统会报错

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容