标签:memory tab 范围 表示 length 语法错误 服务 ima 存储引擎
文件的格式有很多,比如txt\mp4等等,针对不同的文件格式,对应有不同的存储方式和处理机制,而存储引擎,就是对不同文件格式的处理机制。
mysql常用的存储引擎:
# 查看存储引擎:show engines;
# 创造对应的存储引擎存放表:create table t1(id int,name char(4)) engine=存储引擎
当我们使用相应的存储引擎存放数据的时候,会发现对应存储的结果
innodb:有两个文件。
myisam:有三个文件。
memory:只有一个表示结构的。数据被存放在内存中
blackhole:只有一个表示结构。数据被扔进了黑洞。
# 创建表的完整语法
create table 表名(
字段名 类型(宽度) 约束条件,
字段名 类型(宽度) 约束条件,
字段名 类型(宽度) 约束条件
)
类型就是存放在该字段下的数据类型,以及数据的宽度,同时需要遵守什么约束条件,没有也可不写。
注意事项:
在严格模式下,一旦数据过长,超过我们定义的长度,那么就会出现报错的现象,默认严格模式都是开启的。可以在my.ini中配置,开启严格模式。
# 如何查看严格模式:主要是查找sql_mode
show variables like ‘%mode‘
修改严格模式,全局有效,修改完毕之后,重新进入服务端。
set global sql_mode = ‘STRICT_TRANS_TABLES‘;
使用数据库的准则:尽量只让数据库干自己的存储数据的活。不添加额外的工作。
一般情况下是用大写表示数据类型,一共有以下几种类型:
默认是带符号的,可以补上约束条件unsigned
,这个条件代表的是无符号的意思。当存储数值大于规定的数值,就会报错。
既然每个整数都有自己的范围,那么还要宽度干什么用呢?这里要注意,括号内的宽度并不是代表限制位数,而是默认用空格补全长度的位数,如果要是超出了位数,那么有多少位存多少位。
存储限制:
精度高低由上向下越来越精准。
重点,使用较多
在存储数据的时候,以char存入硬盘的数据肯定是带空格的数据,但是在取出来的时候会将多余的空格除去。
# 更改配置:不让mysql自动剔除空格的操作
set global sql_mode = ‘STRICT_TRANS_TABLES,PAD_CHAR_TO_FULL_LENGTH‘;
理论上来说使用哪个看心情,想用那个用那个,但是一般情况下产品经理都会指出来具体类型,根据指示做事情就行了。
枚举:enum 多个中选取一个
集合:set 多个中可以选取多个
create table t1(
id int,
gender enum(‘male‘,‘female‘),
hobbies set(‘play‘,‘dbj‘,‘hecha‘,‘shanghua‘)
)
在插入记录的时候,enum只能选一个,hobbies可以选取多个,但是都只能选择给出的选项。
标签:memory tab 范围 表示 length 语法错误 服务 ima 存储引擎
原文地址:https://www.cnblogs.com/liqianxin/p/12828061.html