MYSQL 数据类型

需求分析

创表出来表结构

核心SQL

总结分析: 可以会遇到什么样的性能瓶颈

存储过程

触发器

事件

表:字段, 索引(约束)

高并发不允许触发器和存储过程

blob.png

要背下来:占用空间,每个值的范围

固定小数点类型

Decimal 

salary decimal(8,2)

最大65位

可以用来记录工资

不要用四舍五入

做彩票时: decimal 

每次钱会少个几百块或是多个几百块

交易量5千万左右

int 单位按份来存储

单位: 分

导出乱码

共享表空间转成独立表空间

浮点数

浮点数用二进制表示

小数点后复杂,移位补位,算法符号变法

尽可能减少浮点数出现,运算占开销很大

不能做精确值比较

Floathe(M,D)

    小数点后:0-23位精度,存储占用<=4个字节

DOUBLE(M,D)

    小数点后:24-53位精度,存储占用8个字节

BIT

status&0/10

BIT(M)#M用于表示有多少个二进制位.M可以支持0-64位

对于bit写入会左填充0.如果bit(8)写入b'1001' 查询得到的值 :00001001

数据类型

数据类型支持属性

    int(4)

    int(4)zerofill 写入数字5,显示:0005

    int(11)auto_increment 每次自增加一

int(1)存100是可以存的 只是有坑,1是宽度

数据溢出 

5.5和5.6有区别 

Set sql_mode = ‘’;
Select cast(0 as UNSIGNED) – 1;

SELECT 9223372036854775807 + 1;
SELECT CAST(9223372036854775807 AS UNSIGNED) + 1;

blob.png

blob.png

timestamp占用字节数更少

blob.png

varchar 

utf8汉字需要占用3个字节

255 byte能存多少个汉字

varchar 低于255 byte需在一个字节 用来记录长度大于255 2个字节

varchar最大长度65535 

如果存的字母就按ascII 2字节 

用记录长度

char 定长的

varchar变长

其他类型能记住存多大就行

Enum

5.6在线表空间定义

blob.png

减少join

核心sql尽可能不要join

blob.png