mysql 常用数据类型
整型
(1) tinyint
一个字节 有符号(-128 ~ 127 ) 无符号(unsigned) ( 0 ~ 255 ) 小整数值
(2) int
四个字节 有符号(-21亿 ~ 21亿 左右 ) 无符号(unsigned) ( 0 ~ 42亿) 大整数值
create table t1(id int , age tinyint );
insert into t1 values(2200000000,1) error
insert into t1 values(2100000000,1)
insert into t1 values(2100000000,128) error
insert into t1 values(2100000000,127)
浮点数
(1) float ( 255 , 30 ) !!! 单精度
(2) double ( 255 , 30 ) !!! 双精度
(3) decimal( 65 , 30 ) 金钱类型,使用字符串对的形式保留小数
"""默认存在四舍五入"""
create table t2(f1 float(5,2) , f2 double(5,2) , f3 decimal(5,2));
insert into t2 values(1.77777777777777777777777777,1.77777777777777777777777777,1.77777777777777777777777777);
"""float 默认小数保留5位,double小数位截取16位,decimal(10,0) 默认保留整数,存在四舍五入"""
create table t3(f1 float,f2 double ,f3 decimal);
insert into t3 values(1.77777777777777777777777777,1.77777777777777777777777777,1.77777777777777777777777777);
create table t4(f1 float(5,2));
insert into t4 values(12.34567889) # 12.35
insert into t4 values(123.34567889) # 123.35
insert into t4 values(1234.34567889) error
字符串
(1) char 字符长度 255 个
(2) varchar 字节长度 21845 个 (总字节数不超过 65535 )
(3) text 文本类型,论文,小说等
char(10) 定长: 固定开辟11个字符长度的空间 开辟速度较快
varchar(10) 变长: 最多开辟11个字符长度的空间 开辟速度较慢
create table t5(c char(11), v varchar(11) , t text);
insert into t5 values('1111',"酸辣粉加上队列副经理开","sdfsdf234");
insert into t5 values('1111',"酸辣粉加上队列副经理2开","sdfsdf234"); error
# concat 拼接任意长度的字符串
elect concat(c,":",v,":",t) from t5;
枚举 和 集合
(1)枚举
enum 枚举: 从列出来的数据当中选一个(如:性别)
(2) 集合
set 集合: 从列表中选多个(自动去重) (如: 爱好)
create table t6(
id int,
name varchar(10),
money float(6,3),
sex enum("男性","女性","禽兽","人妖","雌雄同体","半兽人","阿凡达"),
hobby set("吃肉","抽烟","喝酒","喝假酒")
);
# 正常
insert into t6(id , name ,money , sex , hobby) values(1,"克拉伊买买提",56.7891,"半兽人","喝假酒,抽烟");
# 自动去重
insert into t6(id , name ,money , sex , hobby) values(1,"克拉伊买买提",56.7891,"半兽人","喝假酒,抽烟,抽烟,抽烟,抽烟");
时间日期
(1) 年月日
date YYYY-MM-DD 年月日 (纪念日,节假日)
(2) 时分秒
time HH:MM:SS 时分秒 (体育赛事,新闻联播)
(3) 年份值
year YYYY 年份值 (历史)
(4) 年月日 时分秒
datetime YYYY-MM-DD HH:MM:SS 年月日 时分秒(用户登录时间)
create table t1(d date , t time , y year , dt datetime);
insert into t1 values("2020-08-25","08:25:30","2020","2020-08-25 08:25:30")
insert into t1 values(now(),now(),now(),now())
timestamp YYYYMMDDHHMMSS(时间戳) 自动更新时间(不需要手动,系统自动更新时间) 数据上一次的修改时间
create table t2(dt datetime , ts timestamp);
insert into t2 values(null,null);
insert into t2 values(20200825082530,20200825082530);
insert into t2 values(20200825082530,20380825082530); error 不能超过2038年的某一年