MySQL学习笔记(三)数据类型详细介绍

下面的内容是听林海峰老师课的总结,下面就先为大家详细介绍它的数据类型们~

先来了解下对应数据类型的范围吧 

 

一、整形字段 

"""

整形字段首先分为:

TINYINT、SMALLINT、MEDUIMINT、INT、BIGINT

""" 

1 TINYINT型

TINYINT默认情况下是带有符号的

TINYINT超出限制会报错

为大家树立一个案例为大家更好的理解

create table t1(id tinyint);

insert into t1 values(-129),(256);

 很明显超出范围会报错

# 约束条件之unsigned无符号

create table t2(id tinyint unsigned);

insert into t2 values(-1),(256);

依旧超出会报错

2 INT型 

create table t11(id int);

insert into t11 values(-1),(256);

上述int类型也是默认带符号的,可以推断出所有整形类型默认也是带符号的 

"""

特例:只有整形括号内里面的数字不是表示限制位数

id int(8)

        如果数字没有8位,那么默认用空格填充至8位

        如果数字超过8位,那么有几位写几位(但是还是要遵循最大范围)

"""

create table t11(id int(8) unsigned zerofill);

# 用0填充至8位

insert into t11 values(12);

 

 

# 总结:

针对整形字段,括号内无需指定宽度,因为它默认的宽度已经足够显示所有的数据了

二、补充知识点:严格模型

# 查看严格模式

show variables like "%mode";

模糊匹配/查询

        关键字 like

                %:匹配任意多个字符

                _:匹配任意单个字符

# 修改严格模型

set session   只在当前窗口有效

set global      全局有效

set global sql_mode='STRICT_TRANS_TABLES';

# 修改之后,重新进入服务端即可

三、浮点型字段

# 分类:

FLOAT、DOUBLE、DECIMAL

# 存储限制

float(255,30)       #总共255位 小数部分占30位

double(255,30)   #总共255位 小数部分占30位

decimal(65,30)   #总共65位 小数部分占30位

# 精确度验证

create table t12(id float(255,30));

create table t13(id double(255,30) );

create table t14(id decimal(65,30));

insert into t12 values(1.111111111111111111111111);

insert into t13 values(1.111111111111111111111111);

insert into t14 values(1.111111111111111111111111);

# 结果如下所示

 # 可知精确度:float<double<decimal

四、字符类型

# 分类:

char

        定长

        char(4)  数据超过4个字符直接报错,不够4个字符空格补全

varchar

        变长

         varchar(4)  数据超过4个字符直接报错,不够的话,有几个字符就存几个字符

# 介绍一个方法 char_length统计字符长度

create table t3(name char(4));

create table t4(name varchar(4));

insert into t3 values('a');

insert into t4 values('a');

select char_length(name) from t3;

select char_length(name) from t4;

"""

首先可以肯定的是char硬盘上存的绝对是真正的数据,是带有空格的

但是在显示的时候MYSQL会自动将空格删除,所以上面的char_length结果都为1

"""

 # 再次修改sql_mode让MYSQL不要做自动删除

set global sql_mode='STRICT_TRANS_TABLES,PAD_CHAR_TO_FULL_LENGTH';

# 修改完后一定要exit退出重新进入查询

 """

char与varchar对比:

char

        缺点:浪费空间

        优点:存取都很简单,直接按照固定的字符存取速度即可

varchar

        优点:节省空间

        缺点:存取较为麻烦,存的时候需要制作报头

                   取的时候也需要先读取报头,之后才能读取到真实数据

"""

五、日期类型

# 分类

data:年 月 日 2020-5-4

datatime: 年 月 日 时 分 秒 2020-5-4-11:11:11

time:时 分 秒:11:11:11

Year:年:2020

create table t6(

id int,

born_year year,

birth_day data,

study_time time,

reg_time datatime

) ;

insert into t6(1,'2001','2001-4-5','12:12:12','2001-4-5 12:12:12');

 

六、枚举与集合

# 分类

枚举:enum 多选一

集合:set 多选多

# 具体使用

create table user(

id int,

name char(4),

gender enum('male','female'),

hobby set('read','run','swim','sleep')

) ;

insert into user values(1,'json','male','read,run');

# 枚举类型 后期在存数据的时候只能从枚举里面选一个已有的数据存储

# 集合可以只写一个,但是不能写没有列举的数据

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>