二、MySQL支持的数据类型(MySQL读书笔记)

1、数值类型

1.1、按照取值范围和存储方式不同,分为 tinyint smallint mediumint int bigint,如果超出类型范围的操作,会发生“Out of Range”错误

1.2、整型数据,MySQL支持在类型名称后面的小括号内指定显示宽度,默认为 int(11),一般配合 zerofill (零填充,即位数不够的空间使用 0 填满)使用

1.3、零填充不会对插入的数据有任何影响,还是按照类型的实际精度进行保存

1.4、插入的整型数据超出宽度限制时,仍然会插入正确的数值而不会受宽度限制影响

1.5、所有的整数类型都有一个可选属性 UNSIGNED(无符号),如果需要在字段里面保存非负数或需要较大的上限值时,可用此选项(取值范围是正常值的下限取 0,上限值取原值的 2 倍)。一个列指定了 zerofill ,MySQL默认添加 UNSIGNED 属性

1.6、整数类型还有一个属性 AUTO_INCREMENT,只用于整数类型,一般从 1 开始,步长为 1 。一张表中最多只能有一个 AUTO_INCREMENT 列,对于任意 AUTO_INCREMENT 的列应该被定义为 NOT NULL,并定义为 PRIMARY KEY | UNIQUE 键

1.7、小数表示:浮点数(float double) , 定点数(decimal)在MySQL内部以字符串形式存放,常用来表示货币等高精度的数据);都支持 (M,D) 定义精度(M - 精度,一共显示几位数字【整数位+小数位】;D - 标度,小数点后面的位数);MySQL保存时(超出精度)进行四舍五入;float 和 double 不指定精度时,按照实际精度显示;decimal 不指定精度时默认为(10,0),且数据超过了精度和标度值,系统报错(新版不报错了??;精度和标度的表示为非标准用法

1.8、BIT(M) 类型:用于存放位字段值,M 范围位 1~64,默认为 1 ,直接使用 SELECT 命令看不到结果,可以使用 bin() | hex() 函数进行读取。插入 bit 时,首先转换为二进制,如果位数允许,成功;如果位数小于实际定义的位数,则插入失败。

 

2、日期时间类型DATE - 年月日;DATETIME - 年月日时分秒;TIME - 时分秒;TIMESTAMP - 与时区有关;不适合存放比较久远的日期,存取都会转换为本地时区进行操作;如果需要经常插入或更新日期为当前系统时间,返回结果显示为 YYYY-MM-DD HH:MM:SS 格式字符串;YEAR - 年(有2|4位格式,默认为4位格式;2位的从5.5.27后不再支持)。每种日期都有一个范围,超出范围,系统会错误提示并以零值进行存储

2.1、DATETIME & TIMESTAMP 比较:TIMESTAMP 支持的时间范围较小;表中第一个 TIMESTAMP 列自动设置为系统时间;TIMESTAMP 的插入和查询受当地时区影响,更能反映实际日期;TIMESTAMP 的属性受 MySQL 版本和服务器 SQLMode 的影响很大

 

3、字符串类型(CHAR VARCHAR BINARY VARBINARY BLOB TEXT ENUM SET 等)

3.1、CHAR 列的长度固定为创建表时声明的长度(0~255);VARCHAR 列的值为可变长字符串(0~65535)。检索时,CHAR 列删除了尾部的空格,而 VARCHAR 则保留了空格

3.2、BINARY & VARBINARY:包含二进制字符串而不包含非二进制字符串;类似于 CHAR & VAHRCHAR。当保存 BINARY 时,在值的最后通过填充 0x00 (零字节)以达到指定的字段定义长度

3.3、ENUM 类型:枚举类型,范围需要通过创建表时通过枚举方式显式指定(忽略大小写;都会被转换为大写;可通过索引插入【从1开始】;只允许从集合中选取单个值)

 

4、SET:字符串对象;一个可以选取多个成员

create table ss(col set('a','b','c','e','f'));
-- 支持从定义的集合中选取多个值执行插入操作
-- 对于相同的元素只计算一次
insert into ss values('a,b'),('a,e,c');

 

你可能感兴趣的:(MySQL)