1. 数字:
整型:tinyinit int bigint
这里面的tinyinit int bigint,分别指不同的数字宽度,依次从最小到最大
还有int(5)后面括号里的数字,对于存是没有任何差别,而对于取,如果存的数字没有5个宽,
那么前面会加上0以凑齐5个,如:输入123,则输出为00123.但是一般不显示出来
这时候加上zerofill 的话就可以显示出来
create table n3(x int(3) zerofill)
只要数字不足三位,那么就会前面加上0.
小数: float :在位数比较短的情况下不精准 double :在位数比较长的情况下不精准 0.000001230123123123 存成:0.000001230000 decimal:(如果用小数,则用推荐使用decimal) 精准 内部原理是以字符串形式去存
其中decimal,还有小数其他形式是以decimal(10,5),表示总共10位数,小数点后面只能跟5位,超过的会以四舍五入运算.
并且前面不能数字不能超过5位,超过5位就报错.如果小数点不足,那么就会用0加到后面凑齐5位.
2. 字符:
char(10)
存取速度快,占用空间大,简单粗暴.
char(10)==>char(name)==>char(name000000),当位数不够则用0补.
存也存10位,取也是取10位,所以速度快.
varchar(10)
存取速度慢,空间小,省空间.精准
varchar在传给别人数据之前,为了精准的取到,会在前面增加一个报头,后期取用的时候,会先取报头,运算过后,在取相应的数量的信息,就像socket的报头一样.
char_length 查看字符的长度,length查看字节的长度,也就是bytes类型..
select char_length(x) from name..
bit类型:
也就是bytes类型,查看byte类型长度,要用到函数,bin()
select bin(x) from n3.
select hex(x) from n3.
DATE TIME DATETIME TIMESTAMP YEAR
作用:存储用户注册时间,文章发布时间,员工入职时间,出生时间,过期时间等
出生时间:显示-年-月-日-时分秒
datetime
年:
year
时间:
time
年月日
date
格式:insert into n3 values(出生时间 datetime,年 year, 时间 time, 年月日 date);
如果你要显示的现在时间那么:可以用now()
如果要手动添加:如果你有特殊符号的话(2017-09-10)那么就要添加‘‘(引号)
格式:insert into n3 values(出生时间 now(),年 now(), 时间 now(), 年月日 now());
就是显示现在时间
5:枚举类型和集合类型
枚举--enum:
enum: create table n1(name enum(‘sdf‘,‘fd‘)); insert into n1 values(‘sdf‘); 枚举类型是指:在一个列表里选择其中的一个元素,当做自己的值. 如果要改变枚举类型,那么你就要删除你用枚举类型创造的值. 1)truncate n1 删除所有枚举创出来的值 2)alter ........... 改变枚举类型
集合-set类型
集合set: 集合是指在一个元组里面取一个或多个值. create table n1 (name set(‘12‘,‘123‘,‘456‘); insert into n1 values(‘12,123‘); 如果要改变改set类型,也要和enum类型一样,把有集合元素内容的东西都删除调,才能改 1)truncate n1; 2)alter ,...... 注意: 集合里面,如果你要取里面的2个元素,那么你不能写成(‘S‘,‘b‘), 要写成(‘S,b‘) 也就是一个冒号包括2个元素,里面的元素用逗号分开.
6:constraint host_port unique(host,port) 整体意思:约束host_port是唯一的,也就是后面括号里的内容可以
其中一个相同,但是不能2个相等.
create table department3( id int, name varchar(20), comment varchar(100), constraint pk_name primary key(id); 这里的pk_name只是一个摆设,没什么用,最后一句话的意思就是把id设成了主键,
7:auto_increment 的用法
create table t1(id int primary key auto_increment, name char(2), age int)auto_increment=3; 表示默认的初始自增值数值为3,如果不指定id数值,那么默认会从3开始递增. Ps:这是从开始就设定了 2) create table t1(id int primary key auto_increment, name char(2), age int) 如果程序已经开始运行,现在想修改自增值的话,就在后面修改 alter table n1 auto_increment=3; 从现在开始就是从3开始增长.
8;foreign key:被关联的表里面的元素,必须是主键,也就是唯一的.
references t1(id) 以t1表的id为参考
on delete cascade 把delete串联
on update cascade 把update串联.
原文:http://www.cnblogs.com/52forjie/p/7487455.html