MySQL基础———数据类型
整型类型:
根据所储存的整数数值取值范围不同,可分为以下五类:
(1)tinyint占1个字节
(2)smallint占2个字节
(3)mediumint 占3个字节
(4)int占4个字节
(5)bigint占8个字节
根据每种类型所占的字节数可确定其无符号整数和有符号整数的取值范围
浮点数类型:
单精度浮点数,float, 占4个字节
双精度浮点数,double,占8个字节
定点数类型:decimal(M,D) 所占字节数为M+2, M表示数据的长度,D表示数据的小数点后的长度
时间与日期类型:1.year占1个字节 格式为YYYY2.time 占3个字节 格式为HH:MM:SS3.date 占4个字节 格式为YYYY-MM-DD4.datetime 占8个字节 格式为YYYY-MM-DD HH:MM:SS5.timestamp 占4个字节 格式为YYYY-MM-DD HH:MM:SS1.在制定year类型时,可以使用以下3种格式指定year的值
(1)使用4位的字符串或者数字表示,范围为1901到2155,用字符串表示时注意需要加‘ ’
(2)使用2位的字符串表示,范围是'00'--'99',其中'00'--'69'会被转换成2000--2069
'70'--'99'会被转换成1970--1999
(3)使用两位数字表示,1--69会被转换成2001--2069,70--99会被转换成1970--1999
在使用‘0’与0是,两个值表示并不相同,前者是2000,后者是00002.date类型在表示时,使用字符串的形式或者数字的形式,其中表示月份和日期的在数字与字符
串的表示形式中表示的值相同,但表示年份的值可以是YYYY,‘YYYY’,YY,‘YY’,根据year类型
的不同表示取得不同的值
通过current_date 或者 now()表示系统当前时间3. time类型在表示时
(1)以 'D HH:MM:SS' 字符串格式表示,D的取值范围是0--34,插入数据时,小时的值为
D*24+HH
(2)以HHMMSS的数字形式或者'HHMMSS'字符串格式插入4. 在表示datetime类型时,表示 年月日时分秒时,可以使用字符串格式或者数字格式,其中表
示年时,可以使用四位或者两位的形式,表示的值与year类型的相同表示格式表示的值相同
使用now() 获取系统当前时间5.timestamp类型在表示时,它的显示形式与datetime类型相同,但取值范围却比datetime类型小
在使用current_timestamp时,或者输入NULL,无输入这三种情况下,系统会输入系统当前时间
字符串和二进制类型:1.char(LEN) 和 varchar(LEN) 表示字符串类型,它们后面的括号中的值表示字符串长度,但对于
char来说,数据所占的储存空间大小就是LEN个字节,而对于varchar类型,所储存的数据所占的空
间大小是其数据的实际大小+1个字节
当插入的 cahr 类型数值没有达到其标识的长度LEN时,系统会使用空格进行填充2.binary(LEN) 和 varbinary(LEN) 表示的二进制数据,它们与char varchar相似,但当binary类
型插入的值长度没有达到它标识的长度时,系统会用'\0'补齐
text类型:
用于表示大文本数据,分为tinytext,text,mediumtext,longtext 4种,这四种数据类型表示的存
储范围依次增大。
blob类型:
表示数据量很大的二进制数据,分为tinyblob,blob,mediumblob,longblob,这四种数据类型的存
储范围依次增大
enum(枚举)类型:
定义为enum('值1','值2',……),enum类型的数据只能从枚举列表中取一个,enum列表中的每一个值都
有一个顺序编号,在MySQL中存入的就是这个数据编号,而不是列表的值
set类型:
用于表示字符串的对象,它的值可以有0个或多个,它的定义形式为set('值1','值2',……),与enum相
同,在列表中的每一个值都有一个顺序编号,在MySQL中存入的就是这个数据编号,而不是列表的值
bit类型:
用于表示二进制数据,bit(LEN) LEN 的范围为1——64,如果分配的bit(LEN)类型的数据长度小于LEN,
将在数据的左边用0补齐