一、存储引擎

存储引擎就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方
法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和
操作此表的类型)

show engines;		# 查看所有的存储引擎
engine=InnoDB;   #创建表时写在后面,不写则默认值
#需要知道的四种存储引擎
MyISAM:
    MySQL5.5及之前版本默认的存储引擎
    存取数据的速度都非常快 但是功能较少安全性较低
InnoDB:
    MySQL5.6及之后版本默认的存储引擎
    存取数据速度没有MyISAM快 但是功能更多 安全性更高
    事务 行锁 外键
BlackHole:
    往里面写入的任何数据都会直接消失
Memory:
    内存存储数据(临时的)
    
#使用时文件个数不一致
InnoDB
	.frm	表结构
    .ibd	表数据和索引(类似于书的目录)
MyISAM
	.frm	表结构
    .MYD	表数据
    .MYI	索引(类似于书的目录)
BlackHole
	.frm	表结构
Memory
	.frm	表结构
	

二、MySQL 基本数据类型

2.1数值类型

2.1.1 整型

类型 大小 范围(有符号) 范围(无符号) 用途
TINYINT 1 byte (-128,127) (0,255) 小整数值
SMALLINT 2 bytes (-32 768,32 767) (0,65 535) 大整数值
MEDIUMINT 3 bytes (-8 388 608,8 388 607) (0,16 777 215) 大整数值
INT或INTEGER 4 bytes (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
BIGINT 8 bytes (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
 """
    如果不想让整型有符号 加 unsigned
    
    	create table t6(id tinyint unsigned);
 
针对整型字段 括号里面的数字不是用来限制存储长度而是用来控制展示长度
ps:如果不理解 直接记结论
	定义整型字段无需自己写括号和数字
	int
	tinyint
	
	create table t12(id int(4) zerofill);
	insert into t12 values(1),(11111111);
"""

2.1.2 浮点型

类型 大小 范围(有符号) 范围(无符号) 用途
FLOAT 4 bytes (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度 浮点数值
DOUBLE 8 bytes (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度 浮点数值
DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 小数值
"""
	精确度不一样
		float < double < decimal
		
	在实际开发中 很多时候看似需要用数字存储的数据
	其实我们可能都是使用的字符串存储,如:手机号
"""

2.2 日期类型

类型 大小 ( bytes) 范围 格式 用途
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 时间值或持续时间
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 4 1970-01-01 00:00:00/2038结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 YYYYMMDD HHMMSS 混合日期和时间值,时间戳

2.3 字符串类型

类型 大小 用途
CHAR 0-255 bytes 定长字符串
VARCHAR 0-65535 bytes 变长字符串
char(4):最大存储四个字符 超出了直接报错 不超过空格填充至四位
    优点:整存整取 速度快
    缺点:浪费硬盘空间
varchar(4):最大存储四个字符 超出了直接报错 不超过有几位存几位
    优点:节省硬盘空间
     缺点:速度没有char快
	create table t10(id int,name char(4));
    create table t11(id int,name varchar(4));
    insert into t10 values(1,'lzlnb');
    insert into t11 values(1,'lzlnb');
    
    # 具体还得查看配置的sql_mode  严格模式
    
字符类型对比

    

2.4 枚举与集合

枚举:enum		多选一
    	create table t14(
        	id int,
            name char(16),
            gender enum('male','female','others')
        );
    
集合:set		多选多(多选一)
    	create table t15(
        	id int,
            name char(32),
            hobby set('read','study','music','tea')
        );

三、严格模式

# 查看sql_mode
show variables like '%mode%';

# 修改
set global sql_mode='strict_trans_tables';

# 退出客户端重新进入即可

# 验证是否自动填充
set global sql_mode='pad_char_to_full_length';

四、创建表的完整语法

create table 表名(
	字段名1 字段类型(宽度) 约束条件,
    字段名2 字段类型(宽度) 约束条件,
    字段名3 字段类型(宽度) 约束条件
)
"""
1.字段名和字段类型是必须的 宽度和约束条件是可选的
2.约束条件可以有多个
	字段名1 字段类型(宽度) 约束条件1 约束条件2 约束条件3
3.最后一个字段结尾不能加逗号
"""
posted on 2021-04-27 16:43  lzl_121  阅读(67)  评论(0编辑  收藏  举报