mysql常见名词解释 mysql常见名词解释

存储引擎

文件的格式有很多,比如txtmp4等等,针对不同的文件格式,对应有不同的存储方式和处理机制,而存储引擎,就是对不同文件格式的处理机制。

mysql常用的存储引擎:

  1. innodb:MySQL5.5版本之后默认的存储引擎。存储数据更加安全。
  2. myisam:Mysql5.5版本之前默认的存储引擎。存储速率较快。
  3. memory:内存引擎。数据都存放在内存中,存取速度快,但是断电就消失、
  4. blackhole:黑洞。无论存进去什么,都取不出来。
# 查看存储引擎:show engines;
# 创造对应的存储引擎存放表:create table t1(id int,name char(4)) engine=存储引擎

当我们使用相应的存储引擎存放数据的时候,会发现对应存储的结果

  1. innodb:有两个文件。

    • frm结尾:表结构
    • idb结尾:表数据
  2. myisam:有三个文件。

    • frm结尾:表结构
    • MYD结尾:表数据
    • MYI结尾:索引,类似于书的目录
  3. memory:只有一个表示结构的。数据被存放在内存中

  4. blackhole:只有一个表示结构。数据被扔进了黑洞。

创建表的注意事项

# 创建表的完整语法
create table 表名(
	字段名 类型(宽度) 约束条件,
	字段名 类型(宽度) 约束条件,
	字段名 类型(宽度) 约束条件
	)
类型就是存放在该字段下的数据类型,以及数据的宽度,同时需要遵守什么约束条件,没有也可不写。

注意事项:

  1. 同一张表下字段名不可重复。
  2. 字段名和类型是必填的,宽度和约束条件选填。而且约束条件还可以写多个。
  3. 最后一个字段名的末尾不可以有逗号。语法错误

在严格模式下,一旦数据过长,超过我们定义的长度,那么就会出现报错的现象,默认严格模式都是开启的。可以在my.ini中配置,开启严格模式。

# 如何查看严格模式:主要是查找sql_mode
show variables like '%mode'
修改严格模式,全局有效,修改完毕之后,重新进入服务端。
set global sql_mode = 'STRICT_TRANS_TABLES';

使用数据库的准则:尽量只让数据库干自己的存储数据的活。不添加额外的工作。

基本数据类型

mysql常见名词解释
mysql常见名词解释

整型

一般情况下是用大写表示数据类型,一共有以下几种类型:

  1. TINYINT
  2. SMALLINT
  3. MEDIUMINT
  4. INT
  5. BIGINT

默认是带符号的,可以补上约束条件unsigned,这个条件代表的是无符号的意思。当存储数值大于规定的数值,就会报错。

既然每个整数都有自己的范围,那么还要宽度干什么用呢?这里要注意,括号内的宽度并不是代表限制位数,而是默认用空格补全长度的位数,如果要是超出了位数,那么有多少位存多少位。

浮点型

存储限制:

  1. float(255,30):总共255位,小数部分30位。
  2. double(255,30)
  3. decimal(65,30)

精度高低由上向下越来越精准。

字符类型

重点,使用较多

  1. char(4):定长,不够的话空格补全,多的话报错。
  2. varchar(4):可变长,不够的话有多少是多少,多的话报错。

在存储数据的时候,以char存入硬盘的数据肯定是带空格的数据,但是在取出来的时候会将多余的空格除去。

# 更改配置:不让mysql自动剔除空格的操作
set global sql_mode = 'STRICT_TRANS_TABLES,PAD_CHAR_TO_FULL_LENGTH';

理论上来说使用哪个看心情,想用那个用那个,但是一般情况下产品经理都会指出来具体类型,根据指示做事情就行了。

时间类型

  1. date:年月日
  2. time:时分秒
  3. datetime:年月日时分秒
  4. Year:年

枚举与集合

枚举:enum 多个中选取一个

集合:set 多个中可以选取多个

create table t1(
	id int,
	gender enum('male','female'),
	hobbies set('play','dbj','hecha','shanghua')
)

在插入记录的时候,enum只能选一个,hobbies可以选取多个,但是都只能选择给出的选项。