欢迎光临
感谢一路有你

数据库数据类型

如果你对该文章中的内容有疑问/不解,可以点击此处链接提问
要注明问题和此文章链接地址 点击此处跳转
 

数据表的数据列的属性

1.unsigned 无符号数值
2.zerofill 零填充
3.auto_increment 自增
4.null 建立字段默认为允许为空
5.not null 不允许为空 配合default来使用
6.default 默认值 如果建立字段
例子
create table t4(
id smallint(7) unsigned zerofill  
);
insert into t4(id)values(12345);##0012345


#自增 主键 
#auto_increment 自增 主键 primary key
create table t5(
id tinyint unsigned not null primary key auto_increment ,
username varchar(20)
)engine=innodb default charset=utf8;

insert into t5(username)values('bb');


# not null 不能为null 不是 '' 0 false 
insert into t6(username)values(null);#错误
insert into t6(username)values('');#ok
insert into t6(username)values(0);#ok


#初始值default
create table t7 (
id tinyint(4) not null primary key auto_increment ,
name varchar(20) not null default 'xx'
)engine=innodb default charset=utf8;

数据类型

整数类型

# -----整数-----
整数类型   字节数 无符号范围              有符号的范围
TINYINT    1      0~255                   -128~127
SMALLINT   2      0~65535                 -32768~32767
MEDIUMINT  3      0~16777215              -8388608~8388607
INT        4      0~4294967295            -2147483648~2147483647
BIGINT     8      0~18446744073709551615  -9223372036854775808~9223372036854775808

TINYINT    4
SMALLINT   6
MEDIUMINT  9
INT        11
BIGINT     20
例子
create table t3(
id tinyint (4),
tel int (11),
username varchar(20)
)engine=innodb default charset=utf8;
#加数据
insert into t3(tel)values(123456789);

浮点类型

浮点类型 字节数 负数的取值范围                     非负数的取值范围
FLOAT    4      -3.402823466E+38~-1.175494351E-38  0和-1.175494351E-38~3.402823466E+38
DOUBLE   8      -1.79E+308~-2.22E-308              0和-2.22E-308~1.79E+308
DECIMAL  M+2    同DOUBLE                           同DOUBLE

DECIMAL(M,D)
M - 精度 数据的总长度
D - 标度 小数点后的长度
DECIMAL(5,2)
10.15
例子
create table t8(
name decimal(5,3) #99.999
)engine=innodb default charset=utf8;
insert into t8(name)values(123456456.123);

字符串

  1. varchar(n) 定长
  2. char(n)变长
CHAR(5)和VARCHAR(5)的区别
插入值   CHAR占用字节数  VARCHAR占用字节数
''       5               1
'1'      5               2
'123'    5               4
'1234'   5               5
'12345'  5               6

text类型

类型       范围          占用空间
TINYTEXT    0~255        长度+2个字节
TEXT       0~65535       长度+2个字节
MEDIUMTEXT 0~167772150   长度+3个字节
LONGTEXT   0~4294967295  长度+4个字节

ENUM类型

又称枚举类型。
ENUM('值1','值2',...,'值n')
n-代表参数列表中的第n个值,这些值末尾的空格会被系统直接删除。
ENUM类型的值只能取列表中的一个元素。
取值列表中最多能有65535成员。
列表中的每一个值都有一个顺序排列的编号,MySQL存入的是这个编号,而不是值。

例子
create table t9(
id tinyint(4) not null primary key auto_increment,
sex enum('男','女')
)engine=innodb default charset=utf8;

insert into t9(sex)values('man');#显示空
insert into t9(sex)values('男');#显示男

SET类型

 在创建表时,SET类型的取值范围就以列表的形式指定了。
SET('值1','值2',...,'值n')
SET类型的值最多只以是有64个元素构成的组合。取值可以是其中的一个或多个。其它特性,与ENUM类似。
例子
#SET类型  多选
create table t10(
id tinyint(4) not null primary key auto_increment,
sex set('男','女','nanan')
)engine=innodb default charset=utf8;

insert into t10(sex)values('男,女');#显示(男,女)

以下 了解即可:

二进制类型

二进制类型是在数据库中存储二进制数据的数据类型。
类型            取值范围
BINARY(M)       字节数为M,允许长度为0~M的定长二进制字符串
VARBINARY(M)    允许长度为0~M的变长二进制字符串,字节数为值的长度加1
BIT(M)          M位二进制数,M最大值为64
TINYBLOB        可变长二进制数据,最多255个字节
BLOB            可变长二进制数据,最多2e16-1个字节
MEDIUMBLOB      可变长二进制数据,最多2e24-1个字节
LONGBLOB        可变长二进制数据,最多2e32-1个字节

日期与时间类型

数据类型   字节数  取值范围                                 零值
YEAR       1       1901~2155                                0000
DATE       4       1000-01-01~9999-12-31                    0000:00:00
TIME       3       -838:59:59~838:59:59                     00: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~20380119111417            00000000000000

YEAR:
超出范围就会插入0000
使用2位字符串表示,'00'~'69'转换为2000~2069,'70'~'99'转换为1970~1999
使用2位数字表示,00~69转换为2000~2069,70~99转换为1970~1999。
注意两位的数字和两位的字符串是不一样的:0-0000 '0''00'-2000

DATE:
4个字节来表示日期。以YYYY-MM-DD的形式来显示DATE类型的值。
1)'YYYY-MM-DD'或'YYYYMMDD'格式的字符串表示。
2)MySQL中还支持一些不严格的语法格式:'YYYYMMDD' 'YYYY@MM@DD' 'YYYY.MM.DD'
3)'YY-MM-DD'或'YYMMDD'格式的字符串表示。
4)YY取值同YEAR类型中的两位字符串的表示一致。
5)YYYYMMDD或YYMMDD格式的数字表示。YY取值同上。
虽然MySQL支持DATE类型的一些不严格的语法格式。但是,实际运用中,最好还是选择标准形式。日期中使用-做分隔符,时间用:做分隔符。如果有特殊需要也可以使用@、* 等特殊字符做分隔符。
使用CURRENT_DATE和NOW()转换为当前系统日期。

例子
create table date1(
    id int(11) unsigned not null primary key auto_increment,
    create_time TIMESTAMP not null default current_timestamp,#当前时间
    #update_time TIMESTAMP not null default current_timestamp#更新的时间
)
查看某个表的碎片大小:
SHOW TABLE STATUS LIKE '表名';    
// 结果中’Data_free’列的值就是碎片大小
清除表碎片:
optimize table 表名

mysql -u root -p --tee D:/mysql.log(保存所有的指令)
tee d:/wamp/www/mysql.log; 登录后使用命令将操作写入文件
赞(1) 打赏
未经允许不得转载:王明昌博客 » 数据库数据类型
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏