MySQL系列(二)之基本数据类型

整型

  • 分类
    TINYINT SMALLINT MEDUIMINT INT BIGINT

  • 作用
    存储年龄、等级、id、号码等等

""""
tinyint  1个字节  有符号范围(-128~127)         无符号(0~255) unsigned 
int      4个字节  有符号范围(-21亿~21亿左右)  无符号(0~42亿)         
""""
# 整型默认情况下都是带有符号的
create table t1(id int , age tinyint);
insert into t1(id,sex) values(4000000000,127)  # error: out of range
insert into t1(id,sex) values(13,128)  # error: out of range
insert into t1(id,sex) values(13,127);

# 约束条件之unsigned 无符号
create table t2(id tinyint unsigned);

浮点型

  • 分类
    FLOAT、DOUBLE、DECIMAL

  • 作用
    身高、体重、薪资

# 存储限制
float(255,30)  # 总共255位 小数部分占30位
double(255,30)  # 总共255位 小数部分占30位
decimal(65,30)  # 总共65位 小数部分占30位

# 精确度验证
create table t3(id float(255,30));
create table t4(id double(255,30));
create table t5(id decimal(65,30));

insert into t3 values(1.111111111111111111111111111111);
insert into t4 values(1.111111111111111111111111111111);
insert into t5 values(1.111111111111111111111111111111);

float < double < decimal
# 要结合实际应用场景 三者都能使用

字符类型

  • 分类
    CHAR VARCHAR
char
	定长
	char(4)	 数据超过四个字符直接报错, 不够四个字符空格补全
varchar
	变长
	varchar(4)  数据超过四个字符直接报错, 不够有几个存几个

create table t6(name char(4));
create table t7(name varchar(4));

insert into t6 values('a');
insert into t7 values('a');

# 介绍一个小方法 char_length统计字段长度
select char_length(name) from t6;
select char_length(name) from t7;

首先可以肯定的是char硬盘上存的绝对是真正的数据, 带有空格的
但是在显示的时候MySQL会自动将多余的空格剔除

char与varchar对比

char
	缺点:浪费空间
	优点:存取都很简单
		直接按照固定的字符存取数据即可
		steven sammi jack
		存按照五个字符存 取也直接按照五个字符取
		
varchar
	优点:节省空间
	缺点:存取较为麻烦
		1bytes+steven 1bytes+sammi 1bytes+jack
		存的时候需要制作报头
		取的时候也需要先读取报头 之后才能读取真实数据
		
以前基本上都是用的char, 现在用varchar的也挺多

时间类型

  • 分类
    date: 年月日 2020-5-4
    datetime: 年月日时分秒 2020-5-4 11:11:11
    time: 时分秒11:11:11
    Year: 2020
create table student(
	id int,
    name varchar(16),
    born_year year,
    birth date,
    study_time time,
    reg_time datetime
);
insert into student values(1,'steven','1880','1880-11-11','11:11:11','2020-11-11 11:11:11');

枚举与集合类型

  • 分类
    枚举(enum) : 从列出来的数据当中选一个 (性别)
    集合(set) : 从列出来的数据当中选多个 (爱好)
create table user(
	id int,
    name char(16),
    gender enum('male','female','others')
);

# 枚举字段 后期在存数据的时候只能从枚举里面选择一个存储 
insert into user values(1,'steven','male');  正常
insert into user values(2,'jack','xxxxooo');  报错

create table teacher(
	id int,
    name char(16),
    gender enum('male','female','others'),
    hobby set('read','DBJ','hecha')
);

# 集合可以只写一个  但是不能写没有列举的
insert into teacher values(1,'steven','male','read');  正常
insert into teacher values(2,'jack','female','DBJ,hecha');  正常
insert into teacher values(3,'peter','others','生蚝'); 报错
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值