mysql从零开始(三)数据类型

来源:互联网 发布:大连电视台直播软件 编辑:程序博客网 时间:2024/05/18 01:32
                MySql 数据类型

mysql 数据类型主要有以下三种类型:数值数据类型、日期/时间类型、字符串类型。
一、数值数据类型
整数类型:主要有 TINYINT、 SMALLINT、 MEDIUMINT 、 INT 、BIGINT。
字节长度
取值范围
如 id(int)。这里的11是该数据类型指定的显示宽度,指定能够显示的数值的个数。显示宽度只是指明mysql最大可能显示的数字个数,数值的位数小于指定宽度时会由空格填充,如果设置了zerofill,会由0填充。如(00000000001)。如果不指定,则系统为每一种类型指定默认的宽度如下表:
系统默认宽度
二、浮点类型
mysql中使用浮点数和定点数来表示小数,浮点类型有两种:单精度类型(FLOAT)和双精度类型(DOUBLE),定点类型一种DECIMAL。浮点和定点都可以使用(M,N)来表示,M称为精度,表示总共的位数,N称为标度,是表示小数的位数。
小数存储需求
FLOAT(8, 1)的列中存储1.23456,则结果为1.2。如果将相同的值存入FLOAT(8, 4) 的列中,则结果为1.2346。
DECIMAL的取值范围由M和D值决定,如果固定D值,改变M值,取值范围会随M值变大而变大,占用M+2字节。
浮点相对于定点的优点是在长度一定的情况下,浮点说能表示更大的范围,缺点是为引起精度问题。
定点数以字符串形式存储,在对精度要求比较高的时候使用DECIMAL类型比较好,两个浮点数进行运算也容易出问题,进行避免浮点数做运算。
不管是定点还是浮点类型,如果用户指定的精度超过精度范围,都会进行四舍五入处理。
三、日期与时间类型
表示日期的数据类型主要有:DATETIME,DATE,TIMESTAMP,TIME,YEAR
这里写图片描述
1、YEAR
a、四位数字或者字符串表示YEAR,范围1901~2155输入格式‘YYYY’或YYYY 例如:2010 和’2010’插入到数据库的值均为2010。
b、两位字符串表示YEAR 范围’00’~’99’,‘00’~’69’表示2000~2069,’70’~’99’表示1970~1999。’0’和’00’作用相同,插入取值范围超过范围将被转换为2000
c、以两位数字表示YEAR 范围是01~99,01~69表示2000~2069,’70’~’99’表示1970~1999。这里0将被转换成0000而不是2000。非法的数值将被转换成0000
2、Time
a、‘D HH:MM:SS’ D表示天数取值范围0-34,存储时转换成小时”D*24+HH”。还可以使用任意一种非严格语法”HH:MM:SS”、”HH:MM”、”D HH:MM”。在使用“D HH”格式时小时数字一定要用两位数表示。
b、‘HHMMSS’没有间隔符的字符串或者HHMMSS格式的数值如果值有意义’101112’被理解为“10:11:12”,但”107812”是不合法的存储时转成”00:00:00”。
Time简写’11:12’和1112 。如果没有冒号mysql假定最后两位为秒,如果有冒号则肯定被看成当天时间。也就是’11:12’表示11:12:00 而1112表示00:11:12
3、Date
a、以”YYYY-MM-DD”或者’YYYYMMDD’字符串表示的日期,取值范围是”1000-01-01”到“9999-12-31”。
b、以”YY-MM-DD”或者’YYMMDD’字符串表示的日期,年份取值同上,如“001231”存到数据库的日期为2000-12-31
c、以YY-MM-DD或者YYMMDD数字格式表示的日期,与前者一样
d、CURRENT_DATE和NOW()表示当前时间。区别是CURRENT_DATE只返回当前日期值,NOW()返回日期和时间值。
4、DateTime
a、”YYYY-MM-DD HH:MM:SS”和”YYYYMMDDHHMMSS”字符串表示日期取值范围是”1000-01-01 00:00:00”到“9999-12-31 23:59:59”。
b、以”YY-MM-DD HH:MM:SS”或者’YYMMDDHHMMSS’字符串表示的日期
c、以纯数字YYYYMMDDHHMMSS或YYMMDDHHMMSS表示日期
mysql允许不严格语法,任何标点符号都能作日期部分的间隔符如“98@12%23 12&45*21”都是可以正确插入数据库的。
5、TIMESTAMP
显示格式与DateTime相同,最大的区别在于DateTime存储日期时按实际输入存,而TIMESTAMP 值得存储是以UTC(世界标准时间)格式保存的,存储时对当前时区进行转换,检索时再转换回当前时区。

如果一个TIMESTAMP 或DateTime对象存一个Date类型的值,结果值中的时间部分被设置成00:00:00,如果Date存储一个TIMESTAMP 或DateTime值,结果的时间部分被删除。
四、字符串类型
这里写图片描述
CHAR是固定长度,CARCHAR是变长,存储占用空间为实际长度+1字节。
SET是一个字符串对象,最多可以有64个成员,各成员间用“,”隔开,去除重复的值。
五、二进制类型
这里写图片描述
BIT位字段类型,M代表位数范围1~64,如果被省略默认为1,如果值的长度小于M高位补0,如果长度大于M数据失真。
BLOB是二进制字符串,TEXT是非二进制字符串,两者均可存放大容量的信息,BLOB主要存放图片、音频信息等,TEXT只能存放纯文本文件。

0 0