MySQL数据类型
整形
# 几种整形之间的唯一区别就是存储的范围不同
tinyint
存储空间:1字节
取值范围:-128~127/0~255
# 为什么是这个数:一个汉字是2个字节,一个字节是8bit,2的8次方是256,所以有符号的是0~255,无符号的砍半变成-128~127,以下同样如此
smallint
存储空间:2字节
取值范围:-32768~32767/0~8388607
int
存储空间:4字节
取值范围:-2147483648~2147483647/0~4294967295
bigint
存储空间:8字节
取值范围:-9223372036854775808~9223372036854775807/0~18446744073709551615
整形只存价格数量类的就是数字的,否则一律使用字符串
# 验证整形默认是否带符号
create table t1(id tinyint);
insert into t1 values(-1);
# 结论:所有的整形默认都是带符号的
浮点型
float
float(8,2) # 最大999999.99,指整数8位,小数占2位,算一下就是小数前是6位
float(255,30) # 总共255位,小数30位
float精确到小数点后第7位
double
double(255,30) # 总共255位,小数30位
double精确到小数点后第15位
decimal
decimal(64,30) # 总共64位,小数30位
decimal精确到小数点后第26位
设计表时注意:
1.表结构中的数据类型
2.该表上限后可能会产生多少数据量
字符串
char(4)
# 存储4位,不够的用空格补齐,严格模式下超过就报错
# 在取出时看不到空格,原因是存储进内存时补了空格,但是取出时自动去除了空格
优点:查询速度快
缺点:浪费空间
特点:整存整取,存4个取4个
# 在内存中数据存放是连着的,靠内存地址来区分
varchar(4)
# 存储4位,有几位存几位,严格模式下超过就报错
优点:节省空间
缺点:查询速度慢
特点:在数据前加报头,保证取的数据正确
# 两种括号中的数字必须写,代表存储字符串的长度
日期类型
datetime # 年月日时分秒
date # 年月日
time # 时分秒
year # 年
create table t1(id int,r1_time datetime,r2_time date,r3_time time,r4_time year);
insert into t1 values(1,'2019-5-18 11:11:11','2019-5-18','11:11:11','2019')
枚举
枚举就是多选一,其他的不准写,写了就报错
枚举关键字:enum
create table t1(
id int,
gender enum('male','female','other')
)
#
insert into t1 values(1,'male')
集合
集合就是类似枚举,是多选多,可以放入好几个集合内写好的,逗号隔开
集合关键字set
create table t1(
id int,
hobby set('read','music','football','pc')
)
#
insert into t1(1,'read,music')
创建表的完整语句
create table 表名(
字段名 数据类型(长度) 约束条件1 约束条件2 约束条件3,
字段名 数据类型(长度) 约束条件1 约束条件2 约束条件3,
字段名 数据类型(长度) 约束条件1 约束条件2 约束条件3
)
注意:
1.表中字段名和数据类型是必填项,约束条件是可选的
2.约束条件可以有多个,依次往下写
3.SQL语句的最后一个不能加逗号