数据库03——类型
一,存储引擎
# 就是存储数据的方式
# 如何查看存储引擎? 都有哪些存储引擎?
show engines;
MyISAM:
mysql5.5版本及之前的版本默认引擎
查询速度比InnoDB快, 安全性低
# 不支持事务
# 表级锁
InnoDB
mysql5.6及之后的版本默认引擎
查询速度比MyISAM慢, 安全性高
# 功能:
1. 支持事务
2. 行级锁
3. 外键
MEMORY => 内存
# 数据是在内存中
# 特点
create table t2 (id int) engine='MyISAM';
create table t3 (id int) engine='InnoDB';
create table t4 (id int) engine='MEMORY';
MyISAM
.frm => 表结构
.MYD => 表数据
.MYI => 索引(目录)优点:查询速度快
InnoDB
.frm => 表结构
.ibd => 表数据和索引
MEMORY
.frm => 表结构
二,数据类型之整形
tinyint smallint int bigint
#他们之间的区别就是存储数据的范围不一样
#验证整形默认是否带符号
create table t6 (id tinyint);
insert into t6 values(-129),(256);
# 结论:所有的整型默认都是带符号的。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pXmeyCy8-1627393848264)(%E6%95%B0%E6%8D%AE%E5%BA%9303%E2%80%94%E2%80%94%E7%B1%BB%E5%9E%8B.assets/image-20210727184925572.png)]
三,数据类型之 浮点型
float double decimal
#float(8,2) 999999.99
float(255,30)
总共255位,小数30位
double(255,30)
总共255位,小数30位
devimal(60,30)
总共位60,小数30位
create table t6(id float(255,30));
create table t7 ( id doble(255,30));
create table t8 (id decimal(60,30));
insert into t6 values(1.1111111111111111111);
insert into t7 values(1.1111111111111111111);
insert into t8 values(1.1111111111111111111);
#精确度不一样
decimal > double> float
设计表注意:
1、 表结构中的数据类型
2、 该表中上线值后可能会产生多少数据量
四,数据类型之字符串
#两种字符串括号中的数字必须写,代表存储字符串的长度
char(4)
存储4位,不够的空格 补习4位 , 超过4位的报错
#优点
查询速度快,整存整取
#缺点
浪费空间
varchar(4)
存储4位,有几位存几位,超过的报错
#优点
节省空间
#缺点
查询速度比char 慢
char(4) varchar(4)
pack(2)=>1 pack(10)=>1
unpack(1)=>2 unpack(1)=>10
1byteskevin1bytesegon1bytesjasonlytom
#验证
create table t10 values(1,'eva');
create into t9 values(1,'eva');
五, 数据类型之日期类型
datetime
date
time
year
######
create table t12(id int, r1_time datetime, r2_time date, r3_time time ,r4_time year);
#####
insert into t12 values(1, '2021-07-27 11:11:11', '2021-07-27', '11:11:11', '2021')
六,数据类型之枚举
#枚举 多选一
create table t13(
id int,
gender enum('male', 'female','lm')
)
insert into t13 values (1, 'egon'); ×
insert into t13 values (1, 'male'); √
七,数据类型之集合类型
#集合
creater table t14(
id int,
hobby set('read', 'music','footabll','lm')
)
#
insert into t14 values(1, 'egon'); ×
insert into t14 values(1, 'read'); √
insert into t14 values(1, 'read, music'); ×
insert into t14 values(1, 'read, egon'); ×
创建表的完整语句
create table 表名 (
字段名 数据类型(长度) 约束条件1 约束条件2 约束条件3,
字段名 数据类型(长度) 约束条件1 约束条件2 约束条件3,
字段名 数据类型(长度) 约束条件1 约束条件2 约束条件3,
字段名 数据类型(长度) 约束条件1 约束条件2 约束条件3
)
# 注意:
1. 表中字段名和数据类型是必填项, 约束条件是可选的
2. 约束条件可以有多个,依次往下写
3. SQL语句的最后一个不能加逗号(,)