储存引擎
储存数据的方式不太一样 #查看所有的储存引擎 show engines; 需要知道的存储引擎有四个 myisam MySQL5.5及之前版本默认的存储引擎 存取数据的速度很快但是缺乏安全性功能较少 innodbmysql5.6之后的版本默认的存储引擎 存取速度没有myisam快但是功能更多 安全性更高 事物 行锁 外键 blackhole 往里面写入任何数据都会直接消失 memory 内存存储数据 #存储数据的特点 create table t1(id int)engine=innodb; create table t2(id int)engine=myisam; create table t3(id int)engine=blackhole; create table t4(id int)engine=Memory;;
文件个数不一致
innodb .frm 表结构 .ibd 表的数据和索引
Myicam
.frm 表结构 .myd 表数据 .myt 索引(类似于书的目录)
blackhole
.frm 表结构
insert into t1 values(1); insert into t2 values(1); insert into t3 values(1); insert into t4 values(1);
'''乐观锁与悲观锁'''
MySQL基本数据类型
整型 tinyint smallint int bigint
1,不同的类型能够存储的数字范围不一样
2,验证是是否自带符号
create table t5(id tinyint);
insert into t5 values(-129),(256);
#结论;所有的整形都是自带符号
'''
如果不想让整型有符号
create table t6(id tinyint unsigned);
insert into t6 values(-129),(256);
'''
2浮点型
float(255.30)
总共225位,小数占30位
double(255,30)
总共255位小数占30位
decimal(65,30)
总共65位,30位小数 create table t7(id float(255,30)); create table t8(id double(255.30)); create table t9(id decimal(65,30)); insert into t7 values(1.11111111111); insert into t9 values(1.1111111111111); ''' 精确度不一样 floa<double<decimal 在实际开发中 很多时候看似需要用数字储存的数据其实我们可能都用的是字符串储存 '''
3.字符类型
char(4) 最大存储4个字符 超过了直接报错 不超过空格填充到四位 varchar(4) 最大存储4个字符 超出了直接报错 不超过的有几位存几位 create table t10(id int,name char(4)); create table t11(id,name varchar); insert into t10 values(1,'jason'); insert into t11 values(1,'jason'); #由于我们修改了配置并且没有指定qsl_mode ''' 1.拷贝sql_mode到了自己的配置文件 2.修改 '''
4.日期类型
datatime 年月日时分秒 time 时分秒 date 年月日 year 年 create table t13( id int, name varchar(32), reg_time datatime, study_time time, birth date; r_time year ); insert into t13 values(1,'jason','2000-11-11 11:11:11','11:11:11','2000-01-21','1995');
5,枚举与集合
枚举 多选一 create table t14( id int, name char(16), gender enum('male','female','others') ); 集合 多选多(包含多选一) create table t15( id int, name char(32), hobby ser('read','study','music', 'tea') );
严格模式
查看sql_mode whow variables like '%mose%'; 修改 set slobal sql_mode='strict_trans_tables'; 退出客户端重新进入即可 验证是否自动填充 set global sql_mode='strict_trbles,pad_char_to_full_length';
字符类型对比
char(4) 优点:整存整取速度快 缺点:浪费硬盘空间 varchar(4) 优点:节省硬盘空间 缺点:速度没有char快 char(5)varvhar(5) jasonkevintony egon jack tom lbytes+jasonlbytes+kevinlbytes+tonylbytes+egonlbytes+jacklbytes+tom #到底用char还是varchar? 各有优缺点 具体结合实际情况 ''' 针对整型字段 括号内的数字不是用来限制存储长度二十用来控制展示长度 ps:如果不理解 直接记结论 定义整型字段无需自己写括号和数字 int tinyint create table t12(id int(4)zerofill); insert into t12 values(1),(1111111); '''
创建表的完整语法
create table 表名( 字段名1 字段类型(宽度)约束条件, 字段名2 字段类型(宽度)约束条件, 字段名3 字段类型(宽度)约束条件 ) ''' 1.字段名和字段类型是必须的 宽度和约束条件是可选的 2.约束条件可以有多个 字段名1 字段类型(宽度约束条件1 约束条件2 约束条件3 3.最后一个字段结尾不能加逗号) '''