分类:TINYINT SMALLINT MEDIUMINT INT BIGINThtml
做用:存储年龄,等级,id,各类号码等mysql
tinyint 1字节(-128)sql
int 4字节(通常来说不用设置,由于基本够用)数据库
bigint 8字节安全
类型存储范围:参考图片<http://www.cnblogs.com/linhaifeng/articles/7233411.htmlsession
类型后面的宽度不能改变字段存储的大小限制!!!!!测试
强调:对于整型来讲,数据类型后的宽度并非存储限制,而是显示限制,因此在建立表时,若是字段采用的是整型类型,彻底无需指定显示宽度, 默认的显示宽度,足够显示完整当初存放的数据code
严格模式补充
咱们刚刚在上面设置了char,tinyint,存储数据时超过它们的最大存储长度,发现数据也能正常存储进去,只是mysql帮咱们自动截取了最大长度。但在实际状况下,咱们应该尽可能减小数据库的操做,缓解数据库的压力,让它仅仅只管理数据便可,这样的状况下就须要设置安全模式htm
show variables like "%mode%"; # 查看数据库配置中变量名包含mode的配置参数 # 修改安全模式 set session # 只在当前操做界面有效 set global # 全局有效 set global sql_mode ='STRICT_TRANS_TABLES' # 修改完以后退出当前客户端从新登录便可
字段限制特色(5,3)前一位表示全部的位数,后一位表示小数个数blog
# 存储限制 float(255,30) double(255,30) decimal(255,30) # 精确度验证 create table t9(x float(255,30)); create table t10(x double(255,30)); create table t11(x decimal(65,30)); insert into t9 values(1.111111111111111111111111111111); insert into t10 values(1.111111111111111111111111111111); insert into t11 values(1.111111111111111111111111111111);
最终结果相对数字t9, t10会邮精度缺失, 由此说明decimal的精度会高于double和float,而double的精度会高于float!!!
字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工做以及如何在查询中使用这些类型。
create table t10(name char(4)) # 超出四个字符报错,不够四个字符空格补全 create table t11(name varchar(4)) # 超出四个字符报错,不够四个有几个就存几个 # 验证存储限制 insert into t12 values('hello'); insert into t13 values('hello'); # 验证存储长度 insert into t12 values('a'); #'a ' insert into t13 values('a'); #'a' select * from t12 select * from t13 # 没法查看真正的结果 select char_length(name) from t12 select char_length(name) from t13 # 仍然没法查看到真正的结果 """首先应该确定的是在硬盘上存的绝对是真正的数据,但显示的时候mysql会自动将末尾的空格取掉""" # 若是不想让mysql帮你作自动去除末尾空格的操做,须要再添加一个模式 set global sql_mode="strict_trans_tables,PAD_CHAR_TO_FULL_LENGTH"; # 退出客户端从新登录 select char_length(x) from t12; #4 select char_length(y) from t13; #1 # 针对char类型,mysql在存储时会将数据用空格补全存放到硬盘中。可是会在读出结果的时候自动取掉末尾的空格 """ char与varchar的使用区别 """ name char(5) # 缺点:浪费空间 # 优势:存取速度都快 egon alex lxx jxx txx name varchar(5) # 缺点:存取速度慢 # 优势:节省空间 1bytes+egon 1bytes+alex 1bytes+lxx 1bytes+jxx 1bytes+txx
分类
测试
create table student( id int, name char(16), born_year year, birth date, study_time time, reg_time datetime ); insert into student values(1,'egon','2019','2019-05-09','11:11:00','2019-11-11 11:11:11');
分类
测试
create table user( id int, name char(16), gender enum('male','female','others') ); insert into user values(1,'jason','xxx'); # 报错 insert into user values(2,'egon','female'); # 正确! create table teacher( id int, name char(16), gender enum('male','female','others'), hobby set('read','sleep','sanna','dbj') ); insert into teacher values(1,'egon','male','read,sleep,dbj'); # 集合也能够只存一个