1、#整型数据类型

tinyint 1个字节 有符号(-128 ~ 127) 无符号(unsigned) (0~255)   小整型值
int     4个字节 有符号(-21亿 ~ 21亿 左右) 无符号(0~42亿左右) 大整型值

    create table t1(id  int , sex  tinyint);
    insert into t1 values(4000000000,127); error
    insert into t1 values(2000000000,127);
    加上nusigned 表示有符号的数
    create table t1(id nusigned int , sex nusigned tinyint);

 

 2、#浮点型数据

float(255,30)   单精度  255总长度 30小数位  ,单精度就是保留小数位 少 5位
double(255,30)  双精度  保留小数位多,16位 
decimal(65,30)  金钱类型,使用字符串的形式保存小数

    """存在四舍五入"""
    create table t2(f1 float(5,2) , f2 double(5,2) , f3 decimal(5,2)); 说明:代码意思总长度5(包含了小数位在内) 小数位2 

  insert into t2 values(1.666666666666666666666666666,1.666666666666666666666666666,1.666666666666666666666666666);
    存进去的值,回查到 都是1.67        

    """float 小数位默认保留5位,double小数位默认保留16位,decimal 默认保留整数位,存在四舍五入"""
    create table t3(f1 float , f2 double , f3 decimal);
    insert into t3 values(1.666666666666666666666666666,1.666666666666666666666666666,1.666666666666666666666666666);
    存进去的值,回查到 1.66667  1.6666666666666666   2

    # float(5,2) 5=>代表总长度(整数+小数)  2=> 小数长度,保留2位  总长度和小数位,要么都不写,要么都要写。
    create table t6(f1 float(5,2));
    insert into t4 values(12.34567);
    insert into t5 values(1234.34567);

3、# 字符串 char(字符长度)  varchar(字符串) text

char(11)       定长:固定开辟11个字符长度的空间(手机号,身份证号), 开辟空间的速度上说: char更快
varchar(11)    变长:最多创建字符长度为11的空间(小广告,评论) 开辟空间的速度上说: 相较于char稍慢,用多少开多少,不超过限定值。
text           文本类型,针对于文章,小说

    create table t7(c char(11) , v varchar(11) , t text); 说明,这里是字符的长度
    insert into t7 values("11111","盛占涛祖玛套大保健你你","倚天屠龙宝刀,掉率0.00001");
    select concat(c,":",v,":",t) from t7;  说明,参训出来的结果进行拼接返回。

# concat 拼接
select concat(参数1,参数2,参数3 ... ) 把所有的参数拼接在一起

 

 

 

 

4、# 枚举 和 集合

    enum 枚举 : 从列出来的数据当中选一个(性别)
    set  集合 : 从列出来的数据中选多个(自动去重)
    
    create table t8(
    id int , 
    name char(10), 
    money float(6,2) , 
    sex enum("man","woman"),
    hobby set("beat_doudou","smoke","drink","tang_head")    
    )
    # 正常写法
    insert into t8(id,name,money,sex,hobby) values(1,"张三",9.66666,"woman","smoke,tang_head");
    
    # 自动去重
    insert into t8(id,name,money,sex,hobby) values(1,"张三",9.66666,"woman","beat_doudou,beat_doudou,beat_doudou,beat_doudou");
    打豆豆会被自动去重,只会存1个打豆豆

 

5、#时间数据类型

date  YYYY-MM-DD  年月日 (结婚纪念日,节假日)
time  HH:MM:SS    时分秒 (体育竞赛)
year  YYYY        年份值 (历史,1882年娃哈哈矿泉水,红酒)
datetime  YYYY-MM-DD  HH:MM:SS 年月日 时分秒 (登录时间,下单时间)   

举例子

    create table t5(d date , t time , y year , dt datetime);
    insert into t5 values("2020-06-17","09:15:30","2020","2020-06-17 09:15:30");
    可以全部写now,自动截取
    insert into t5 values(now(),now(),now(),now());    

时间戳介绍

timestamp YYYYMMDDHHMMSS (时间戳) 自动更新时间(不需要手动写入,修改数据时候,自动更新,记录最后一次修改的时间)该类型不准为空,程序自己会往里面加时间
    create table t6(dt datetime , ts timestamp);
    insert into t6 values(null,null);系统自己插入自己的时间
    insert into t6 values(20200617092430,20200617092430);
    insert into t6 values(20990617092430,20990617092430);  error  timestamp 不能超过2038年某一天

 

约束 : 对编辑的数据进行类型限制,不满足约束条件的直接报错

    unsigned      无符号
    not null      不为空
    default       设置默认值
    unique         唯一约束,数据唯一不能重复
    primary key    主键,标记数据的唯一特征(唯一且不为空的数据)
    auto_increment 自增加一(一般配合主键使用 或者 unique进行自增)
    zerofill       0填充(配合int类型使用) , int(6) , 位数不够位,拿0来补充
    foreign key    外键,把多张表通过一个关联字段,联合在一起
# unsigned 无符号
    create table t7(id int unsigned);
    insert into t7 values(66);
    insert into t7 values(-66); error
    
# not null      不为空  
    create table t8(id int not null , name varchar(255));
    insert into t8 values(1,"小琳琳");
    insert into t8 values(null,"小琳琳");  error    id 不传
    insert into t8(name) values("小琳琳"); error 指定一个name参数,缺少id
    
# default       设置默认值
    create table t9(id int not null , name varchar(255) default "王振");
    insert into t9 values(1,null); null也是一个值
    insert into t9(id) values(1);  只传id 不传值,就会默认成 "王振"
# unique 唯一约束,数据唯一不能重复

索引

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

在MySQL中,布尔类型等价于TINYINT

 int整形数据12345

char 固定数据类型指定 1个2个 200个

varchar(200) 变成数据类型 有多少占用多少,推荐使用这个

datetime 时间数据类型

not unll 不能为空