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 # 其他类型也是如此 默认都自带正负号

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 );

枚举与集合类型
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) );


浙公网安备 33010602011771号