mysql数据类型
1.整型(整数类型)
create table t2(id int(5) unsigned zerofill);
注意:
①int后面的5表示的是显示宽度(就是你select * from t2;时看到的数字最大长度为5),而不是数据库存储时的宽度,一般在创建表格时整形后都不写数字就写int就完事了.
②unsigned表示这个字段为无符号整数对照下面的表,无符号与有符号数字范围不同,不写unsigned就是默认有符号整数.
③zerofill就是你显示时,如果宽度比你规范的5要短,数字前面就用0来填充,保证位数够5位
④当你输入的值超过该字段范围时(有符号或者无符号的数字范围),他会以最大值(输入的值比范围大)或者最小值(输入的值比范围小)来代替你输入的数字来存储,并且,此时你规定的显示宽度失效.
⑤当你写int时,此时是有符号,默认显示宽度是11,即int(11),写成int unsigned时是无符号,此时默认显示宽度是10,根据下图对照有无符号时最大数字长度.
⑥除整形以外所有宽度都是数据库的存储宽度
⑦整型包括tinyint,smallint,mediumint,int,inteager,bigint
2.浮点型
注意:
①浮点型包括float,double,decimal
float:
create table t2(id float(M,D) unsigned zerofill);
M是浮点数总宽度(除小数点以外,数字总个数),M最大值为255
D是小数点后数字个数,D最大值为30
如果D最长了,那么整数部分最长为225个数字
double同float
decimal:
M最大为65,
D最大为30,
小数精度:decimal>double(15位小数左右)>float(7位小数左右)
t8:float
t9:double
t10:decimal
decimal底层是用字符串来存储,所以精度高
3.日期类型
year,date,time,datetime,timestamp
datetime与timestamp区别:
①范围不同:datetime是1001-9999,timestamp是1970-2038
②大小不同:datetime占8个字节,timestamp占4个字节
4.字符类型:
char:定长(固定长度存储)存取速度快,但是占地方,用的较多,现在硬盘大小已经不是问题了.
varchar:变长(你来多长,我存多长,但是要1byte字节标记后面多长)存取速度慢,但是省地方
注意:
①char(5),宽度5指的是字符的个数
②select char_length(name) from t4 ; 查询某个字段中内容的长度,但是如果在该字段后面有空格时,他也不会算到长度里面去,如果你写的时候是"任务 "后面的空格在计算时不会算上,如果你想把它长度算上,就输入:
SET sql_mode="PAD_CHAR_TO_FULL_LENGTH";即可
③当你使用where做筛选时,例如where name="任务",mysql会自动去掉后面的所有空格,再比较,而" 任务"前面有空格或者"任 务"中间有空格都不会被去掉,从而造成筛选查不到.
④如果你输入select name from t13 where name like "李杰";时,字符串后面的空格数量一定要和你输入数据库时的数量一致,否则查不到
⑤在一张表中,不要把char和varchar混用
5.枚举类型:
enum:多个选一个
set:多个选一个或者多个
create table consumer(
id int,
name char(16),
sex enum("male","female","other"),
level enum("vip1","vip2","vip3"),
hobbies set("play","music","read","run")
);
insert into consumer values
(1,"egon","male","vip2","music,read"); 因为hobbies是多选,这里可以选music和read两个
insert into consumer values
(1,"egon","xxxxx","vip2","music,read"); 这里xxx是没有的会报错
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341