MySQL学习2——存储引擎、整型、浮点型和字符类型

### 1.MySQL存储引擎

- innodb: 默认存储引擎
- myisam: MySQL老版本在用的存储引擎
- blackhole: 存任何数据,都会立即消失,相当于经过队列,数据取出就消失了
- memory: 内存引擎(数据存放在内存中)

## 2、创建表的完整语法

```mysql
create table 表名(
字段名1 字段类型(宽度) 约束条件,
字段名2 字段类型(宽度) 约束条件,
);
'''

  # 约束条件: 用于约束在插入数据时,某个字段的限制

  # 指定插入的id值不能为空

  id int not null,

  # 指定插入的name字段值宽度为64,且不能为空

  name varchar(64) not null

# 注意
# 1.字段名 与 字段类型 都是必须的,宽度和约束条件可选

# 2.同一张表中字段名不能重复

# 3.最后字段后面不能加逗号

总结: 类型与约束条件区别
  类型: 限制字段必须以什么样的数据类型存储
  约束条件: 约束条件是在类型之外添加一种额外的限制

## 3、MySQL基本数据类型

- 典型存储范围介绍:

https://images2017.cnblogs.com/blog/1036857/201708/1036857-20170801181433755-146301178.png

- -设置严格模式

# 查看数据库配置中变量名包含mode的配置参数:
show variables like "%mode%";

# 修改完之后退出当前客户端重新登录即可
set global sql_mode = 'STRICT_TRANS_TABLES';

 

### 1)整型

# TINYINT

01) 默认有正负符号限制:

create table t2(id TINYINT);

  # 超出限制, 在安全模式下 插不进去, 会报错

  # 非安全模式下,就会以默认的返回存最大的值

  # 默认范围是(-128, 127)

02) 无正制: 约束条件 unsigne

create table t3(number tinyint unsigned);

  # 安全模式情况下负数或超出限制会报错

# INT

  # int默认最大展示的位数是11位

  # 默认范围是(-2147483648, 2147483647)

  # 超出默认范围, 报错

  # int(8)不是限制长度,而是控制展示数据的位数,8位以内以空格补全,超出则正常显示。

  # 指定宽度为8,插入的数据长度原封不动展示

  # 若插入的宽度小于8,则用空格补全

  # zerofill: 若插入的值宽度不够,则用0补全的约束

总结:
- 注意1:
- not null: 字段值不能为空
- unsigned: 无正负符号
- zerofill: 用0填充空格

 

### 2)浮点型

# 存储限制:
- float(255, 30)
- double(255, 30)
- decimal(65, 30)

注意: 字段限制特点(5,3)前一位表示所有的位数,后一位表示小数个数。

 

### 3)字符类型

# char: 定长

  # 定长指的是,事先就设定好的了存储的固定长度;
  # 比如实现准备的char长度为4,若插入数据时长度为1,最后存的值也是4,不够的值用空格不全,存入数据库中;

  # 超出四个字符报错,不够四个字符空格补全

  # 注意: 无法查看字符真实长度

  # 针对char类型,mysql在存储时会将数据用空格补全存放到硬盘中。但是会在读出结果的时候自动去掉末尾的空格。

# varchar: 不定长

  # 超出4个字符报错,不够四个有几个存几个

# char与varchar比较

- char: 在一些固定长度的值中使用
- 1.缺点: 浪费空间
- 2.优点: 存取速度快

- varchar: 在一些不固定长度的值中使用
- 1.节省空间
- 2.存取速度慢

posted @ 2020-06-29 15:43  最冷不过冬夜  阅读(149)  评论(0编辑  收藏  举报