mysql常见名词解释
存储引擎
文件的格式有很多,比如txt\mp4等等,针对不同的文件格式,对应有不同的存储方式和处理机制,而存储引擎,就是对不同文件格式的处理机制。
mysql常用的存储引擎:
innodb:MySQL5.5版本之后默认的存储引擎。存储数据更加安全。
myisam:Mysql5.5版本之前默认的存储引擎。存储速率较快。
memory:内存引擎。数据都存放在内存中,存取速度快,但是断电就消失、
blackhole:黑洞。无论存进去什么,都取不出来。
# 查看存储引擎:show engines;
# 创造对应的存储引擎存放表:create table t1(id int,name char(4)) engine=存储引擎
当我们使用相应的存储引擎存放数据的时候,会发现对应存储的结果
innodb:有两个文件。
frm结尾:表结构
idb结尾:表数据
myisam:有三个文件。
frm结尾:表结构
MYD结尾:表数据
MYI结尾:索引,类似于书的目录
memory:只有一个表示结构的。数据被存放在内存中
blackhole:只有一个表示结构。数据被扔进了黑洞。
创建表的注意事项
# 创建表的完整语法
create table 表名(
字段名 类型(宽度) 约束条件,
字段名 类型(宽度) 约束条件,
字段名 类型(宽度) 约束条件
)
类型就是存放在该字段下的数据类型,以及数据的宽度,同时需要遵守什么约束条件,没有也可不写。
注意事项:
同一张表下字段名不可重复。
字段名和类型是必填的,宽度和约束条件选填。而且约束条件还可以写多个。
最后一个字段名的末尾不可以有逗号。语法错误
在严格模式下,一旦数据过长,超过我们定义的长度,那么就会出现报错的现象,默认严格模式都是开启的。可以在my.ini中配置,开启严格模式。
# 如何查看严格模式:主要是查找sql_mode
show variables like ‘%mode‘
修改严格模式,全局有效,修改完毕之后,重新进入服务端。
set global sql_mode = ‘STRICT_TRANS_TABLES‘;
使用数据库的准则:尽量只让数据库干自己的存储数据的活。不添加额外的工作。
基本数据类型
整型
一般情况下是用大写表示数据类型,一共有以下几种类型:
TINYINT
SMALLINT
MEDIUMINT
INT
BIGINT
默认是带符号的,可以补上约束条件unsigned,这个条件代表的是无符号的意思。当存储数值大于规定的数值,就会报错。
既然每个整数都有自己的范围,那么还要宽度干什么用呢?这里要注意,括号内的宽度并不是代表限制位数,而是默认用空格补全长度的位数,如果要是超出了位数,那么有多少位存多少位。
浮点型
存储限制:
float(255,30):总共255位,小数部分30位。
double(255,30)
decimal(65,30)
精度高低由上向下越来越精准。
字符类型
重点,使用较多
char(4):定长,不够的话空格补全,多的话报错。
varchar(4):可变长,不够的话有多少是多少,多的话报错。
在存储数据的时候,以char存入硬盘的数据肯定是带空格的数据,但是在取出来的时候会将多余的空格除去。
# 更改配置:不让mysql自动剔除空格的操作
set global sql_mode = ‘STRICT_TRANS_TABLES,PAD_CHAR_TO_FULL_LENGTH‘;
理论上来说使用哪个看心情,想用那个用那个,但是一般情况下产品经理都会指出来具体类型,根据指示做事情就行了。
时间类型
date:年月日
time:时分秒
datetime:年月日时分秒
Year:年
枚举与集合
枚举:enum 多个中选取一个
集合:set 多个中可以选取多个
create table t1(
id int,
gender enum(‘male‘,‘female‘),
hobbies set(‘play‘,‘dbj‘,‘hecha‘,‘shanghua‘)
)
在插入记录的时候,enum只能选一个,hobbies可以选取多个,但是都只能选择给出的选项。
原文:https://www.cnblogs.com/liqianxin/p/12828061.html