MySQL基本数据类型

目录

  • 存储引擎

  • 创建表的完整语法

  • MySQL基本数据类型

  • 字段的约束条件

 

 

存储引擎

MySQL内部针对数据的存储有很多不同的方式
简单来说就是把这些不同的存储方式叫做不同的存储引擎

 

查看各类存储引擎

show engines;

 

 

主要存储引擎

1.InnoDB
它是MySQL5.5之后的版本默认的存储引擎
功能:支持事务、行锁、外键,数据更安全
"""
补充
事务:保证多个数据的操作要么全部完成要么全部失败
行锁:多一行行数据加锁,同一时间只能有一个人操作
外键:建立表关系

"""
2.MyISAM
MySQL5.5.之前的版本默认的存储引擎
功能:存储数据速度快
但是不支持事务、外键等功能,数据安全性较低
3.memory
数据直接存储在内存,速度快,但断电之后数据立刻丢失
4.blackhole
写入其中的数据都会丢失

 

 

 

存储引擎表文件

创建各类存储引擎表文件

create table t1(id int)engine=InnoDB;
create table t2(id int)engine=MyISAM;
create table t3(id int)engine=memory;
create table t4(id int)engine=blackhole;

 

 

各存储引擎生成的文件

1.InnoDB有两个文件
.frm   表结构
.idb   表数据、索引
2.MyISAM有三个文件
.frm   表结构
.MYD   表数据
.MYI   表索引
3.memory有一个文件
.frm   表结构
4.blackhole有一个文件
.frm   表结构

 

存储数据特性

insert into t1 values(1);
insert into t2 values(1);
insert into t3 values(1);
insert into t4 values(1);

 

 

创建表的完整语法

# 完整语法
create table 表名(
    字段名 字段类型(宽度) 约束条件,
    字段名 字段类型(宽度) 约束条件,
    字段名 字段类型(宽度) 约束条件
);


"""
注意事项:
1.字段名和字段类型必须要有,宽度和约束条件是可选的
2.约束条件可选,并且一个字段可支持多个约束条件
3.最后结尾的字段语句不能有逗号

"""

 

字段类型

整型

tinyint
smallint
int
bigint

# 不同整型类型能够存储的数字范围不同

 

整型之正负号
create table t6(id tinyint);
insert into t6 values(-129),(256);  # -128 127
# 其他类型也是如此 默认都自带正负号

 

 

约束条件之unsigned
create table t7(id tinyint unsigned); # unsigned约束条件 无符号
insert into t7 values(-129)(256);  # 0 255

 

 

浮点型

float
double
decimal

"""不同的浮点型存储小数的范围和精确度不一样"""
float(255,30)  # 总共255位小数位占30位
double(255,30) # 同上
decimal(65,30) # 总共65位小数位占30位

 

精确度
create table t8(id float(255,30));
create table t9(id double(255,30));
create table t10(id decimal(65,30));
insert into t8 values(1.111111111111111111111111111111);
insert into t9 values(1.111111111111111111111111111111);
insert into t10 values(1.111111111111111111111111111111);

# 精确度:float < double < decimal

 

 

字符类型

1.char

  好处:整存整取 速度快
  坏处:浪费存储空间

  2.varchar 

  好处:节省存储空间
  坏处:存取速度较于char慢

 

char(4)
  最多可以存储4个字符 超过了报错 没有超过也按照四个字符存储(默认空格填充)
varchar(4)
  最多可以存储4个字符 超过了报错 没有超过则按照实际有几个字符就存几个

 

 

严格模式

# 查看严格模式
    show variables like '%mode%';
# 修改严格模式
    set global sql_mode = 'strict_trans_tables';
# 只需要退出客户端重新进入即可

 

时间类型

date        年月日
time        时分秒
Datetime    年月日时分秒
Year        年
create table student(
      id int,
      name char(16),
      born_year year,
      birth date,
      study_time time,
      reg_time datetime
);
View Code

 

枚举与集合类型

enum
    多选一
set
    多选多(包含多选一)

 

枚举类型

create table t13(
    id int,
    name varchar(16),
    gender enum('male','female','others')
);


'''插入数据的时候只能够插入提前规定好的''' insert into t13 values(1,'jason',''); # 报错 insert into t13 values(2,'tony','male');

 

 

集合类型

create table t14(
    id int,
    name char(16),
    hobby set('basketball','football','doublecolorball')
);


'''插入数据的时候只能够插入提前规定好的''' insert into t14 values(1,'ben','read'); # 报错 insert into t14 values(2,'kevin','basketball'); # 可选一 insert into t14 values(3,'tony','basketball,football'); # 可选多

 

宽度说明

int(4)  char(4)
# 针对数字类型 宽度并不是用来限制存储长度而是用来表示展示长度

 

约束条件

unsigned  # 无符号
zerofill  # 0填充

# not null  不能为空  使用频率很高
create table t18(
    id int,
    name varchar(16) not null
);

 

 

 

# default  默认值
create table t19(
    id int,
    name varchar(16) default '匿名用户'
);

 

 

# unique  唯一


'''单列唯一''' create table t20( id int, name varchar(16) unique );

 

 

 

'''多列唯一'''
create table t21(
    id int,
    host int,
    port int,
    unique(host,port)
);

 

posted @ 2021-09-05 14:08  陌若安然  阅读(56)  评论(0)    收藏  举报