mysql数据类型

# 设置字符集
# 数据库
create database if not exists dbtest character set 'utf8';
# 表
create table temp(
 id int
)character set 'utf8';
# 字段
create table temp2(
 id int,
 address varchar(15) character set 'gbk'
);
# 整数类型
tinyint,smallint,mediumint,int,bigint

在这里插入图片描述
在这里插入图片描述

# 浮点数/定点数
浮点数的unsigned范围缩小一半
float(5,2)小数部分有2,整数部分有3(-999.99 ~ 999.99)
float(5,2) unsigned只能表示0-999.99
不指定时,默认按照实际的精度(实际硬件和OS决定)
浮点数存在误差

定点数decimal内部是用字符串进行存储的
decimal(M,D)占用字节数M+2,最大取值范围与double一样
decimal(5,2)也是表示(-999.99 ~ 999.99)
不指定M和D时,默认decimal(10,0)
# 日期类型
year: yyyy #范围(1901,2155)
time: HH:mm:ss
date: yyyy-MM-dd #(1000-01-01,9999-12-03)

datetimetimestamp都是yyyy-MM-dd HH:mm:ss
datetime8字节,(1000-01-01 ~ 9999-12-31),范围更大
timestamp4字节,(1970-01-01 ~ 2038-01-19)
timestamp底层存储的是距1970的毫秒值
timestamp会根据所在时区的不同展示不同的对应时间,datetime不会
# 字符串
char(M) # 固定M个字符, 不指定默认是1
varchar(M) # 必须指定M,实际占用存储空间为字符串占用字节数 + 1
# 长段文本
tinytext,text,mediumtext,longtext
# 二进制字符串
# 固定M个字节,不指定默认是1,如果字段值不足M个字节,将在右边填充'\0'补齐
binary(M)
# 必须指定M(可变长度)
varbinary(M)
# binary也可存中文,一个中文占3字节
create table test_binary(
f1 binary,    # 能装1个字节
f2 binary(3), # 能装3个字节
f3 varbinary(10) # 最多10个字节
);
insert into test_binary values('a','彩','fwf');
# 二进制大对象
tinyblob,blob(64KB),mediumblob(16MB),longblob(4GB)
# 建议
任何字段如果为非负数,必须是unsigned
小数类型使用decimal,禁用floatdouble
varchar类型是可变长字符串,不预先分配存储空间,长度不要超过5000.
大于5000选择text类型,独立出来一张表,用主键对应,避免影响其他字段索引效率.
<!-- decimal类型比较大小 -->
<!-- priceLeft和priceRight都是java中的BigDecimal类型 -->
<!-- BigDecimal类型可以直接作为参数, 接收前端的数据, 也可以直接赋值给sql中的decimal型数据 -->
<if test="priceLeft != null and priceRight != null">
    and price between #{priceLeft} and #{priceRight}
</if>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值